jwhitman@stl-06sima.army.mil (Jerry Whitman) (09/08/89)
Been watching the thread on relational DBMS and SQL with quite a bit of interest, and I had to throw my two cents worth in. Part of what follows merely echos some of the earlier comments, but is necessary to keep context with the rest. So if you sense deja vu please bear with me. The original requestor (Craig Hubley) asked about relational databases for the Amiga that supported SQL. The variety of responses would indicate that there is at least as much confusion among the micro computer folks concerning the terms relational and SQL as there is in the 'Mainframe' (shudder) world. I have no solutions to offer, but perhaps I can help remove some of the fog and mystique associated with these terms and how the are applied/mis-applied in the industry. As has already been pointed out a relational database is one that is built on a mathematical engine, either relational algegra or relational calculus. These two domains operate in very explicit fashion with sets of data. It is that explicit behavior that makes relational math an excellent plat- form for the definition of data and logical relationships and then provides the required tools to explore and manipulate those relationships. Currently no other well accepted methodology has both the preciseness and robustness to accomplish both definition and manipulation in such a cohesive manner. There are amny products on the market which claim to be relational, relational based, relational like, etc. The majority of these are warm-ups of existing products with a few layers of frosting to emulate some of the more common relational functions. These are not predicated on a relational math, but try to simulate those functions. This may be adequate for some of the more basic tasks, but almost always fail to give mathematically proper results when more complex functions are attempted. Some products in the mainframe world are built on relational engines, but not many. A couple that pop into mind are Oracle and the present incarnation of DB2. I cannot speak to the products in the micro computer world. Perhaps some one else can provide an authorative list of those (not necessarily limited to Amiga) that are based on a relational math model. The second half of this hand and glove affair is Structured Query Language or SQL. Originally defined to be a uniform data definition and data manip- lation language to interface data with the relational model, it was accepted as a standard by ANSI in late 1986. The International Standards Organization (ISO) adopted it grudgingly as an international standard, but only with some stipulations on up-coming enhanced SQL standard. The ANSI standard became the sum and substance of the Federal Information Processing Standard (FIPS) for the implementation of SQL within the federal arena. (Enough history already, get on with it!!). Even in its inception the SQL standard had, and still has, some serious problems. To get acceptance by the vendor members of the SQL committee there were some political concessions made. As a result the standard came out with two faces, know as level 1 and level 2. Level 2 is the full ANSI standard, and level 1 is 'the most common denominator' subset of the full standard. It was the set of definitions most vendors could come the closest to meeting, thereby allowing them to declare their product was ANSI compliant. The sad note about this was that at the time the standard was released no vendor coud achieve over 90% complianace with the lower level set. The last time I checked not one vendor was fully compliant with level 1, let alone getting near to level 2. If that is not still valid, I stand (or sit) corrected. What has that done to the industry, and more germane, what has that done to the user community at large? In simple terms, confusion and corruption! Many vendors are hawking their products to look like, feel like and smell like relationally based products with standard SQL support while only providing enough of either or both to lure the user into thinking they have a truely relational product with appropriate SQL support. For many whose database needs are simplistic this charade will work just fine. For those who need the functionality and power available in the relational model and SQL they will either be unable to perform complex tasks, or be at risk for getting erronious results without knowing it because of a faulty imperson- ation of a relational function. So how do you avoid being eaten alive by the lion on main street? This is probably easier in the mainframe world because you often deal directly with the vendor while the micro world usually deals with the third or fourth hand representative in a local store or the mailorder rep. The folks with the 'big boxes' can request the vendor to demonstrate the products ability to adhere to the relational laws by applying such guidelines as Ted Codds rules of relational databaseor other similar yardsticks. The conformity to the ANSI SQL can be demonstrated by applying the ANSI SQL demonstration suite. Those of us with micros must approach the issue from a somewhat different angle. If you happen to be familiar with relational DBMS you have a leg up on the problem. You can ask the pertinant questions and recognize most of the wolves in spite of their sheep-coat. If you are not reasonably conversant with relational and SQL your best line of defense is to get a hold of some one who is, make sure they understand what you need from the world of relation DBMS, and then sic-em on the vendors and their products. Wading through the vendor hype is often not enough to seperate the sheep and goats. Unfortunately a fair number of DBMS reviews in the many micro related pubs do not address these issues in depth or clarity, if at all. I have only seen a couple that directly addressed how relational the subject 'relational' product was, and even fewer that looked at how compliant it was with the ANSI standard. While a lot of this looks like black crepe and gloom I do not mean to paint a picture of futility. If you understand what you want to accomplish with your DBMS application you can probably find a vendor product that will meet the need, even if it does it in a convoluted manner. The only folks who are really going to have rough sledding are those few who actually need the functionality of a true relational data model and the flexibility to exercise that model under the rigors of relational mathematics. For that group there is not much to pick from. It sounds like the RUBIX port may answer the call, but until then tiptoe carefully through the tulips, some of them are booby-traps! Even then, if the mainframe world is an indicator the micro user better have plenty of RAM and a speedy CPU or expect very S-L-O-W perfomance. Hopefully this has shed a little light on the mysterious world of relational databases and SQL without inflicting any grevious wounds. Regards, Jerry.