ON SQL AND ITS IMPLEMENTATIONS
with Fabian Pascal

 

 

From: SB
To: Editor 

 

Having enjoyed your recent book, PRACTICAL ISSUES IN DATABASE MANAGEMENT, once I managed to obtain a copy (!), I would like to thank you for a very reassuring read. Unfortunately, before I had received your book, I had not come across much literature that contained any common sense.

 

Most stuff emphasizes what can be done, rather than what should be strived for! I have assumed that the writing style reflects your passion for the subject, and I must say I did get very angry with the book. Not with you at all, but I sensed that you were getting really frustrated with current database 'design', and I felt myself getting angry at the same time as you... I found relief, too, in that many of the ideas I had been thinking about, and general feelings about how things should be done, I suddenly found in your book. I was very pleased to see that I need not feel lonely any more!

 

Anyway, enough of the (sort of) compliments, I have a few brief questions I would be grateful if you could answer please:

 

1) Would I be correct in asserting that SQL was designed as a query processing language for alphanumeric lists; i.e. that the 'Q' in SQL emphasizes that the language was developed for designing queries, and not as a data/table definition language. Therefore it is not surprising that manufacturers have made such a poor job of implementation. Perhaps it is like most other things, where manufacturers extend languages to do stuff they were never designed to do, such as 'everything', and then wonder why their products get a bad name (and consequently end up doing 'nothing' of much worth)?

 

2) When you discuss the flaws in SQL, do you know if Oracle 7/8/9 is based on the SQL'92 standard, and consequently still suffers from most of the problems you describe?

 

3) Would you say that because database triggers circumvent database integrity, and so should be avoided, they are best replaced by a combination of:

   a) Primary key constraints.

b) Moving data check resolution triggers up to the application level using validation and verification field update checks in data entry fields instead.

c) Moving other 'triggers' down to the physical level such as those concerned with how the data is stored across data volumes etc, which may be part of the RDBMS anyway)?

 

4) Would you say that Oracle doesn't really have a front end table definition interface, unlike Access, where in the latter you can design tables graphically, which are native to the JET database engine, thereby avoid the shortcomings you mention in creating tables in SQL?

 

5) Would it be correct to describe an environment that uses the incidental linkage of small, discrete databases that reflect single world entities as 'atomic component databases', and the whole as a 'single virtual relational database'?

 

6) Would you consider it efficient and sensible to store all text field entities in a single list, indexed by a surrogate positive integer index (1,2,3...), and then using this now foreign key in other tables to define the links between the records, so you only then need to use integer fields in the other tables? This could be rather like using Oracle bit map indexes, and taking normalisation to perhaps a rather far extreme.
 
 

Fabian Pascal Responds: 

 

1)     It is true that SQL was designed as a prototype query language for System R, the IBM relational research project and that it originally did not include data definition and other data language functions. However, IBM was warned by both Codd and Date--at the time IBMers--that SQL had serious flaws, not the least of which was missing functionality. Codd proposed his own language Alpha, but was ignored because IBM was eager to make SQL available commercially--expediency overrode all that "theoretical stuff". While much of the responsibility for SQL's weaknesses and flaws lie with IBM, it is also true that most vendors of DBMSs based on SQL (not to mention the ANSI SQL standard committees) have equally ignored relational and good data language design principles in implementing SQL. There is plenty of blame to go around.

 

2)     I am no longer following product specifications, because they have been getting worse, not better, when it comes to relational fidelity. In fact, the standard committee recently added pointers and objectification to it, throwing it back decades. My guess is that it would be fair to say that products have not gone beyond SQL92, except for proprietary extensions not very well thought out. Of course, this does not mean that they implemented all standard specifications, or that they implemented them the same way.

 

3)     Triggers do not "circumvent database integrity" -- if supported by the DBMS and correctly implemented, they are better than application-enforced integrity, which does circumvent database integrity. However, they are not a substitute for declarative database integrity for a variety of reasons (as I explain in my book).

 

4)     There are probably quite a few graphic interfaces to Oracle and I do not recall criticizing products for lack of graphic interfaces. That is essentially an application, not DBMS function.

 

5)     I'm afraid I do not understand the question.

 

6)     Ditto.

 

 

Posted 04/05/02

 

 

 

[ABOUT] [QUOTES] [LINKS]