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

时间:2016-02-15 03:47:26

标签: c# mysql database-design database-normalization

我有两个表(主题和教师表)。如何将主题链接到教师,教师可以拥有多个科目。对于受试者,受试者可以是一周中的多天。我怎么能在c#中做到这一点?请帮忙。

1 个答案:

答案 0 :(得分:1)

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

您正试图在主题和教师之间创建多对多关系,因为每个教师可以教授多个主题,而多个教师可以教授相同的主题。为了解决这个问题,你需要创建一个交集表,为了参数,我们可以调用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的单个子表来处理,每个阶段遇到一个记录。在这两种情况下,您要研究的主题是"标准化。"