gpt4 book ai didi

sql - PostgreSQL 在外键中使用常量

转载 作者:行者123 更新时间:2023-11-29 11:50:15 26 4
gpt4 key购买 nike

外键的语法,如 official documentation 中所述, 包括表 A 中的一组列引用表 B 中的一组列。

是否可以在外键声明中使用常量?

问题是,我有一个包含所有字典值的表 DICTIONARIES,按类型区分。我知道这不是一个好的设计,但不幸的是,我没有太多要说的,因为数据库管理员想要“最小化表的数量”......

是否有可能实现这样的目标:

CREATE TABLE PERSON (
id integer primary key,
country_id integer,
...
FOREIGN KEY ('COUNTRY', country_id) REFERENCES DICTIONARIES(TYPE, ID)
)

它会有效地解决问题。我知道我可以向表 person 添加列,它只有一个可能的值“COUNTRY”,或者我可以编写一个触发器,但我宁愿避免这种情况以保持设计更简洁。

最佳答案

外键约束是从一个表的列到另一个表的列,所以不是。

数据库当然应该有一张表COUNTRY(country_id)。评论者指出您的管理员正在实现反模式。

很好,您知道您可以定义一个列并将其设置为您想要的值并在其上创建外键。这是一个习惯用语,用于避免在限​​制某些子类型方案时触发。

至少,您可以根据您的 DBMS 计算“COUNTRY”列。

您的问题本质上是 this one ,请参阅问题的结尾以及评论和答案。

(许多功能实现起来很简单。也许困难(除了消费者的无知之外)是任意约束在计算上很快变得昂贵。这可能只会让供应商恼火。此外,SQL 中的优化因其与 SQL 的差异而受到阻碍关系模型。)

关于sql - PostgreSQL 在外键中使用常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24550698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com