我正在尝试为小型数据库作业完成3NF或第三范式。
我有学生、班级和家长。
这是我需要制作的表格:
学生:身份证、姓名、年级(平均)
班级: class_id、profile(班级类型)、class_master、班级内的学生
家长:姓名、地址、在校学生
我应该指出的事情:
由于我的英语不是那么好,我想我应该指定:
班级是一对多的关系,因为一个学生可以是一个班级的一部分,而且只有一个班级(因此班级是学生的集合,没有别的)。
Profile 是一个类的特化(同样,学生分组机制称为类)。例如:简介:数学、文学、计算机科学
[/我应该指出的事情]
同样,我必须制作符合 3NF 准则的表格,而不是与我刚才提到的表格完全相同的表格
我刚在想:
Class:
class_id primary key, foreign key (class_master_name)
Profile:
class_master_name primary key, profile_name
Student:
student_id primary key, name, grade (avg), foreign key (class_id)
Parent:
parent_id primary key, name, address
因此,Class、Profile、Student 和 Parent 将是 3NF,因为所有非关键元素都严格指代键、整个键,并且仅指键。
我的问题(或者说需要回答的具体问题):
学生 <-> 班级关系好吗?学生参考班级就够了吗?我无法想象在没有与2NF或1NF冲突的重复数据的情况下,课堂可以引用学生的方式。
每个学生最多有两个父母(一个或两个都可能死了或根本不知道)。我想有一张桌子
Relationship: student_id, parent_1_id, parent_2_id
,但我不知道如何实现这一点。我怎么能(在SQL Server Management Studio 2008中)制作这个表(其中parent_1_id != parent_2_id
和也是student_id
但primary key
也是一个foreign key
)这实际上是3NF还是我做错了什么?
我是如何想到实施的Relationship: student_id, parent_1_id, parent_2_id
CREATE TABLE Relationship (
student_id int NOT NULL PRIMARY KEY,
parent_1_id int,
parent_2_id int,
CONSTRAINT (parent_1_id, parent_2_id) FOREIGN KEY
REFERENCES Parent (parent_id, parent_id),
CONSTRAINT (student_id) FOREIGN KEY
REFERENCES Student (student_id)
)
可以吗?