[comp.sys.amiga] Relational DBMS/SQL ????

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.