数据透视表可能包含的字段多于ID

时间:2015-11-15 11:14:35

标签: mysql database-design many-to-many relational-database

我需要连接两张桌子:disciplineclass 它将是N:N关系,因此我将创建一个新表class_discipline

我的数据透视表class_discipline可能包含的字段多于两个表中的Ids吗?这是一个好习惯吗? 如果是的话,我应该遵循什么样的规则来做这样的事情?

让我解释一下情况:我将从excel文件导入一些数据,我无法更改此文件的数据(我的大学提供)。
此文件的某些数据既不适合disciplineclass表。所以我想我应该插入这个"额外数据"进入数据透视表。

1 个答案:

答案 0 :(得分:1)

您的表格class_discipline可以包含任意数量的列。

通常,该联结表中的任何列都表示关系的属性。在这种情况下,如果class ad discipline之间的关系需要任何规范,那么请使用更多列。

示例:

假设您有表studentscourses。要定义在哪个课程中注册的人,您将创建仅包含student_coursestudent_id的{​​{1}}表格。但是,如果您想知道学生注册的时间,您需要在某处保存此信息(它不是course_idstudent的属性)。这是将新列添加到course表中的时间。

好的或坏的做法?

通常,在联结表中使用关系属性的其他列是一种很好的做法。但是,如果删除关系,则需要记住丢失列值。

补充意见:

  • 如果您在应用程序中或通过ORM使用此类结构,请注意普通student_course关系是类的字段。一旦你需要更多的关系属性,你需要有一个单独的类。