无损连接分解属性

时间:2015-04-20 21:06:54

标签: database database-design relational-database database-schema

我有以下具有给定功能依赖关系的关系模式R.因为,R不在BCNF中,我试图找到它的无损连接分解。任何人都知道如何处理这个问题。提前谢谢!

R (SSN, PersonNo, CourseNo, Semester, FacultyName, PersonName, CourseTitle, Credit, Grade)

Functional Dependencies are as follows: 

SSN -> FacultyName;
PersonNo -> PersonName;
CourseNo -> CourseTitle;
(CourseNo, Semester) -> (SSN, Credit);
(CourseNo, Semester, PersonNo) -> Grade

1 个答案:

答案 0 :(得分:1)

看来标准规范化就是所有要求的。这种关系在1nf中似乎是微不足道的,所以首先,从学生的POV开始,参加多门课程意味着重复课程的所有内容。这意味着R1(PersonNo,PersonName)和R2(PersonNo,SSN,CourseNo,Semester,FacultyName,CourseTitle,Credit,Grade)。现在R1在2nf,到目前为止它是无损的:R1 X R2 = R.

现在从课程的POV重复R2。每个实例都意味着它所教授的学期,教授它的教师和学习它的学生都是重复的,这意味着R2(CourseNo,CourseTitle)和R3(CourseNo,PersonNo,SSN,Semester,FacultyName,Credit,Grade)。

快速继续:R3归一化为R3(SSN,FacultyName),R4(SSN,CourseNo,Semester,PersonNo,Credit,Grade)。

最后到4nf,R4到R4(CourseNo,Semester,PersonNo),R5(CourseNo,Semester,PersonNo,Grade)和R6(CourseNo,Semester),R7(CourseNo,Semester,SSN,Credit)。

这一切都是手工解决的,因此可能存在差异或两者之间的差异。但这一切看起来都变成了四个实体表:人员,教师,课程,类和三个交集表PersonClass(作为关系的属性),FacultyClass(具有Credit作为关系的属性)和CourseClass。

如果我错了,请纠正我,但它看起来像People X PersonClass X Faculty X FacultyClass X Courses X CourseClass X Classes返回原来的R。

所以整件事都是无损的。

应该如此。

除非我完全错过了重要的事情......