在迷你世界中,我们有一门名为General Science的课程。它有三个模块,名为Module1,Module2,Module3。
(每个模块将在2个月内完成,然后进行考试,并在学期结束时进行期末考试 - 这与此无关,但我只是在说明背景。)
在每个单元中,大约30%的课程内容包括物理学章节,30%来自生物学,40%来自化学。因此,物理,生物和化学是课程的一部分(请建议,如果你有更好的词)。
每门课程都由不同的老师讲授。因此,教师专注于一门或多门Course_Parts(即物理,生物,化学)。
有一些课程,如通用科学。
............................................... .........
我有两个选择。 请建议哪一个是更好的设计:
创建名为COURSE_PART
的表/实体类型(CoursePartName
,Module
,
Course
,(Chapters)
)并TEACHER
Teach
与N:M
相关联CHAPTERS
关系。
这有点让我担心,因为表格中会有很多冗余数据。想象一下来自同一个Course_Part的20章 相同的模块,即相同的CoursePartName重复20次 CoursePartName列,相同的模块名称重复20次 模块列,和相同的课程名称重复甚至这么多 在“课程”列中多次。它对我来说并不好看。
是的以后我必须制作一个名为primary key
的单独表格
(因为它是一个多值属性)并包含COURSE_PART
foreign key
中的Chapter
,CHAPTERS
以及COURSE
属性将形成ID
的复合主键。但是我
我没有摆脱我提到的那种 重复 。
CourseName
和的两个属性创建名为COURSE_PART
的实体
CoursePartName
。 使用属性创建名为Module
的周实体
名为N:M
(在其列中重复相同),Teach
(相同
模块列中的重复);并通过{{1}}将其与教师联系起来
{{1}}关系?这种重复是不好还是我只是感觉如此?什么是摆脱这种情况的最好方法?
答案 0 :(得分:1)
物理/化学/生物学的更好名称可能是主题。
由于主题可能作为多个模块的一部分进行教授,因此有一个课程表,模块表,主题表格和内容表,用于将模块与主题相关联。内容将包含 courseFk 列和 topicFk 列。
与教师表相同:由于每位教师都可以专注于多个主题,因此您可以拥有示教链接表。
链接表策略可以在建模多对多关系时防止重复。
使用章,这是一个不同的故事:由于每章都属于一个主题,因此章表应包含 topicFk 列。< / p>