数据库基本术语概念

超码

在关系中能唯一标识一个元组的属性集称为关系模式的超码

因为通过id可以找到唯一一个学生,所以{id}是一个超码,同理{id,student_number}、{id,student_number,name}、{id,student_number,name,sex}、{student_number}、{student_number,name}、{student_number,name,sex}也是超码.

候选码

  • 不含多余属性的超码
  • 包含在候选码中的属性称为主属性(Primary Attribute)
  • 不包含在任何一个候选码中的属性称为非主属性(Nonprime Attribute)

在上例中,只有{id}或者{student_number}是候选码。如果sex和name可以唯一标识一个学生,则{name,sex}也为候选码,但是,sex和name并不能唯一标识一个学生,这与现实生活是违反的,因为现实有同名同姓的人,则{name,sex}不能作为候选码。

主码

用户选作元组标识的一个候选码称为主码,其余的候选码称为替换码 (Alternate Key)

关系模式的形式化定义

R(U,D,dom,F)

R为关系模式名,U是一个属性集,D是U中属性的值所来自的域, Dom是属性向域的映射集合,F是属性间的依赖关

例如:

Student关系模式的定义 Student(U,D,dom,F)

U={sno,name,age}

D={CHAR,INT}

Dom={dom(sno)=dom(name)=CHAR,dom(age)=INT}

F={sno→name, sno→age}

函数依赖 FD

若在一张表中,在属性(或属性组)X的值确定的情况下,必定能确定属性Y的值,那么就可以说Y函数依赖于X,写作 X → Y

上图中

  • 系名 → 系主任
  • 学号 → 系主任
  • (学号,课名) → 分数

完全函数依赖

在一张表中,若 X → Y,且对于 X 的任何一个真子集(假如属性组 X 包含超过一个属性的话),X ‘ → Y 不成立,那么我们称 Y 对于 X 完全函数依赖

上图中

  • 学号 F→ 姓名
  • (学号,课名) F→ 分数 (注:因为同一个的学号对应的分数不确定,同一个课名对应的分数也不确定,必须要这两个才能确定分数)

部分函数依赖

假如 Y 函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X

上图中

  • (学号,课名) P→ 姓名 (学号可以确定姓名,课名不能确定姓名)

传递函数依赖

假如 Z 函数依赖于 Y,且 Y 函数依赖于 X ,则 Z 传递函数依赖于 X

ArmStrong公理

自反律(Reflexity):若B ⊆ A,则A→B成立

增广律(Augmentation):若A→B,则AC→BC(AC 表示A∪C)

传递律(Transitivity):若A→B, B→C,则A→C

自含律(Self_Determination): A→A

分解律(Decomposition):若A→BC,则A→B,且 A→C

合并律(Union):若A→B, A→C,则A→BC

复合律(Composition):若A→B, C→D,则AC→BD

闭包

设F是属性集U上的一个FD集,X是U的子集,则称所有用Armstrong推理规则推出的函数依赖 X→A中所有A的集合,称为属性集X关于F的闭包 ,记做X+

例如:

F={A→B, B→C, B→D, A→D }

A+=ABCD

B+=BCD

C+=C

D+=D

最小函数依赖集

给定一个函数依赖集S,若能找到一个远小于S的等价函数依赖集T,则DBMS只要实现T就可实现S中的所有函数依赖

  • F的每个FD的右边只有一个属性
  • F不可约:F中的每个X→Y,F-{X→Y}与F不等价
  • F的每个FD的左部不可约:删除左边的任何一个属性都会 使F转变为一个不等价于原来的F的集合

例如:

R(A,B,C,D),F={A→BC, B→C, A→B, AB→C, AC→D}

将右边写出单属性并去除重复FD(分解律)

  • F={A→B, A→C, B→C, A→B, AB→C, AC→D}

  • F={A→B, A→C, B→C, AB→C, AC→D}

消去左部冗余属性

  • A→C, AC→D可推出A→AC, A→D,因此可去除AC→D中的C

  • A→C,可推出AB→BC可得AB→C ,所以AB →C中的B是冗余属性

  • F={A→B, A→C, B→C, A→C, A→D}

    ={A→B, A→C, B→C, A→D}

消去冗余函数依赖

  • A→C冗余,因为可由A→B, B→C推出

  • F={A→B, B→C, A→D}

关系代数

SELECT S1#, S2#

FROM (Select S# AS S1#,city From S) S1, (Select S# AS S2#,city From S) S2

WHERE S1.city = S2.city AND S1.S1# < S2.S2#

选择(selection)运算:σ

投影(projection)运算:π

连接(join)运算:

自然连接

θ链接

等值连接

重命名:ρx(E)

x是E结果的新名字