Ross Werner wrote:
What I typically do is have a "fruit" table, an "orange" table, and a "banana" table with the primary key of the "orange" table also being a foreign key to the "fruit" table, and ditto with "banana". Unfortunately this doesn't technically prevent (from the database standpoint) a particular fruit instance from being both an orange *and* a banana, and it's a headache when trying to figure out the types and information of a list of fruits.

Anyone have a better way?

You could add an after-insert trigger to the "fruit" table that aborts the transaction unless exactly one sub-table has a corresponding row. The trigger would have to fire at the end of the transaction.

However, if I were designing this, I would reason that the schema as it stands doesn't capture the intent that a fruit must have exactly one subtype. I would probably add a column to the "fruit" table that disambiguates this. It might be an enumeration or a string.

Shane

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to