我正在尝试为小型数据库作业完成3NF或第三范式。
我有学生,班级和家长。
以下是我需要制作的表格:
学生: ID,姓名,年级(平均)
班级: class_id,个人资料(班级类型),班级大师,班级中的学生
家长:在学校注册的姓名,地址,学生
我应该指出的事情:
由于我的英语不太好,我想我应该说明:
班级是一对多的关系,因为一个学生可以成为一个班级的一部分,而且只有一个班级(因此班级是学生的集合,没有别的)。
Profile是一个类的特化(同样,一个叫做class的学生分组机制)。 Ex:简介:数学,文学,计算机科学
[/我应该指出的事情]
同样,我必须制作符合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)
)
可以吗?
答案 0 :(得分:1)
看起来你需要类似的东西:
(Class.ProfileId
和Student.ClassId
不是NULL,而Parent1Id
和Parent2Id
是空的。)
答案 1 :(得分:-1)
ClassType:
classtype (primary key)
name
etc...
Class:
classid (primary key)
classtype (foreign key)
classname
etc...
Person:
personid (primary key)
name
dob
etc....
ClassStudent:
studentid (primary key)
classid (foreign key)
personid (foreign key)
grade
etc
PersonRelation:
relationid (primary key)
prim_personid (foreign key)
sec_personid (foreign key)
relationship (parent, sibling, etc)
etc