外键( Foreign key) student[学生学号学生姓名] course[课程名称教师姓名 grade[学生学号课程名称成绩] teacher[教师姓名教师职称 外键: course.教师姓名, grade学生学号, grade课程名称 参照完整性: course表"教师姓名"属性的取值必须在 teacher表 "教师姓名"属性的值中岀现 外键 Foreign key 参照完整性 Referential integrity
外键 (Foreign key) student [学生学号 学生姓名] course [课程名称 教师姓名] grade [学生学号 课程名称 成绩] teacher [教师姓名 教师职称] 外键: course.教师姓名, grade.学生学号, grade.课程名称 外键 Foreign key 参照完整性 Referential integrity 参照完整性: course表 "教师姓名"属性的取值必须在teacher表 "教师姓名"属性的值中出现
无损分解( Lossless Join Decomposition) student[学生学号学生姓名] course[课程名称教师姓名 grade[学生学号课程名称成绩] teacher[教师姓名教师职称」 [学生学号学生姓名课程名称成绩教师姓名教师职称]
无损分解 (Lossless Join Decomposition) student [学生学号 学生姓名] course [课程名称 教师姓名] grade [学生学号 课程名称 成绩] teacher [教师姓名 教师职称] [学生学号 学生姓名 课程名称 成绩 教师姓名 教师职称]
联接 oin course teacher 课程名称教师姓名教师姓名教师职称 Web应用基础许劭 许劭 数据结构与算法司马徽 司马徽 教授 Java程序设计李先隆 先隆副教授 笛卡尔积( Cartesian Product) 果程名称教师姓名教师姓名|教师职称 Web应用基础许劭 许劭 讲师 Web应用基础许劭司马徽教授 where course.教师姓名= teacher教师姓名 Web应用基础许劭 李先隆 教匚→「课程名称教师姓名|教师职称 数据结构与算法司马徽许劭 讲师 Web应用基础许劭讲师 数据结构与算法司马徽司马徽 教授 数据结构与算法|司马徽 教授 数据结构与算法司马徽李先隆副教 Java程序设计李先隆副教 ava程序设计李先隆许劭 讲师 Java程序设计李先隆司马徽教授 ava程序设计李先隆李先隆副教
联接 (Join) Java程序设计 李先隆 数据结构与算法 司马徽 Web应用基础 许劭 课程名称 教师姓名 李先隆 副教授 司马徽 教授 许劭 讲师 教师姓名 教师职称 course teacher Java程序设计 李先隆 李先隆 副教 数据结构与算法 司马徽 司马徽 教授 数据结构与算法 司马徽 李先隆 副教 Java程序设计 李先隆 许劭 讲师 Java程序设计 李先隆 司马徽 教授 数据结构与算法 司马徽 许劭 讲师 副教 教授 讲师 教师职称 李先隆 司马徽 许劭 教师姓名 Web应用基础 许劭 Web应用基础 许劭 Web应用基础 许劭 课程名称 教师姓名 笛卡尔积 (Cartesian Product) Java程序设计 李先隆 副教 数据结构与算法 司马徽 教授 讲师 教师职称 Web应用基础 许劭 课程名称 教师姓名 where course.教师姓名=teacher.教师姓名
联接 oin grade temporary 1 学生学号课程名称成绩 课程名称教师姓名教师职称 200701Web应用基础86 Web应用基础 许劭 讲师 200702数据结构与算法88|数据结构与算法|司马徽|教授 200703Web应用基础95 Java程序设计李先隆 副教 200704Web应用基础76 grade join temporary 1 on 200705数据结构与算法|90 ↓ grade课程名称= temporary1课程名称 200706Java程序设计68学生学号课程名称成绩教师姓名教师职称 200707Java程序设计45 200701Web应用基础86 讲师 200708Web应用基础」82】20702数据结构与算法「88司马徽教授 2007098程序设计85200703Web应用基础95许劭讲师 200704Web应用基础76许劭 讲师 200705数据结构与算法90司马徽 教授 200706J3a程序设计68李先隆副教授 200707Java程序设计45李先隆副教授 200708Web应用基础82 讲师 200709Java程序设计85李先隆副教授
联接 (Join) Java程序设计 李先隆 副教 数据结构与算法 司马徽 教授 讲师 教师职称 Web应用基础 许劭 课程名称 教师姓名 200707 Java程序设计 45 200709 Java程序设计 85 200708 Web应用基础 82 200706 Java程序设计 68 200705 数据结构与算法 90 200704 Web应用基础 76 200703 Web应用基础 95 200702 数据结构与算法 88 200701 Web应用基础 86 学生学号 课程名称 成绩 grade temporary1 200707 Java程序设计 45 李先隆 副教授 200709 Java程序设计 85 李先隆 副教授 200708 Web应用基础 82 许劭 讲师 200706 Java程序设计 68 李先隆 副教授 200705 数据结构与算法 90 司马徽 教授 200704 Web应用基础 76 许劭 讲师 200703 Web应用基础 95 许劭 讲师 200702 数据结构与算法 88 司马徽 教授 200701 Web应用基础 86 许劭 讲师 学生学号 课程名称 成绩 教师姓名 教师职称 grade join temporary1 on grade.课程名称=temporary1.课程名称
联接 oin student temporary 学生学号学生姓名学生学号课程名称成绩教师姓名教师职称 200701曹操 200701Web应用基础86 讲师 200702郭嘉 200702数据结构与算法88司马徽 教授 几 student join temporary on student.学生学号= temporary2学生学号 学生学号学生姓名课程名称成绩教师姓名教师职称 200701 曹操Web应用基础86 200702郭嘉数据结构与算法88司马徽教授 200703 贾诩 Web应用基础95 许劭 讲师 信息最终得到完 200704刘备Web应用基础76许劭 讲师 全恢复,这样的 200705诸葛亮数据结构与算法90司马徽 教授 分解是无损的 200706关羽Jav程序设计68李先隆副教授 200707 张飞 Java程序设计|4 李先隆副教授 200708孙权Web应用基础82 讲 2009周瑜Java程序设计85李先隆副教授
联接 (Join) … … … … … 200702 数据结构与算法 88 司马徽 教授 200701 Web应用基础 86 许劭 讲师 学生学号 课程名称 成绩 教师姓名 教师职称 … … 200702 郭嘉 200701 曹操 学生学号 学生姓名 student temporary2 200707 张飞 Java程序设计 45 李先隆 副教授 200709 周瑜 Java程序设计 85 李先隆 副教授 200708 孙权 Web应用基础 82 许劭 讲师 200706 关羽 Java程序设计 68 李先隆 副教授 200705 诸葛亮 数据结构与算法 90 司马徽 教授 200704 刘备 Web应用基础 76 许劭 讲师 200703 贾诩 Web应用基础 95 许劭 讲师 200702 郭嘉 数据结构与算法 88 司马徽 教授 200701 曹操 Web应用基础 86 许劭 讲师 学生学号 学生姓名 课程名称 成绩 教师姓名 教师职称 student join temporary2 on student.学生学号=temporary2.学生学号 信息最终得到完 全恢复,这样的 分解是无损的