【发布时间】:2014-08-14 04:01:12
【问题描述】:
我正在研究数据库规范化,但我无法理解一件事。 假设我们有一个多对多关系。我们有一个课程表,我们有一个学生表。多名学生可以选修多门课程。
假设我们有一个“转换”表 Course_Student,它只存储学生的主键和他选择的课程。
我的任务是在 3NF 中制作所有表格,如果某些表格不在 3NF 中,请解释原因。
我的问题是:这些表是否已经在 3NF 中,我特别关心“过渡”表。
非常感谢!
Course
id title
1 Math
2 Programming
Student
id name
1 John Stevens
2 Jack Ryan
Course_Student
course_id student_id
1 1
1 2
2 1
CREATE TABLE Course(
id int IDENTITY(1,1) PRIMARY KEY,
title varchar(100) NOT NULL
)
CREATE TABLE Student(
id int IDENTITY(1,1) PRIMARY KEY,
name varchar(50) NOT NULL
)
CREATE TABLE Course_Student(
course_id int FOREIGN KEY REFERENCES Course,
student_id int FOREIGN KEY REFERENCES Student
)
【问题讨论】:
-
你看,我的任务是定义每个表的范式。出于某种原因,我怀疑 Course_Student 表是否是第三范式。
-
别忘了主键,课程上的id列是PK,学生上的id列是PK,course_id和student_id列是复合键(多个主键)
-
它在3NF中,该表的主键是(course_id,student_id)所以它没有任何属性。
-
这是作业吗?如果是这样,你应该说明这一点。
标签: database database-design relational-database database-normalization