数据库表规范化 (3NF)

Database Table Normalization (3NF)

提问人:Begems 提问时间:8/2/2023 最后编辑:philipxyBegems 更新时间:8/4/2023 访问量:65

问:

| MatrikelNr [PK] | Stud.-Name | Klausur | Raum |

Matrikelnr = 学号,Klausur = 考试名称,Raum = 房间。

我应该把这个表放到 3NF 中,并将它们写成带有下划线主键的关系。

我的解决方案:

Student (Matrikelnr, Stud.-Name)
Klausur (Matrikelnr, Klausur, Raum)

但我的朋友说解决方案是:

Student (Matrikelnr, Stud.-Name, Klausur)
Klausur (Klausur, Raum)
数据库 数据库规范化 3NF

评论

0赞 NickW 8/2/2023
据推测,一个学生可以参加多次考试,一个房间可以举办多次考试(可能在不同的时间)?您需要考虑这些关系的基数,并适当地对它们进行建模
0赞 philipxy 8/4/2023
这个网站是英文的,使用英文,这里没有理由使用任何其他语言,不要指望/强迫每个读者翻译。
0赞 philipxy 8/4/2023
引用和来源你所遵循的算法/过程,并显示给出的内容,包括假设和你的工作步骤。通过编辑而不是评论进行澄清。删除并标记过时的评论。帮助中心通过单击建议的标签来选择标签,并在单击之前阅读标签wiki/info。

答:

1赞 Eric 8/2/2023 #1

Student应该只包含学生信息。Student(Matrikelnr,Stud.-Name)

Exam应该只有考试信息。Klausur(Klausur,Raum)

然后,您将需要一张桌子来保存多对多关系(学生可以参加许多考试,并且许多学生参加考试)

StudentExam(StudentId, ExamId),则两列都是其他 2 个表中的主键。