Mysql table 将主题分配给 class 的设计

Mysql table design for assigning subjects to a class

我打算制作一个 table,我可以在其中将主题分配给 class。我有各种与此相关的任务 table,例如为每个科目插入标记,了解 class 正在学习哪些科目,为每个科目出勤 etc.I 在决定​​ [=38] 时感到困惑=] 设计。

第一个设计是我将制作 3 列并插入值。但是在这里我必须多次插入相同的 class 例如。

ID - CLASS - SUBJECT

1 - 8th - English 2 - 8th - Maths 3 - 8th - Science

第二个是我将为每个主题制作单独的栏目。但这里的问题是,如果我需要将更多主题分配给 class.

ID - CLASS - SUBJECT1 - SUBJECT2 - SUBJECT3 - SUBJECT4

1 8th English Maths Computer Science 2 9th Maths Computer Science English

请帮助我决定正确的 table 设计。谢谢

多次输入同名的场合会导致一些异常,比如更新异常,删除异常。

为了克服这个问题,您需要在不同的表上定义 类 和主题,然后创建多对多关系。

例如:

Classes(ID*, ClassName)
Subjects(SubjectID*, SubjectName)
SubjectinClasses(ID*, SubjectID*)
    ID is foreign key to Classes
    SubjectID is foreign key to Subjects

* = (component of) PRIMARY KEY

此设计将帮助您规范化表格。如果您不熟悉术语 "foreign key",我建议您查找有关 "referential integrity" 主题的信息。