1

我正在尝试为小型数据库作业完成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,因为所有非关键元素都严格指代键、整个键,并且仅指键。

我的问题(或者说需要回答的具体问题):

  • 学生 <-> 班级关系好吗?学生参考班级就够了吗?我无法想象在没有与2NF1NF冲突的重复数据的情况下,课堂可以引用学生的方式。

  • 每个学生最多有两个父母(一个或两个都可能死了或根本不知道)。我想有一张桌子Relationship: student_id, parent_1_id, parent_2_id,但我不知道如何实现这一点。我怎么能(在SQL Server Management Studio 2008中)制作这个表(其中parent_1_id != parent_2_id 和也是 student_idprimary 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)
)

可以吗?

4

2 回答 2

1

看起来你需要类似的东西:

在此处输入图像描述

( Class.ProfileIdandStudent.ClassId不为 NULL,而Parent1IdandParent2Id可以为 NULL。)

于 2013-02-02T20:29:03.853 回答
-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
于 2013-02-02T15:38:11.103 回答