sql >> Databáze >  >> RDS >> PostgreSQL

polymorfismus pro omezení FOREIGN KEY

Zde je vzor, ​​který jsem použil.

CREATE TABLE room (
    room_id serial primary key,
    room_type VARCHAR not null,

    CHECK CONSTRAINT room_type in ("standard_room","family_room"),
    UNIQUE (room_id, room_type)
);

CREATE_TABLE standard_room (
    room_id integer primary key,
    room_type VARCHAR not null default "standard_room",

    FOREIGN KEY (room_id, room_type) REFERENCES room (room_id, room_type),
    CHECK CONSTRAINT room_type  = "standard_room"
);
CREATE_TABLE family_room (
    room_id integer primary key,
    room_type VARCHAR not null default "family_room",

    FOREIGN KEY (room_id, room_type) REFERENCES room (room_id, room_type),
    CHECK CONSTRAINT room_type  = "family_room"
);

To znamená, že „podtřídy“ ukazují na nadtřídu, prostřednictvím sloupce popisovače typu (tak, že odkaz na základní třídu je správného typu a primární klíč nadtřídy je stejný jako podřízené třídy).




  1. Index chyb Java JDBC SQL je mimo rozsah

  2. transakce mysql - míchání vložení a výběru k dosažení last_insert_id?

  3. Metoda PHP PDO pro načtení jednoduchého seznamu odpovídajících prvků

  4. Aktualizujte tabulku Oracle hodnotami ze souboru CSV