Postgresql
PostgreSQL 和表繼承
我不確定這是否是合適的地方,所以請隨時告訴我它是否離題或有更好的地方發帖。
我正在做一個基於幻想體育的項目,而且桌子的數量越來越不規則。我有 , 等表和,
nba_players
等表(NBA 和 NFL 分別是籃球和美式橄欖球聯盟)。這些都共享相同的表模式和程式碼庫,但它們的外鍵位於不同的表上。nfl_players``nba_players_to_teams``nfl_players_to_teams
我的問題是,在這種情況下使用表繼承是否有意義?“基本”表將是空的,並且僅用於強制實施模式。對“基本”表的更改會傳播到從它繼承的表嗎?在這一點上,模式相當穩定,所以這不是一個大問題。
有什麼我沒有解決的想法或顧慮嗎?我仍在閱讀有關表繼承及其優缺點的資訊,但您擁有的任何資源將不勝感激。
您的問題中沒有任何內容可以反對繼承。
目前 Postgres 繼承實現的一個主要限制是 FK、PK 和 UNIQUE 約束僅適用於單個表,不包括子表。但這似乎完全符合您的需要:分別在每個子表上創建 PK 和 FK 約束。
nba_players
等nfl_players
可以方便地從一般父表繼承players
(可能在空父表的單獨模式中)。ALTER TABLE
在父級聯到所有子級(除了ALTER TABLE ... RENAME
)。這使得通過定位父對象可以輕鬆地對所有玩家表一起執行查詢。如果您從不需要一起查看所有播放器表或對所有表進行級聯更改,最好只保留一個模板表(可能在模板表的單獨架構中)並使用CREATE TABLE …(LIKE . ..):
CREATE TABLE nba_players(LIKE players);