gpt4 book ai didi

mysql - 如何在没有与外键和主键相同字段的两个表之间创建关系

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:39 25 4
gpt4 key购买 nike

我从客户那里收到了一张 Excel 表格。它有三行我无法理解。

enter image description here

在测试表的第 4 行(第 6 行)“RelationTo”列的 testCategoryList.CategoryId。是不是说test表的外键testCategory是testCategoryList表的主键?

但是,test表的外键testCategory不是testCategoryList表的主键。其他两行(第 7 行和第 8 行)具有相同的结构。

testCategoryList 表:

enter image description here

testSubjectList 表:

enter image description here

testLevelList 表:

enter image description here我错过了什么吗?这三行没有任何意义。

最佳答案

我认为您的困惑可能在于命名约定。

您是否假设外键列名必须与主键列名相同才能匹配它们? 这绝对不是真的。在前关系数据库时代,某些存储技术确实有此要求,但它根本不是 SQL 标准的一部分。

然而,有一种命名约定在许多人中很流行,其中外键名称与主键名称完全匹配。这会启用称为自然连接 的功能。

然而,并非所有人都同意这种命名约定是个好主意。它的几个问题是(a)如果你有两个 FK 从一个表到另一个表,你必须放弃约定以避免重复的列名,以及(b)你最终不得不将表名放在在每一列的前面以​​避免意外的自然连接,例如 person.name 与 company.name。

您的电子表格清楚地显示,test 表上的 FK 指向其他三个表的 PK。例如,test 表的 CREATE TABLE 脚本将包括:

...
CONSTRAINT FK_TEST__TESTCATEGORYLIST FOREIGN KEY
IX_TEST__TESTCATEGORY (testCategory)
REFERENCES testCategoryList (categoryId)
...

关于mysql - 如何在没有与外键和主键相同字段的两个表之间创建关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42875372/

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