MySQL - 如何在单个列中添加多个值



我有两个表(科目和教师表(。如何将科目链接到教师,其中教师可以有多个科目。同样对于主题,一个主题可以是一周内的多天。如何在 c# 中做到这一点?请帮忙。

通常的解决方案是创建一个中间表或"交集实体"。

您正在尝试在科目和教师之间创建多对多关系,因为每个教师可以教授多个科目,多个教师可以教授同一科目。为了解决这个问题,你创建了一个交集表,为了论证,我们可以称之为Teaches。您的架构将如下所示:

CREATE TABLE teachers
(
  id      CHAR(10)      PRIMARY KEY,
  name    VARCHAR(255)
  -- more fields
);
CREATE TABLE subjects
(
  id      CHAR(10)      PRIMARY KEY,
  name    VARCHAR(63)
  -- more fields
);
CREATE TABLE teaches
(
  teacher_id  CHAR(10) FOREIGN KEY REFERENCES teachers (id),
  subject_id  CHAR(10) FOREIGN KEY REFERENCES subjects (id),
  PRIMARY KEY (teacher_id, subject_id)
);

这会将您的多对多关系转换为一对多关系。

您的第二个问题,即每个科目每周多节课的问题,最容易用一个子classes表来处理,每个班级满足一个记录。在这两种情况下,你想要研究的主题都是"规范化"。

最新更新