如何在表格中保存多个foriegn键值?

时间:2018-03-23 09:10:11

标签: sql

我有两张桌子。师生。教师表包含id,name,classid,studentId。学生表中包含id,name,TeacherId。

一名学生可以有一名以上的老师。并且教师被设置为学生表中的外键。那我怎么能用多个老师保存我的学生表?

4 个答案:

答案 0 :(得分:0)

如果学生可以有多位教师,那么您就无法将教师ID放在学生表中。您需要第三个表格,其中包含学生ID和教师ID的组合。这样,一个学生记录可以与多个教师相关,每个教师可以与多个学生相关。第三个表是如何实现多对多关系。

答案 1 :(得分:0)

您可以拥有一个包含学生和教师映射的单独表格。因此,可以使用多个教师ID映射单个学生ID,还可以使用日期范围或停用列来更改映射。

答案 2 :(得分:0)

关系数据库中的实体之间的关系通常分为3种类型。这被称为关系的基数:

  • 1到N:例如,订单(1)及​​其产品(N)。在这种情况下,产品将具有订单密钥。
  • 1比1:例如教师(1)带有联系信息(1)。这种类型的关系可能引起人们的注意,因为你可以将联系人的信息放在教师的表格中。在这种情况下,联系人有教师的密钥,或者教师有联系人的密钥(或者两者都有相同的密钥)。
  • N到M:就像你的情况一样,一个特定的老师可能有一个以上的学生,而且每个学生都可能有另一个老师。您不能将此关系存储在2个表中(至少不是很好),因此解决方案是创建链接这两个表的第3个表。

对于最后一种情况,您可能会遇到以下情况:

CREATE TABLE Teacher (
    TeacherID INT PRIMARY KEY,
    -- Other teacher columns
    )

CREATE TABLE Student (
    StudentID INT PRIMARY KEY,
    -- Other student columns
    )

CREATE TABLE TeacherByStudent (
    TeacherID INT,
    StudentID INT,
    PRIMARY KEY (TeacherID, StudentID),
    FOREIGN KEY (TeacherID) REFERENCES Teacher (TeacherID),
    FOREIGN KEY (StudentID) REFERENCES Student (StudentID))

答案 3 :(得分:-1)

最好你应该遵循表格

<强>学生

Id(主键)

名称

<强>教师

Id(主键)

名称

ClassId(外键)

<强> TeacherStudentMapping

Id(主键)

StudentId

TeacherId

为StudentId&amp;设置唯一键TeacherId。