在迷你世界中,我们有一门名为普通科学的类(class)。它有三个模块,名为 Module1、Module2、Module3。
(每个模块都在 2 个月内完成,然后有一次考试,学期结束时有期末考试 - 这与这里无关,但我只是为了说明背景。)
在每个模块中,大约 30% 的类(class)内容由物理学章节组成,30% 为生物学章节,40% 为化学章节。所以物理、生物和化学是这门类(class)的一部分(如果你有更好的词,请提出建议)。
每个 Course_Part 由不同的老师授课。因此,教师专门研究这些类(class)部分中的一个或多个(即物理、生物、化学)。
有几门类(class),例如普通科学。
...................................................... ......
我有两个选择。 请建议哪一个设计更好:
创建一个名为
COURSE_PART
的表/实体类型(CoursePartName
,Module
,Course
、(Chapters)
) 并通过Teach
将其与TEACHER
相关联,N:M
关系。这让我有点担心,因为表中会有很多冗余数据。想象一下来自同一 Course_Part 的 20 章 相同的模块,即相同的 CoursePartName 在中重复 20 次 CoursePartName 列,相同的模块名称在其中重复 20 次 模块列,甚至有很多相同的类(class)名称重复 在“类(class)”栏中显示更多次。我觉得不太好。
是的稍后我将不得不制作一个名为
CHAPTERS
的单独表格 (因为它是多值属性)并包含主键
其中的COURSE_PART
作为外键
,并且它与Chapter
一起 属性将形成CHAPTERS
的复合主键。但是我 不会消除我提到的那种重复。- 创建一个名为
COURSE
的实体,其中包含两个名为ID
的属性和类(class)名称
。 使用属性将其周实体命名为COURSE_PART
命名为CoursePartName
(在其列中重复相同),Module
(相同 模块列中重复);并通过N:M
将其与 TEACHER 关联教导
关系?
这种重复是不好还是我只是感觉这样?摆脱这个问题的最佳方法是什么?
最佳答案
物理/化学/生物学的更好名称可能是主题。
由于一个主题可能作为多个模块的一部分进行教授,因此有一个类(class)表、一个模块表、一个主题是有意义的> 表和一个将模块与主题链接起来的内容表。内容将包含一个 courseFk 列和一个 topicFk 列。
与教师表相同:由于每位教师可以专门研究多个主题,因此您可以有一个教师链接表。
在建模多对多关系时,链接表策略将防止重复。
对于Chapter,情况有所不同:由于每个章节都属于一个主题,因此您的Chapter表应该有一个topicFk列。
关于mysql - 如何消除列中相同值的重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23187266/