数据库-关系数据库(第二章)

关系数据结构及形式化定义

一、关系

1、域:是一组具有相同数据类型的值的集合。

2、笛卡尔积:给定一组域D1、D2、 ... Dn, 这些域中可以有相同的。

  D1、D2、Dn的笛卡尔积为:D1XD2X...XDn={ (d1,d2,...,dn) |di∈ Di,i=1,2,...,n}
  其中每一个元素(D,2...,d.) 叫作一-个n元组或简称元组,元素中的每一个值d,叫作一个分量
  D1X D2X... xDn,基数M为:M=∏mi
  笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应-一个域。

笛卡尔积:

笛卡尔积对应的二维表:

3、关系:笛卡尔积的有限子集,所以关系也是一个二维表

  D1XD2X...XDn的子集叫做在域D1, D2,Dn上的关系(Relation),表示为:

    R(D1,D2,...,Dn)

  其中R表示关系的名称,n是关系的目或度。

  例:

3.1、超码:若关系中的某一个或多个属性的集合能唯一地标识一个元组,则称该属性或属性组为超码。

3.2、候选码:如果构成超码属性组的任意真子集都不能成为超码,这样的最小超码称为候选码。

3.3、主码:若一个关系有多个候选码,则选定其中一个为主码。

3.2、主属性:候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性

例:

4、基本关系具有的性质 :

  • 列是同质的,每一列中的分量是同一类型的数据,来自同一个域。
  • 不同的列可出自同一个域,其中的每一-列称为个属性,不同的属性要给予不同的属性名。
  • 列的顺序无所谓,列的次序可以任意交换
  • 任意两个元组的候选码不能相同。
  • 行的顺序无所谓,行的次序可以任意交换
  • 分量必须取原子值,每一个分量都必须是不可分的数据项。

例:关系和二维表的对应

二、关系模式

关系模式是对关系的描述

  • 关系是元组的集合,因此关系模式必须指出这个元组集合的结构,即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映象关系。
  • 现实世界的许多已有事实限定了关系模式所有可能的关系必须满足一定的完整性约束。
  • 这些约束或者通过对属性取值范围的限定,或者通过属性值间的相互关连反映出来。关系模式应当刻划出这些完整性约束条件。
  • 因此一个关系模式应当是一个5元组

1、关系模式定义:关系的描述称为关系模式。它可以形式化地表示为:

       R (U, D,DOM ,F)

  其中,R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映象集合,F为属性间数据的依赖关系集合。

关系模式简记为R(U)R(A1,A2,...,An)

  • 其中R为关系名,A1,A2,...,An为属性名。
  • 域名及属性向域的映象常常直接说明为属性的类型、长度。

2、关系模式与关系

  • 关系模式是,关系是
  • 关系是关系模式在某一-时刻的状态内容
  • 关系模式是静态的、稳定的。关系是动态的、随时间变化的

关系操作

一、关系的基本操作

1、查询
  选择、投影、连接、除、并、交、差、笛卡尔积等。

2.数据更新
  插入、删除、修改。

3.关系操作的特点
  ●集合操作方式,即操作的对象和结果都是集合:一次一 集合
  ●相应地,非关系数据模型的数据操作方式:一次一记录。

二、关系数据语言的分类

1、关系代数语言
  用对关系的运算来表达查询要求,典型代表:IBM实验性系统ISBL。

2.关系演算语言:用谓词来表达查询要求
  元组关系演算语言
    ●谓词变元的基本对象是元组变量,典型代表:APLHA, QUEL。
  域关系演算语言
    ●谓词变元的基本对象是域变量,典型代表:QBE。

3.具有关系代数和关系演算双重特点的语言
    典型代表: SQL

关系的完整性

  数据库的完整性是指数据的正确性有效性。是指数据是符合现实世界语义、反映当前实际状况的。
  通过对关系(二维表)中取值的约束,可以保证数据库的完整性,保证数据的正确性。
  关系模型中有三类完整性约束:

    实体完整性
    参照完整性
    用户定义的完整性

一、实体完整性

1.实体完整性规则
  若属性A是基本关系R的主属性,则属性A不能取空值
  空值表示:不知道、不存在、无意义。

2.注意:实体完整性规则规定基本关系的所有主属性都不能取空值。

例:下面的就不符合实体完整性规则

3.说明:
  (1)实体完整性规则是针对基本关系而言的。
  (2)现实世界中的实体是可区分的,即它们具有某种唯-性标识。
  (3) 相应地,关系模型中以主码作为唯一性标识。
  (4)主码中的属性即主属性不能取空值。

二、参照完整性

1.外码
  设F是基本关系R的一个或一组属性,但不是关系R的主码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码

2.参照完整性规则
  若属性F是基本关系R的外码,它与基本关系S的主码K。相对应,则对于R中每个元组在F上的值必须为:

    或者取空值;
    或者等于S中某个元组的主码值

[例]学生关系和专业关系如下:(可以取空值)

  学生(学号,姓名,性别,专业号,年龄)
  专业(专业号,专业名)

三、用户定义的完整性

  用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。

  用户定义的完整性没有统一的规则,由数据库设计人员根据具体应用中数据的语义要求来创建。

四、完整性的实现

实体完整性
  设置表中的主码(主键)

参照完整性
  设置表中的外码(外键)

用户定义的完整性
  unique, check, not null

关系代数

1.关系代数
  ●一种抽象的查询语言;
  ●用对关系的运算来表达查询。

2.关系代数运算的三个要素

  运算对象:关系
  运算结果:关系
  运算符:四类

3.关系运算符

  (1)集合运算符(∩一U X)
    ●将关系看成元组的集合;
    ●运算是从关系的“水平”方向即行的角度来进行。

  (2)专门]的关系运算符(σ 兀 |X| ÷)
    ●不仅涉及行而且涉及列。

  (3)比较运算符(< > ≥ ≤ = #)
    ●辅助专门]的关系运算符进行操作。

  (4)逻辑运算符(∧ ∨ ¬ )
    ●辅助专门]的关系运算符进行操作。

4.关系代数运算的分类

  传统的集合运算
    并、差、交、广义笛卡尔积

  专门的关系运算
    选择、投影、连接、除

一、传统的集合运算

1.并、交、差

  R和S满足的条件:
   ●具有相同的目n (即两个关系都有n个属性) ;
   ●相应的属性取自同一个域

  (1)并
     RUS
     仍为n目关系,由属于R或属于S的元组组成。
     RUS = { t|t∈R V t∈S }

  (2)差
     R-S
     仍为n目关系,由属于R而不属于S的元组组成。
     R-S = { t|t∈R ∧ t∉S }

  (3)交
     R∩S
     仍为n目关系,既属于R又属于S的元组组成。
     R∩S = { t|t∈R ∧ t∈S }
     R∩S = R-(R-S)

 例:

  1、并

  2、差
  3、交

2.广义笛卡尔积

  R: n目关系,k1个元组
  S: m目关系,k2个元组

  RXS
  列: (n+m)列的元组的集合
   ●元组的前n列是关系R的一个元组
   ●后m列是关系S的一个元组
  行: k1Xk2个元组
   RXS = { tr^ts|tr∈R ∧ ts∈S }
例:

二、专门的关系运算

1.选择

例:

2.投影
  从关系R中选择出若干属性列组成新的关系。记作:
    πA(R)= {t[A]|t∈R }
  其中A为R中的属性列。

  投影操作主要是从的角度进行运算。
例:

3.连接

(1)θ连接

例:
(2)等值连接

例:(3)自然连接
  • 自然连接是一种特殊的等值连接
  • 在等值连接中,要求两个关系进行比较的分量必须是同名的属性组
  • 在结果中去掉重复的属性列
  若R和S具有相同的属性组B, U为R和S的全体属性集合,则自然连接记作:

  R |X| S= { tr^ts[U-B]|tr∈R∧ts∈S∧tr[B]=ts[B] }
(4)外连接
  • 悬浮元组:把两个关系在做自然连接时被舍弃的元组称为悬浮元组。
  • 外连接:如果把悬浮元组也保存在R和S自然连接(R|X|S)的结果关系中,而在其它属性上填空值,那么这种连接就叫做外连接(outer join)。
  • 左外连:如果只保留左边关系R中的悬浮元组就叫做左外连(left outer join)。
  • 右外连:如果只保留右边关系S中的悬浮元组就叫做右外连(right outer join)
例:(5)除法

  除法运算是二目运算。

  设有关系R(X,Y)与关系S(Y,Z),其中X,Y,Z为属性集合。R中的Y与S中的Y可以有不同的属性名,但对应属性必须出自相同的域。
  R与S的除法运算得到一个新的关系P(X);
  P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:
    R÷S= {tr[X] | tr∈R∧πy(S)∈Yx }
    Yx: x在R中的象集,x= tr[X]
例:(1)
例:(2)

发布了42 篇原创文章 · 获赞 40 · 访问量 952

猜你喜欢

转载自blog.csdn.net/weixin_44635198/article/details/104581433