sql - 重复的外键约束 - 支持或反对的原因

标签 sql database database-design foreign-keys

我刚刚在生产中遇到一个表,它有 4 个外键约束。其中两个约束与另外两个完全相同。

fk1(a_id) references a(id)
fk2(a_id) references a(id)
fk3(b_id) references b(id)
fk4(b_id) references b(id)

我以前从未见过这种情况……我觉得这是完全错误的,我的直觉是这里一定有性能问题(尤其是插入到该表中)。在这个例子中,数据库是 PostGres,但我对人们认为的一般行为很感兴趣。

如果有人经历过这样的外键,我也会感兴趣 - 特别是因为我会建议删除重复项!

最佳答案

这根本没有任何好处,而且是多余的。实际上,插入或更新 a_id 需要检查的 FK 数量是原来的两倍。

我说的是删除重复项。

如果一个有级联而另一个没有,那么非级联的就是重复的(可能不适用于 PostGres)

关于sql - 重复的外键约束 - 支持或反对的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2144568/

相关文章:

sql - 如何锁定某些列以防止在 postgresql 中为用户编辑

python - Psycopg2 使用外键创建记录

mysql - 如何保存一个国家属于哪个组?

python - 这是将实时数据记录到数据库中的合乎逻辑的方法吗?

php - MySQL查询和子查询

java - 如何将oracle转换为JOOQ?

sql - 需要数据库查询或逻辑优化

mysql - mysql内连接不明确

java - 将日期从字符串表示形式转换为数字表示形式,然后再转换回来

database - Oracle 10g 临时表