database - postgresql 的继承和外键约束?

标签 database database-design postgresql inheritance

在我们的项目中,我们受益于PostgreSQL数据库的继承特性!

我们为不同的机构实现方案的动态创建。这种结构使我们能够解决大量在批量表(没有分区)的情况下立即发生的安全问题。

我们遇到的唯一问题是保证数据库的完整性,这通常(在没有继承的结构意义上)是通过外键约束来实现的。

由于 PostgreSQL 有一定的限制(参见 inheritance caveats),我们不得不没有限制地维护表结构。

是否有可能通过触发器和/或检查来“模拟”外键约束,甚至假设相对性能下降?

非常感谢任何建议! 谢谢。

最佳答案

唯一有问题的情况是您从一个共享表引用到一个表。您可以使用具有一列 id int primary key 的共享表 parent_ids 解决此问题。您必须使用子表上的触发器来维护此表,但这非常简单 — 插入时插入到 parent_ids,删除时从中删除,更新时更新它,这会更改 id

然后,您将引用此 parent_ids 表,而不是引用您的 parent 表。这将确保引用完整性,并且您不会在 2 个子表中有冲突的 id

它会将使用过的 ID 泄露给任何用户,但不允许访问任何其他数据。

关于database - postgresql 的继承和外键约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672899/

相关文章:

postgresql - 如何优化 PostgreSQL 中大表的 BETWEEN 条件

c# - DDay ical - 使用 Nhibernate 将事件数据保存到数据库

sql - 将函数编辑为 0xdbe

arrays - 用于存储不同大小数据集的数据库表设计

postgresql - 如何登录phppgadmin

java - 如何使用空日期进行 SQL 查询?

MySQL/PostgreSQL - 是否可以在事务中执行并行写入?

objective-c - 如何构建一个在离线输入数据时同步的应用程序?

ruby-on-rails - 服务器端数据库编程 : why?

mysql - 合并6个表(具有相同字段)的SQL查询