【问题标题】:Lossless Join Decomposition Property无损连接分解属性
【发布时间】:2015-06-27 19:11:34
【问题描述】:

我有以下具有给定功能依赖关系的关系模式 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

【问题讨论】:

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


    【解决方案1】:

    似乎只需要标准规范化。这种关系在 1nf 中似乎微不足道,所以首先,从学生的 POV 来看,参加多门课程意味着与课程相关的所有内容都会重复。这意味着 R1(PersonNo,PersonName)和 R2(PersonNo,SSN,CourseNo,学期,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)。

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

    这都是手工完成的,因此可能存在一两个差异。但这一切看起来都变成了四个实体表:People、Faculty、Courses、Classes 和三个交叉表 PersonClass(以 Grade 作为关系的属性)、FacultyClass(以 Credit 作为关系的属性)和 CourseClass。

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

    所以整个事情都是无损的。

    应该如此。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 2017-07-08
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多