如何摆脱列中相同值的重复?

时间:2014-04-20 20:32:26

标签: mysql database database-design

迷你世界中,我们有一门名为General Science的课程。它有三个模块,名为Module1,Module2,Module3。

(每个模块将在2个月内完成,然后进行考试,并在学期结束时进行期末考试 - 这与此无关,但我只是在说明背景。)

在每个单元中,大约30%的课程内容包括物理学章节,30%来自生物学,40%来自化学。因此,物理,生物和化学是课程的一部分(请建议,如果你有更好的词)。

每门课程都由不同的老师讲授。因此,教师专注于一门或多门Course_Parts(即物理,生物,化学)。

有一些课程,如通用科学。

............................................... .........

我有两个选择。 请建议哪一个是更好的设计

  1. 创建名为COURSE_PART 的表/实体类型(CoursePartNameModuleCourse(Chapters))并TEACHER TeachN:M相关联CHAPTERS 关系。

    这有点让我担心,因为表格中会有很多冗余数据。想象一下来自同一个Course_Part的20章 相同的模块,即相同的CoursePartName重复20次 CoursePartName列,相同的模块名称重复20次 模块列,和相同的课程名称重复甚至这么多 在“课程”列中多次。它对我来说并不好看。

    是的以后我必须制作一个名为primary key 的单独表格 (因为它是一个多值属性)并包含COURSE_PART foreign key中的ChapterCHAPTERS以及COURSE 属性将形成ID的复合主键。但是我 我没有摆脱我提到的那种 重复

  2. 使用名为CourseName和的两个属性创建名为COURSE_PART 的实体 CoursePartName使用属性创建名为Module 的周实体 名为N:M(在其列中重复相同),Teach(相同 模块列中的重复);并通过{{1}}将其与教师联系起来 {{1}}关系?
  3. 这种重复是不好还是我只是感觉如此?什么是摆脱这种情况的最好方法?

1 个答案:

答案 0 :(得分:1)

物理/化学/生物学的更好名称可能是主题

由于主题可能作为多个模块的一部分进行教授,因此有一个课程表,模块表,主题表格和内容表,用于将模块与主题相关联。内容将包含 courseFk 列和 topicFk 列。

教师表相同:由于每位教师都可以专注于多个主题,因此您可以拥有示教链接表。

链接表策略可以在建模多对多关系时防止重复。

使用,这是一个不同的故事:由于每章都属于一个主题,因此表应包含 topicFk 列。< / p>

UMI diagram