Search Postgresql Archives

Re: DB design opinions - Foreign Key usage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, May 22, 2004 at 12:42:53 -0400,
  Vamsikrishna Mudrageda <gte181u@prism.gatech.edu> wrote:
> Intro:
> Hi all, my name is Vams, and I am fairly new to postgresql and totally new to 
> mailing lists, so please bare with me.  I have used hypersonic sql and mysql, 
> and now I am trying out postgresql... and so far, very impressive.  GJ dev 
> team.
> 
> Problem:
>    For the location table, should I use two columns (ID PK, name) or just one 
> column (name PK)?

It generally isn't a good idea to make a name the primary key unless you
are very sure the names aren't going to change.

>    Should I FK the id column from the location table or should I FK the name 
> column?

You should refer to the primary key when making foreign key references to
the table.

>    Does postgresql keep a reference when using a FK (like pointers in C) or 
> does it actually make a copy and store it (like when C passes a copy in a 
> function call)?  If its the later, is there a way to reference a value in 
> postgresql (and have it auto-dereference during a query)?

The key is stored in the table. There are special triggers that make sure
that the key is actually in the referenced table.

>    Finally, off topic, is there anyway (other than triggers) to keep the user 
> from inserting into the ID column when a sequence already takes care of it?  
> (I don't want someone adding id=5, name='blah' and when the sequence reaches 
> 5, the insert will return error: can't have duplicates.)

I think you can get this to happen with rules, but a before trigger is the
more normal way to modify rows being inserted. Note you will want to do
something for updates as well, since you can change the value of a primary
key in an update.

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux