sql >> Database teknologi >  >> RDS >> PostgreSQL

polymorfi for UDENLANDSKE NØGLE-begrænsninger

Her er det mønster, jeg har brugt.

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"
);

Det vil sige, at 'underklasserne' peger på superklassen ved hjælp af en typedeskriminatorkolonne (sådan at den pegede til basisklassen er af den korrekte type, og at den primære nøgle i superklassen er den samme som underklasserne




  1. Sådan opretter du hovedbog/T-konto ved hjælp af PHP Mysql

  2. funktion til at rense input til Mysql-database

  3. Korrekt måde at spørge om mysql_num_rows i PHP

  4. Sådan knytter du en MySQL JSON-kolonne til en Java-entitetsejendom ved hjælp af JPA og Hibernate