MORE ON THE STATE OF DATABASE PRACTICE
with Fabian Pascal

 

 

 

From: CK

To: Editor

Date: 21 May 2004

 

So, at my job we have installed the latest update to a major help desk and inventory tracking system.  After several false starts we finally got our data transferred from an earlier version of the product to the new version. Then problems started happening.  First, the provided ERD which said User's FULLNAME was the referential key was incorrect, it was actually USERID. This necessitated a quick UPDATE query to sync the old imported records USERIDs to the actual USERIDs of the Users.  Next, several other parts of the system started producing odd errors.

 

After much prodding in the database (since the corporate support contract we had purchased apparently did not cover any database support), I finally found out what was going on.  Six separate tables were deriving their primary keys from a value stored in a seventh table.  Each of these tables hold independent, unrelated data.  This was entirely undocumented on the ERD, as well as the written documentation.  This meant that if you had purged part of the data as we did because it was questionable (the old version did not produce good inventory data), that unless you were very careful, you ran the risk of causing the entire product to fail.

 

The PKs generated are sequentially derived from a LASTITEM value stored in the table.  It seems to me that making use of an IDENTITY value in the primary key of the SQL tables would be better.  In addition, none of the integrity and consistency logic is in the database.  It's all embedded in the programs used to access the database.  The product was originally written in FoxPro many years ago.  When they moved to SQL they didn't bother changing the architecture to match the abilities of the database system and instead continued to treat it the way they did in FoxPro.

 

It makes for quite a headache to support.

 

 

From: Fabian Pascal

To: CK

 

Any comment would be superfluous.

 

 

Posted 09/03/04