Re: problem with uniques and foreing keys - Mailing list pgsql-sql

From Bruno Wolff III
Subject Re: problem with uniques and foreing keys
Date
Msg-id 20060506175635.GA23459@wolff.to
Whole thread Raw
In response to problem with uniques and foreing keys  ("kernel.alert kernel.alert" <kernel.alert@gmail.com>)
List pgsql-sql
On Sat, May 06, 2006 at 12:27:41 -0500, "kernel.alert kernel.alert" <kernel.alert@gmail.com> wrote:
> Hi list...
> 
> Please i have a problem with this...
> 
> I create the follow tables...
> 
> --------------------------------------------------------
> 
> CREATE TABLE empresa (
>  id_empresa         integer  NOT NULL primary key,
>  nombre             varchar(45),
> );
> CREATE TABLE casino (
>  id_casino          integer  NOT NULL,
>  id_empresa         integer      REFERENCES empresa(id_empresa),
> 
>  nombre             varchar(45),
> 
>  primary key(id_casino,id_empresa)
> );
> CREATE TABLE maq_casino (
>  id_empresa      integer  NOT NULL REFERENCES  casino(id_empresa),
>  id_casino       integer  NOT NULL REFERENCES  casino(id_casino),
> 
>  ubicacion_sala     varchar(45) default NULL,
>  primary key(id_empresa,id_casino,id_tipo_maquina,id_maq_casino)
> );
> 
> --------------------------------------------------------
> 
> When i'm gonna to create the last table i got this error:
> 
> ERROR:  no hay restriccion unique que coincida con las columnas dadas en la
> tabla referida <<casino>>
> 
> That in english is like .. there is no a unique constraint with columns
> referred  in casino table.
> 
> 
> Please where is the problem...

Unless there is a performance problem, id_empresa should not appear in the
maq_casino table at all, since it is derivable from id_casino.

Is id_empresa really allowed to be NULL in casino?

If there is an actual performance problem and you really need to have it in
the mag_casino table, then you want to add another unique key (id_casino,
id_empresa) in casino and then change casino_mag to have a foreign key
reference on (id_casino, id_impresa) to casino instead of the individual
references you have now.

If id_empresa in casino_mag is not supposed to be tied to the value of
id_casino (which I doubt is the case), then it should be referencing
empresa instead of casino.


pgsql-sql by date:

Previous
From: Terry Lee Tucker
Date:
Subject: Re: problem with uniques and foreing keys
Next
From: "kernel.alert kernel.alert"
Date:
Subject: Re: problem with uniques and foreing keys