Re: problem with uniques and foreing keys

From: Bruno Wolff III <bruno(at)wolff(dot)to>
To: "kernel(dot)alert kernel(dot)alert" <kernel(dot)alert(at)gmail(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: problem with uniques and foreing keys
Date: 2006-05-06 17:56:35
Message-ID: 20060506175635.GA23459@wolff.to
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Sat, May 06, 2006 at 12:27:41 -0500,
"kernel.alert kernel.alert" <kernel(dot)alert(at)gmail(dot)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.

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message kernel.alert kernel.alert 2006-05-06 18:43:48 Re: problem with uniques and foreing keys
Previous Message Terry Lee Tucker 2006-05-06 17:46:47 Re: problem with uniques and foreing keys