PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

polimorfisme untuk batasan KUNCI ASING

Ini pola yang saya gunakan.

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

Yaitu, 'subclass' menunjuk ke super-class, melalui kolom deskriminator tipe (sehingga kelas dasar yang ditunjuk adalah dari tipe yang benar, dan kunci utama dari kelas super itu sama dengan kelas anak .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tanggal dalam format mmm yyyy di postgresql

  2. Kesalahan sintaks pada atau di dekat END dengan nama kolom END

  3. Apakah lebih baik membuat indeks sebelum mengisi tabel dengan data, atau setelah data ada?

  4. PILIH * DARI TABEL BARU yang setara di Postgres

  5. Bisakah saya mengembalikan transaksi yang sudah saya lakukan? (Data hilang)