Identifying an Identifying Relationship

From: John Dilley <gurujason_at_hotmail.com>
Date: 29 Aug 2001 10:13:06 -0700
Message-ID: <862e9cc1.0108290913.619fc8f_at_posting.google.com>



In my database designs, I almost exclusively use surrogate keys. Over the years I have found NO real-world data that never changes.

Using Erwin to design a database, I am seing these surrogate keys being connected together with other surrogates to make unbelievably long primary keys. Research showed me that this was being caused because I was using identifying relationships. I then went on a search for a definition of what an identifying relationship was, and when to use them.

The common definition was that the relationship was an identifying relationship if the child record could not exist independant of the parent record. An example was given of a vehicle/owners relationship, where a vehicle could not be entered unless there was an owner. Okay, I can accept that as a business restraint. In an identifying relationship however, the parents key becomes a part of the childs primary key. In the example, if the vehicle was to be sold, then the parent would change. This would require that the childs primary key also change, with all the confusion this could entail.

So now I am once again confused.

In an identifying relationship, why does it make sense to use the parent key as part of the childs primary key?

Is the example given truly an identifying relationship?

Does the concatenation of keys still make sense when surrogate keys are being exclusively used (except for many/many join tables)? In my specific instance, we maintain documents associated with individuals. Documents are identified by a surrogate key, as are the individuals. When I use Erwin to create the table, the primary key becomes a concatenation of two unique keys. This is no more unique than the document's own surrogate key, only longer. What is the advantage here?  

Are identifying relationships the exception rather than the norm?

I for now am assuming that the definition and example are flawed. An identifying relationship occurs only when the parent will never change. (For instance a body parts database, where each part is identified by it's donor...okay, kinda gross, but I'm having trouble coming with something that is truly identifying, and not one-to-one).)

But I would like to understand.

In addition to answers, can someone point me to a good explanation/definition of these terms?

John Dilley
Orrtax Software
(if replying via email, please include passme on subject line to pass spam filter) Received on Wed Aug 29 2001 - 19:13:06 CEST

Original text of this message