我需要知道复合键是否允许重复值?复合键是否允许重复
例如:
我有2个表格。
1)表'学生'有字段studentID(PK),标准,地址。
2)表'Class'具有字段classID(PK),classname,studentID(FK)。
通过组合键为(classID,studentID),它是否允许重复值?
正是我想知道的是,有没有可能在类表的classID字段中输入重复值?因为我不能输入重复的值到classID中,因为它是主键字段。
复合键将帮助我实现这一目标吗?请帮助我。
我需要知道复合键是否允许重复值?复合键是否允许重复
例如:
我有2个表格。
1)表'学生'有字段studentID(PK),标准,地址。
2)表'Class'具有字段classID(PK),classname,studentID(FK)。
通过组合键为(classID,studentID),它是否允许重复值?
正是我想知道的是,有没有可能在类表的classID字段中输入重复值?因为我不能输入重复的值到classID中,因为它是主键字段。
复合键将帮助我实现这一目标吗?请帮助我。
有了你现在列出的结构,你将不会有任何一个班的学生在一个以上。我认为你误解了组合键的用途。为了规范这个数据库,你所期望的EnrolledStudents
或类似的第三个表,其中包含一个复合主键:
Student
studentID(PK)
Class
classID(PK)
EnrolledStudent
studentID(PK) (FK on Student.studentID)
classID(PK) (FK on Class.classID)
这样,你保证你不重复无效最终的任何地方。
在一个组合键中,整个元素集很独特,但每个元素可以重复多次。
因此,
studentID
= 1,2,3 ...Class
Student
有几个记录 - >那么你的第三个表可以有复合钥匙
(1, 1)
(2, 2)
(1, 2)
...
它允许重复。不允许的唯一可能性是复合键(studentID,classID)的重复,就像“C.Champagne”所说的那样。所以我们可以再次有(1,2)(1,3)(2,3)但不是(1,2)或(1,3)的组合。
而我的问题的第二个答案是,我没有通过使用前2个表的主键为第三个表('学校')添加组合键。例如:第三张“学校”有字段schoolID(PK),classID(FK),studentID(FK)。但我面临的问题是,我不能添加一个组合键为表'学校'的字段(classID,studentID,schoolID)。我犯的错误是,我试图通过参考前两张表格和它的工作,将外键添加到学校表格中。我最初给出的是:
ALTER TABLE学校ADD FOREIGN KEY(studentID) REFERENCES student(studentID);
ALTER TABLE学校ADD FOREIGN KEY(classID) REFERENCES class(classID);
我犯的错误是我试图从两个班级和学生表添加外键。
但最后,下面通过添加外键,校表的工作是:
ALTER TABLE学校添加外键(studentID,的classID) 参考类(studentID,的classID);
这里给作为参考类表是绰绰有余作为类表已经持有studentID,的classID。
那么这就是它是如何工作的最后。
你试过了吗?它允许重复吗? – Michelle
ya。它正在增加。我有第三个表“school”,其中包含schoolID(PK),classID(FK),studentID(FK)的字段。但问题是我不能像表格'学校'那样为键(classID,studentID,schoolID)添加一个组合键。那么2个外键和一个主键的组合会在'学校'表中创建一个组合键时出现问题吗? – ramakrishnan