>>> An SQL database is deemed "Relational" when it can communicate >>> mildly ...
SQL stands for Structured Query Language. It has nothing whatsoever to do with the data store but rather is a specification of the Language used to retrieve/manipulate the datastore. This is the same as "C" or "FORTRAN" being language specifications for how a problem is stated to a computer and DOES NOT say anything nor impose any requirements on the underlying CPU architecture (RISC? CISC? DEC? IBM? Intel? etc) nor how the program is stored and run (RAM? Paper Tape? Core? Drum?). You can have "SQL" used to query a "relational database", query a hierarchical database, query a network or network-extended model database. You can use "navigational calls" to navigate a "relational database", "hierarchical database", or a "network or network-extended database". >> Relational Model (E.F.Codd ...) is a way of organising data (any >> data, despite many arguments to the contrary). Using >> "relational" as a sort of generic term, or as a metaphor, >> leads to confusion because it hides the fact that there is a >> formal system which is behind the creation of SQL databases, >> except that the various implementers got it wrong, including >> missing out some key points of the Model. Actually, this is incorrect. a "relational database" is one in which the "relations" are expressed by the storage of "duplicate data" in the various record structures, and that relations are based on the value of the data itself and nothing else. That is to say that a Bill-of-Material does not contain a "master record" with a "linked list" of "child records" pointing to their "owners" (as in a set), but rather that the "master record" is linked to its children by the duplication of data. Relational Algebra is the mathematic theory by which this hunk of duplicated data can be designed and manipulated in a cohesive manner without introducing "anomalies" into the processing, such consistency having previously been imposed directly by designing the database using hierarchical, network, or network-extended data models (which are more accurate portrayals (models) of the structure of the real world) ... however, the use of those methods had "issues" of their own that could be solved by using a "relational data duplication" model (in that the relationships are inherent in the data values themselves and not dependent on some artificial data structure which cannot be easily re-created if corrupted) and reflected the increase in storage and processing power that was necessary to maintain all that duplication. >Your basic thesis here revolves around "SQL engines do not follow the >letter and the law of the Relational model" - and the reply, same is >before, is "We know. So what?". >(I'm not disagreeing, I'm just not convinced of controversy) That is because SQL (Structured Query Language) is an imperative Query Language. It does not describe the underlying datastore, which may or may not be based on Relational Algebra, but is merely a Query Language -- a way to express what it is that one wants to be done. >I can't speak for everyone, but it is my sincere belief that every DB >engine, at the start, intended to be "The One" that was going to be >closest to the relational model and/or the SQL standard - right >before reality intervened. No, the Database Engine (as in the data storage layer) intends to provide a way of modelling the "real world". The relational model is simply a method by which mathematical concepts can be applied to prove correctness of the model. That is to say that a "relational database" means that the datastore is "relational" and can be manipulated in accordance with the postulates of relational algebra and is, under those postulates, correct and anomaly free. SQL is merely the manner in which one manipulates the datastore, it does not matter the actual format of storage of the datastore since, in the end, correctness of the data model can only be proved by mathematical means. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users