PostgreSQL 和表继承

Jer*_*gus 6 postgresql database-design inheritance

我不确定这是否适合这个地方,所以请随时告诉我它是否偏离主题或有更好的发帖地方。

我正在做一个基于幻想体育的项目,桌子的数量越来越多。我有诸如nba_players,nfl_players等和nba_players_to_teams,nfl_players_to_teams等表(NBA 和 NFL 分别是篮球和美式橄榄球联盟)。这些都共享相同的表模式和代码库,但在不同的表上有它们的外键。

我的问题是,在这种情况下使用表继承有意义吗?“基”表将是空的,仅用于强制执行模式。对“基”表的更改会传播到从它继承的表吗?在这一点上,模式非常稳定,所以这不是一个大问题。

有没有我没有解决的想法或疑虑?我仍在阅读有关表继承及其优缺点的文章,但您拥有的任何资源都将不胜感激。

Erw*_*ter 5

你的问题中没有任何内容反对继承。

当前 Postgres 继承实现的一个主要限制是 FK、PK 和 UNIQUE 约束仅适用于单个表,不包括子表。但这似乎完全符合您的需要:分别在每个子表上创建 PK 和 FK 约束。

nba_playersnfl_players可以方便地从通用父表继承players(可能在空父表的单独模式中)。ALTER TABLE父级级联到所有子级(除了 ALTER TABLE ... RENAME)。这使得通过以父级为目标,可以轻松地在所有玩家表上一起运行查询。

如果您不需要一起查看所有玩家表或对所有表进行级联更改,那么最好只保留一个模板表(可能在模板表的单独架构中)并使用以下命令创建单独的实例CREATE TABLE ... (LIKE ...)

CREATE TABLE nba_players(LIKE players);
Run Code Online (Sandbox Code Playgroud)