首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复合键允许重复吗?

问复合键允许重复吗?
EN

Stack Overflow用户
提问于 2013-08-20 12:13:55
回答 2查看 6.9K关注 0票数 1

我需要知道复合键是否允许在其中复制值?

例如:

我有两张桌子。

1)表“学生”,其字段为studentID(PK)、标准、地址。

2)表'Class‘,它有字段classID(PK)、类名、studentID(FK)。

通过拥有复合键as (classID,studentID),它是否允许重复值??

我想知道的是,是否有可能在类表的classID字段中输入重复的值?因为我不能在classID中输入重复的值,因为它是一个主键字段。

复合键能帮助我实现这一点吗?请帮我解决这个问题。

EN

回答 2

Stack Overflow用户

发布于 2013-08-20 12:18:53

在复合键中,整组元素必须是唯一的,但每个元素可以重复多次。

因此,

  • 如果在Student中有几条记录,studentID = 1,2,3.
  • Class也是如此

->,然后您的第三个表具有复合键

代码语言:javascript
复制
(1, 1)
(2, 2)
(1, 2)
...

您可以看到,有几个记录具有相同的studentId (1在这里)或classId (2在这里),但是整个组合从来都不是相同的两倍。

票数 5
EN

Stack Overflow用户

发布于 2013-08-21 09:44:51

它允许复制。唯一不允许的可能性是复合键(studentID,classID)的复制,如"C.Champagne“所说的那样。因此,我们可以有像(1,2) (1,3) (2,3)这样的组合,但不再有(1,2)或(1,3)这样的组合。

对我的问题的第二个回答是,我未能使用前两个表的主键为第三表(“学校”)添加复合键。

第三表“学校”有字段schoolID(PK)、classID(FK)、studentID(FK)。但我面临的问题是,我不能为带有字段的表'school‘(classID、studentID、schoolID)添加一个复合键。我犯的错误是,我试图把外键添加到学校的桌子上,引用前两张表,这是很有力的工作。一开始我所做的是:

修改表学校添加外键(studentID)引用学生(StudentID);

修改表学校添加外键(classID)引用类(ClassID);

我犯的错误是,我试图从班级和学生表中添加外键。

但是,最后,通过将外键添加到学校表中,下面的工作是:

修改表学校添加外键(studentID,classID)引用类(studentID,classID);

这里提供作为类表的引用已经足够了,因为类表已经保存了studentID,classID。

这就是它最终的工作方式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18334762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档