sql >> Database >  >> RDS >> PostgreSQL

polymorfisme voor FOREIGN KEY-beperkingen

Hier is het patroon dat ik heb gebruikt.

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

Dat wil zeggen, de 'subklassen' wijzen naar de superklasse, door middel van een type decriminatorkolom (zodanig dat de naar de basisklasse verwezen van het juiste type is en dat de primaire sleutel van de superklasse hetzelfde is als de onderliggende klassen




  1. Hoe voeg ik Sphider Search toe aan mijn website? Kan geen verbinding maken met database

  2. Som kolommen of nieuwe kolom

  3. probleem met Add_month in oracle, ik moet een factureringscyclus genereren

  4. Inloggen werkt alleen voor de laatste gebruiker in de database