There is also the issue of testing and how expensive it is to fix data
that is  not referentially entact.  If the dbms won't let you do
something that does not make sense from a data model point of view then
a large project with many programmers will find these bugs faster and
the programming effort is less because the dbms creates the foriegn
keys.

I worked on a project where the dba hated foriegn keys and wrote
triggers for all the inserts, deletes and updates so the code did not
have to change in a jillion places whenever the data model changed. 
Worked pretty well from a project management stance but portability went
out the window when they had to scale to a different database and had to
rewrite all the triggers for something else other than sqlAnywhere. 
Most commercial dbms packages now support java as a trigger language I
understand but I am not sure what that does to performance.

I would guess a large part or the equation is where is the application
code running as opposed to the dbms. How fast are the machines, and how
big and fast is the  network pipe to them.  If an application has to
make three or four calls to the database to perform referential
integrity checking for each create update and delete then network
latency becomes an issue as well.  Relationships with cascade deletes
are a good thing in a situation like that.

My two cents.

Bret Hughes 

Ian Alexander wrote:
> 
> Actually, you *do* need them if the need is to conform to a standard of
> some sort that requires foreign keys.  I've worked for a few places where
> this was the case.  Granted the spec could be changed, but most times you
> won't have that option.
> 
> ###############################
> Ian J. Alexander <[EMAIL PROTECTED]>
> Senior Software Engineer
> EazeNet
> 817-557-3038
> ###############################
> 
> On Mon, 17 Jan 2000, Jason Costomiris wrote:
> 
> > On Mon, Jan 17, 2000 at 10:32:32AM -0600, Alan Mead wrote:
> > : If COMMIT and ROLLBACK are important or
> > : you need "true" foreign keys, then you probably need postgresql (I think
> > : there are workarounds on the mysql website).
> >
> >
> > You're correct with respect to support for transactions..
> >
> > However, don't kid yourself..  Nobody *needs* foreign keys..  If your
> > code manages its data properly, you'll never need 'em. :)
> >
> > --
> >                  Jason Costomiris <><
> >             Technologist, cryptogeek, human.
> > jcostom {at} jasons {dot} org  |  http://www.jasons.org/
> >
> >
> > --
> > To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe"
> > as the Subject.
> >
> >
> 
> --
> To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe"
> as the Subject.
begin:vcard 
n:Hughes;Bret 
tel;fax:918.587.0131
tel;work:918.587.0131
x-mozilla-html:FALSE
url:www.elevating.com
org:Elevating Communications Inc
adr:;;PO Box 1323;Tulsa;OK;74101-1323;USA
version:2.1
email;internet:[EMAIL PROTECTED]
title:Chief Solutionist/President
x-mozilla-cpt:;19888
fn:Bret  Hughes
end:vcard

Reply via email to