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