mysql - 如何消除列中相同值的重复?

标签 mysql database database-design

迷你世界中,我们有一门名为普通科学的类(class)。它有三个模块,名为 Module1、Module2、Module3。

(每个模块都在 2 个月内完成,然后有一次考试,学期结束时有期末考试 - 这与这里无关,但我只是为了说明背景。)

在每个模块中,大约 30% 的类(class)内容由物理学章节组成,30% 为生物学章节,40% 为化学章节。所以物理、生物和化学是这门类(class)的一部分(如果你有更好的词,请提出建议)。

每个 Course_Part 由不同的老师授课。因此,教师专门研究这些类(class)部分中的一个或多个(即物理、生物、化学)。

有几门类(class),例如普通科学。

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

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

  1. 创建一个名为COURSE_PART的表/实体类型(CoursePartName, Module, Course(Chapters) ) 并通过 Teach 将其与 TEACHER 相关联,N:M 关系。

    这让我有点担心,因为表中会有很多冗余数据。想象一下来自同一 Course_Part 的 20 章 相同的模块,即相同的 CoursePartName 在中重复 20 次 CoursePartName 列,相同的模块名称在其中重复 20 次 模块列,甚至有很多相同的类(class)名称重复 在“类(class)”栏中显示更多次。我觉得不太好。

    是的稍后我将不得不制作一个名为CHAPTERS的单独表格 (因为它是多值属性)并包含主键 其中的 COURSE_PART 作为外键,并且它与 Chapter 一起 属性将形成 CHAPTERS 的复合主键。但是我 不会消除我提到的那种重复

  2. 创建一个名为 COURSE 的实体,其中包含两个名为 ID 的属性和 类(class)名称使用属性将其周实体命名为 COURSE_PART 命名为 CoursePartName (在其列中重复相同),Module (相同 模块列中重复);并通过 N:M 将其与 TEACHER 关联 教导关系?

这种重复是不好还是我只是感觉这样?摆脱这个问题的最佳方法是什么?

最佳答案

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

由于一个主题可能作为多个模块的一部分进行教授,因此有一个类(class)表、一个模块表、一个主题是有意义的> 表和一个将模块与主题链接起来的内容表。内容将包含一个 courseFk 列和一个 topicFk 列。

教师表相同:由于每位教师可以专门研究多个主题,因此您可以有一个教师链接表。

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

对于Chapter,情况有所不同:由于每个章节都属于一个主题,因此您的Chapter表应该有一个topicFk列。

UMI diagram

关于mysql - 如何消除列中相同值的重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23187266/

相关文章:

mysql - 如何从单个组中获取最后一条记录

MySql - 更新字符串部分的方法?

mysql - 梦幻联盟的数据库设计

sql - 定义数据库的表结构?

mysql - "link"表中是否使用了外键?

mysql - 更新 MySQL(使用正则表达式?)

php - 迁移到新的 DBAL 但需要维护遗留数据库连接

database - 我们可以将自定义查询提示分配给 JPA NamedQueries

android - 如何从 recyclerView 中删除一个项目?

mysql - 如何在 MySQL 中使用单个选择查询更新多个列?