C# MySQL-如何在一列中添加多个值

C# MySQL-如何在一列中添加多个值,c#,mysql,database-design,database-normalization,C#,Mysql,Database Design,Database Normalization,我有两张桌子(科目和教师桌子)。如何将科目链接到教师,教师可以有多个科目。同样对于受试者,一个受试者可以在一周内有多天。我怎么能在c#内做到这一点?请提供帮助。通常的解决方案是创建一个中间表或“交集实体” 你试图在科目和教师之间建立一种多对多的关系,每个教师可以教授多个科目,多个教师可以教授同一科目。为了解决这个问题,您创建了一个交集表,为了便于讨论,我们可以调用来教导。您的架构如下所示: CREATE TABLE teachers ( id CHAR(10) PRIMA

我有两张桌子(科目和教师桌子)。如何将科目链接到教师,教师可以有多个科目。同样对于受试者,一个受试者可以在一周内有多天。我怎么能在c#内做到这一点?请提供帮助。

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

你试图在科目和教师之间建立一种多对多的关系,每个教师可以教授多个科目,多个教师可以教授同一科目。为了解决这个问题,您创建了一个交集表,为了便于讨论,我们可以调用
来教导
。您的架构如下所示:

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)
);
这会将多对多关系转换为一对多关系


你的第二个问题,即每周为每个科目上多节课的问题,最容易通过一个包含
类的单子表来解决,每个类遇到的每个时段都有一条记录。在这两种情况下,你想研究的主题都是“规范化”。

@MatthewMoisen你应该称它为你认为最有意义的东西,并且与你对其他东西的命名方式一致。:)添加
索引(subject\u id,teacher\u id)
,因为您可能也想使用另一种方法。不要使用
CHAR
,除非它们确实是固定长度的。改为使用
VARCHAR
。我不想回答这个问题,因为我不确定它是否正确,但我认为您可以在Subjects表中添加一列,其中包含教师ID号。