sql >> データベース >  >> RDS >> PostgreSQL

FOREIGNKEY制約のポリモーフィズム

    これが私が使っているパターンです。

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

    つまり、「サブクラス」は、型判別列を介してスーパークラスを指します(基本クラスが指すのは正しい型であり、スーパークラスの主キーは子クラスと同じです)。 。




    1. 文字を含まない文字列を検索するためのOracleクエリ

    2. ストアドプロシージャの影響を受けるレコードの数を取得するにはどうすればよいですか?

    3. MySQLで数値をフォーマットする方法

    4. 再帰関数をビューに変換する