我收到了客户的excel表。 它有三行我无法理解。
在测试表的第4行(第6行)" RelationTo"列的testCategoryList.CategoryId。 这是否意味着测试表的外键testCategory是testCategoryList表的主键?
但是,测试表的外键testCategory不是testCategoryList表的主键。 其他两行(第7行和第8行)具有相同的结构。
testCategoryList表:
testSubjectList表:
testLevelList表:
答案 0 :(得分:4)
我认为您的混淆可能与命名约定有关。
您是否假设外键列名必须与主键列名相同才能匹配它们? 这绝对不是真的。在关系数据库时代,有些时候某些存储技术确实有这个要求,但它根本不是SQL标准的一部分。
尽管如此,有一个命名约定很受人们的欢迎,其中外键名称与主键名完全匹配。这可以实现称为自然连接的功能。
然而,并非所有人都同意这个命名惯例是一个好主意。它的一些问题是(a)如果从一个表到另一个表有两个FK,则必须放弃约定以避免重复的列名,并且(b)最终必须将表名放入每一列的前面,以避免意外的自然连接,例如person.name对company.name。
您的电子表格清楚显示的是test
表上的FK指向其他三个表的PK。例如,CREATE TABLE
表的test
脚本将包括:
...
CONSTRAINT FK_TEST__TESTCATEGORYLIST FOREIGN KEY
IX_TEST__TESTCATEGORY (testCategory)
REFERENCES testCategoryList (categoryId)
...