Postgresql

PostgreSQL 和表繼承

  • July 26, 2015

我不確定這是否是合適的地方,所以請隨時告訴我它是否離題或有更好的地方發帖。

我正在做一個基於幻想體育的項目,而且桌子的數量越來越不規則。我有 , 等表和,nba_players等表(NBA 和 NFL 分別是籃球和美式橄欖球聯盟)。這些都共享相同的表模式和程式碼庫,但它們的外鍵位於不同的表上。nfl_players``nba_players_to_teams``nfl_players_to_teams

我的問題是,在這種情況下使用表繼承是否有意義?“基本”表將是空的,並且僅用於強制實施模式。對“基本”表的更改會傳播到從它繼承的表嗎?在這一點上,模式相當穩定,所以這不是一個大問題。

有什麼我沒有解決的想法或顧慮嗎?我仍在閱讀有關表繼承及其優缺點的資訊,但您擁有的任何資源將不勝感激。

您的問題中沒有任何內容可以反對繼承。

目前 Postgres 繼承實現的一個主要限制是 FK、PK 和 UNIQUE 約束僅適用於單個表,不包括子表。但這似乎完全符合您的需要:分別在每個子表上創建 PK 和 FK 約束。

nba_playersnfl_players可以方便地從一般父表繼承players(可能在空父表的單獨模式中)。ALTER TABLE在父級聯到所有子級(除了 ALTER TABLE ... RENAME)。這使得通過定位父對象可以輕鬆地對所有玩家表一起執行查詢。

如果您從不需要一起查看所有播放器表或對所有表進行級聯更改,最好只保留一個模板表(可能在模板表的單獨架構中)並使用CREATE TABLE …(LIKE . ..)

CREATE TABLE nba_players(LIKE players);

引用自:https://dba.stackexchange.com/questions/108111