数据库--关系模型与关系代数

关系模型与关系代数

2.1 关系模型

  1. 关系

  1)关系模型的数据结构为二维表,亦称关系,每个表(关系)有唯一的名字。

  2)关系数据库是表的集合,即关系的集合。

  关系数据结构的形式化定义:

  1)域。域是一组具有相同数据类型的值的集合。如{‘男’,‘女’}。

  2)笛卡儿积。

   3)码。

    超码:属性集 A 可以唯一标识关系 r 总中的一个元组,则称属性集 A 为关系 r 的一个超码。

    候选码:对于关系 r 的一个或多个属性的集合 A ,如果属性集 A 的任何真子集都不能成为关系的超码,则称属性集 A 为候选码。

    主码:若一个关系有多个候选码,可以选定其中一个候选码作为该关系的主码。

    总结:主码 属于 候选码 属于 超码。

  2. 关系模式

  关系完整性的约束条件:

  1)实体完整性。主码不能为空。

  2)参照完整性。外码要么为空要么能等于被参照关系的某个元组的主码。

  3)用户自定义完整性。限制关系中某些属性的值复合业务语义要求。如限制性别为男或女。

  

  关系操作

  关系操作有查询操作和更新操作两大类。查询操作又可分为选择、投影、连接、除、并、交、差、笛卡儿积等。其中选择、投影、集合并、集合差和笛卡儿积是 5 种基本关系操作

 2.2 关系代数

   在连接中把不能连接的元组丢弃称为自然连接,把左关系中不能连接的元组保留到结果关系称为左外连接,把右关系中不能连接的元组保留到结果关系中称为右外连接,把左右关系中不能连接的元组都保留到结果关系中称为全外连接

  关系代数例题

  1)查找选修了 08-09 学年第一学期(08091)开出的全部课程的学生学号和姓名。

  解析:先找出所有08-09 学年第一学期的课程号,然后用选课关系表除这些课程号得到选修了08-09 学年第一学期全部课程学生的学号,再和学生表连接然后投影出学号和姓名。

  2)查找至少选修了一门其直接先修课编号为 CS012 的课程的学生学号和姓名。

  解析:先找出先修课编号为 CS012 的课程然后依次连接选修关系和学生关系,最后投影出学生学号(没选过先修课编号为 CS012 的课程的同学会连接失败,如果选了多门先修课编号为 CS012 的课程的同学,投影会将学生学号和姓名去重)。

  3)查找至少选修了学号为0703010 的学生所选课程的学号和姓名。

  解析:先找出学号为0703010的学生所选的课程号,然后用选修关系除这些课程号,得到至少选修了学号为0703010 的学生所选课程的学号,再和学生表连接,投影出学号和姓名。

猜你喜欢

转载自www.cnblogs.com/hoo334/p/12625635.html