Re: problem with uniques and foreing keys
От | Bruno Wolff III |
---|---|
Тема | Re: problem with uniques and foreing keys |
Дата | |
Msg-id | 20060506175635.GA23459@wolff.to обсуждение исходный текст |
Ответ на | problem with uniques and foreing keys ("kernel.alert kernel.alert" <kernel.alert@gmail.com>) |
Список | 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 по дате отправления: