SQL check foreign key

SQL check foreign key
2011-10-25T22:35:08+02:00
2011-10-28T11:44:48+02:00
2022-11-23T12:10:41+01:00
nelax
Sziasztok!

Az alábbi problémám lenne, van 2 db táblám:
CREATE TABLE MENÜ( [menüazon] int IDENTITY(1,1) NOT NULL, [előétel] int NOT NULL, [főétel] int NOT NULL, [desszert] int NOT NULL, CONSTRAINT [PK_menüazon] PRIMARY KEY ([menüazon]), CONSTRAINT [FK_előétel] FOREIGN KEY ([előétel]) REFERENCES [ÉTEL] ([ételazon]), CONSTRAINT [FK_főétel] FOREIGN KEY ([főétel]) REFERENCES [ÉTEL] ([ételazon]), CONSTRAINT [FK_desszert] FOREIGN KEY ([desszert]) REFERENCES [ÉTEL] ([ételazon]) ); CREATE TABLE ÉTEL( [ételazon] int IDENTITY(1,1) NOT NULL, [ételnév] varchar(50) NOT NULL, [ételtípus] varchar(1) NOT NULL, CONSTRAINT [PK_ételazon] PRIMARY KEY ([ételazon]), CONSTRAINT [CK_ételtípus] CHECK ([ételtípus]='E' OR [ételtípus]='F' OR [ételtípus]='D'), );

azt szeretném megoldani, hogy a MENÜ táblában a előétel,főétel,desszert idegen kulcs csak a megfelelő ételtípusú ételre mutasson,azaz a főétel az F, előétel az E típusú ételre hivatkozzon, ezt hogyan lehet megvalósítani?

Köszönöm előre is a válaszokat!
Mutasd a teljes hozzászólást!
azt szeretném megoldani, hogy a MENÜ táblában a előétel,főétel,desszert idegen kulcs csak a megfelelő ételtípusú ételre mutasson,azaz a főétel az F, előétel az E típusú ételre hivatkozzon, ezt hogyan lehet megvalósítani?


Tábla struktórában megszorításokkal tudomásom szerint ez nem megoldható.

A felhasználói felületen meg tudod csinálni, hogy amikor a menüt összeállítják, akkor az előételekhez eleve csak az előételeket kínálod fel lehetőségként, illetve amikor a menüt beszúrod vagy frissíted, akkor egy trigger vagy a sima sql utasítás helyett egy tárolt eljárás el tudja végezni az ellenőrzést és tudja blokkolni vagy el sem végezni a módosítást, ha gond van.
Mutasd a teljes hozzászólást!

  • Bocsi, de szvsz felesleges a Menu táblában a 3 FK, elegendő egy is, hiszen soha nem kap több értéket egynél.
    A tartalma határozza meg a menu-ben az étel típusát.
    Mutasd a teljes hozzászólást!
  • azt szeretném megoldani, hogy a MENÜ táblában a előétel,főétel,desszert idegen kulcs csak a megfelelő ételtípusú ételre mutasson,azaz a főétel az F, előétel az E típusú ételre hivatkozzon, ezt hogyan lehet megvalósítani?


    Tábla struktórában megszorításokkal tudomásom szerint ez nem megoldható.

    A felhasználói felületen meg tudod csinálni, hogy amikor a menüt összeállítják, akkor az előételekhez eleve csak az előételeket kínálod fel lehetőségként, illetve amikor a menüt beszúrod vagy frissíted, akkor egy trigger vagy a sima sql utasítás helyett egy tárolt eljárás el tudja végezni az ellenőrzést és tudja blokkolni vagy el sem végezni a módosítást, ha gond van.
    Mutasd a teljes hozzászólást!
  • Köszi, tárolt eljárás a megoldás.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd