外码

  • 属性的相对应: 属性名可以不同,但是域相同
  • 设F是基本关系A的一个或一组属性,但不是关系A的码(不能唯一确定),KS是基本关系B的主码。如果F与Ks相对应,则称F是A的外码,并称基本关系A为参照关系。B为被参照关系
  • 不同关系中的属性如果相对应,一般取相同的名字,反正他们的域相同。比如有这么个属性M。
    • 参照关系:M不是码
    • 被参照关系:M可以为主码
    • 在参照关系中,M的值要么为空,要么参考主码(也就是被参照关系中M有的值)
  • 当然,同一关系中的属性也可以相对应,这时一般取不同的属性名。该表是参照关系,也是被参照关系。

关系的运算

  • 集合运算符
运算符 运算 运算条件
∩ 交 就跟普通集合运算一样,只是元素变为元组了
- 目(列)相同
- 对应的属性的域相同
∪ 并
- 差
× 笛卡尔积 得到的关系目为两关系目相加
  • 条件表达式中的运算符
运算符 运算 描述
σ 选择 水平分割,留下符合条件的元组
π 投影 垂直分割,留下符合条件的属性
▷◁ 连接 两个关系笛卡尔积,再筛出符合条件的元组
÷
<> 不等于
¬

选择

  • SQL语言
    • select * from student
    • where 性别 = ‘女’
  • 关系代数语言:
    • 查询年龄小于20岁的学生。
    • σ sage < 20(Student) —(多个条件用 ∧ 隔开)

投影

**

  • SQL语言:
    • select Sname,Ssex from student;
  • 关系代数语言:
    • 求Student关系上学生姓名和所在系两个属性上的投影
    • π sname,Sdept(Student) —(多个条件用 , 隔开)

连接

关系代数的连接

普通连接

  • R ▷◁ S =
  • AθB
  • θ:比较运算符 = < 之类的
  • A B: R和S上的属性

等值连接:

  • 当θ为=符号 如:
  • R ▷◁ S =
  • R.B=S.B

自然连接:

  • R ▷◁ S (无条件)
  • 在等值连接的基础上,删去属性相同的属性

悬浮元组:

  • 在等值连接过程中,R或S中没选上的元组

外连接(前连接)(full join):

  • 等值连接中,把悬浮元组最后加入所得表,缺失的分量用NULL填充
  • 左外连接:外连接中只留下左表的悬浮元组
  • 右外连接:外连接中只留下右表的悬浮元组
    • SQL语言
  • 例(左):SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
  • FROM Student
  • LEFT JOIN SC ON(Student.Sno=sc.Sno);

自身连接

  • 一个表与其自己进行连接需要给表起别名以示区别
  • 必须使用别名前缀
  • 例:
    • SELECT FIRST.Cno,SECOND.Cpno
    • FROM Course FIRST,Course SECOND
    • WHERE FIRST.Cpno= SECOND.Cno;

      除(R ÷ S)

  1. 除去R中与S相同的属性
  2. 逐一检测R中的元组,若其象极涵盖所有S中与R相同的部分,则留下,否则剔除

象极

  • 例如:求某一元组中某一属性的一个分量的象极
    • 仅把含该分量的元组留下,再除外场上的该分量所在的属性,形成的关系就是答案!YA☆TA☆ZE
  • 也可以求某一元组中多个属性分量的象极