数据库技术与应用-SQL Sevrver2012 <二>

第二章 关系数据库基本原理

2.1 关系数据库概述
2.1.1 关系数据模型

采用有序数组描述实体及其属性,用这种有序数组的集合描述一个实体集合,而采用定义在两个几何上的关系反应不同实体的联系。

2.1.2 关系数据库的基本概念

二维表

1,关系

一个关系就是没有重复的行和重复的列的二维表,(除表头外)二维表的每一行称为表的一个元组或一条记录。每一列是属性。

2,元组与属性

元组是指关系数据库中的一条记录或一行数据。它是一个有序的数据项集合,每个数据项对应于数据库表中的一个属性(列)。元组可以被认为是关系数据库中最小的数据单元,它表示了一个实体或对象的完整信息。

以下是关于元组的一些重要特点:

  1. 属性和值:元组由多个属性组成,每个属性都有一个名称和值。属性的名称通常对应于表中的列名,而属性的值则是该列对应的实际数据。

  2. 有序性:元组是一个有序集合,属性的顺序是固定的。这意味着每个属性的值在元组中的位置是固定的,通过位置可以访问和引用特定属性的值。

  3. 单位性:每个元组都代表了一个完整的数据项。例如,在一个学生表中,每个元组可能代表一个具体的学生,包含该学生的姓名、年龄、性别等属性和对应的值。

  4. 唯一性:元组在关系数据库表中是唯一的。每个元组都有一个唯一的标识符,可以通过某个属性或属性组合来区分不同的元组。

3,关键字

关系中能唯一区分、确定不同元组的属性或者属性的总和。

4,外部关键字

如果关系中某个属性或属性的总和组合非关键字,但是却是拎一个关系的主关键字,则称此属性或属性组合为本关系的外部关键字,简称外键。在关系数据库中用外键来描述表与表之间的关系。

2.1.3 关系数据库的基本特征
  • 有坚实的理论基础

  • 数据结构简单,易于理解

  • 对用户提供了较为全面的操作支持

  • 得到了众多开发商的支持

2.2 关系代数的基本原理
2.2.1 关系的数学定义
  1. 集合

    集合没有严格的形式定义,一般说来,集合是与某一研究过程相关的一类对象的整体,这些对象称为集合的元素。

  2. 元组

    几个元素组成的一个有序组称为一个元组,通常元组用圆括号括起来的一些元素表示,元素间使用逗号分隔。例如(3,5,6)和(E001,钱达理,男,东风路78号)是元组的例子。

  3. 关系

    设A1、A2、…、An为任意集合,设R={(a1,a2,…,an)|ai∈Ai,i=1,2,…,n},即R是由n维元组组成的集合,其中每个元组的第i个元素取自集合Ai,称R为定义在A1、A2、…、An上的一个n元关系,A1、A2、…、An称为R的属性,(a1,a2,…,an)称为R的一个元组。 关系是一个集合,其组成元素是元组而不是组成元组的元素。

2.2.2 关系运算

1.并 设A、B同为n元关系,则A、B的并也是一个n元关系,记作A∪B。

2.交 设A、B同为n元关系,则A、B的交也是一个n元关系,记作A∩B。A∩B包含了所有同属于A、B的元组。

3.差 设A、B同为n元关系,则A、B的差也是一个n元关系,记作A-B。A-B包含了所有属于A但不属于B的元组。

4.笛卡尔积

笛卡尔积(Cartesian Product)是集合论中的一个概念,用于描述两个集合之间所有可能的组合。如果有两个集合A和B,其笛卡尔积记作A × B,表示由所有形如(a, b)的有序对组成,其中a属于集合A,b属于集合B。

具体来说,如果集合A有m个元素,集合B有n个元素,那么它们的笛卡尔积A × B将包含m × n个有序对。每个有序对可以看作是从A和B中分别取一个元素组成的。

例如,假设集合A = {1, 2},集合B = {a, b, c},它们的笛卡尔积 A × B 将包含6个有序对: {(1, a), (1, b), (1, c), (2, a), (2, b), (2, c)}

笛卡尔积不仅可以应用于两个集合之间的操作,还可以用于多个集合之间的操作。例如,如果有三个集合A、B、C,它们的笛卡尔积 A × B × C 将包含A、B、C中元素的所有三元组的组合。

  • 笛卡尔积的任意一个子集称为笛卡尔积上的n元关系

  • 形式化的关系定义同样可以把关系看成二维表,给表的内一列去一个名字为属性

  • 属性的名字是唯一的

  • 属性的取值范围称为属性的值域

  • 关系是一个具有k个属性的元组的集合

4.关系

笛卡尔积的子集在域上的关系,表示为R

关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它使用对关系的运算来表达的。

5.连接 设A是一个包含m个元组的k1元关系,B是一个包含n个元组的k2元关系,则A、B的连接是一个包含m×n个元组的k1+k2元关系,记作A×B。

6.投影 设 R=R(A1,A2,…,An)是一个n元关系,{i1,i2,…,im}是{1,2,…,n}的一个子集,并且 i1<i2<…<im,定义:称π(R)是R在上的一个投影。

7.选择 设 R={(a1,a2,…,an)}是一个n元关系,S是关于(a1,a2,…,an)的一个条件,R中所有满足S条件的元组组成的子关系S(R),称为R的一个选择。

8.除法 给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须取自相同的集合。R与S的除法运算的结果是一个只含属性组X的新的关系。定义:R÷S={t|t∈πX(R)且t×πY(S)

2.3 关系的规范化理论
2.3.1 函数依赖的基本概念

定义1 设R=R(A1,A2,…,An)是一个关系模式(A1,A2,…,An是R的属性),X∈{ A1,A2,…,An },Y∈{ A1,A2,…,An },即X和Y是R的属性子集,T1、T2是R的两个任意元组,即T1=T1(A1,A2,…,An),T2=T2(A1,A2,…,An),如果当T1(X)=T2(X)成立时,总有T1(Y)=T2(Y),则称X决定Y,或称Y函数依赖于X。记为:X→Y。

定义2 R,X,Y如定义1所设,如果X→Y成立,但对X的任意真子集X1,都有X1→Y不成立,称Y完全函数依赖于X,否则,称Y部分函数依赖于X。定义3 设X,Y,Z是关系模式R的不同属性集,若X→Y(并且Y→X不成立),Y→Z,称X传递决定Z,或称Z传递函数依赖于X。

2.3.2 关系模式的范式

1.主属性与非主属性

  1. 候选关键属性和关键属性

    定义4 设关系模式R(A1,A2,…,An),A1,A2,…,An是R的属性,X是R的一个属性集,如果① X→(A1,A2,…,An),② 对于X的任意真子集X1,X1→(A1,A2,…,An)都不成立,则称属性集X是关系模式R的一个候选关键属性。

    如果关系模式R只有一个候选关键属性,称这惟一的候选关键属性为关键属性,否则,应从多个候选关键属性中指定一个作为关键属性。

  2. 主属性和非主属性

    定义5 设Ai是关系模式R的一个属性,若Ai属于R的某个候选关键属性,称Ai是R的主属性,否则,称Ai为非主属性。

2.第1范式

定义6 当关系模式R的所有属性都不能分解为更基本的数据单位时,称R是满足第1范式的,简记为1NF。

例如,如果关于员工的关系中有一个工资属性,而工资又由更基本的两个数据项基本工资和岗位工资组成,则这个员工的关系模式就不满足1NF。

3.第2范式

定义7 如果关系模式R满足第1范式,并且R的所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第2范式,简记为2NF。

4.第3范式

定义8 设R是一个满足第1范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第3范式,简记为3NF。

5.Boyce-Codd范式

定义9 设R是一个关系模式,若R的每一个函数依赖关系的左部都是R的一个候选关键字,称R满足Boyce-Codd范式,简记为BCNF。

BCNF是比3NF更强的规范(证明略),即符合BCNF条件的关系模式一定符合3NF条件,但反过来却不成立。

2.3.3 关系模式的分解

1.关系模式分解的一般问题 就是对原有关系在不同的属性上进行投影,从而将原有关系分解为两个或两个以上的含有较少属性的多个关系。

2.3NF分解

(1)如果R不满足1NF条件,先对其分解,使其满足1NF。对R进行1NF分解的方法不是采用投影,而是直接将其复合属性进行分解,用分解后的基本属性集取代原来的属性,以获得1NF。

(2)R符合1NF条件但不符合2NF条件时,分解R使其满足2NF。

2.4 关系模型的完整性约束

1.实体完整性

就是一个关系模型中的所有元组都是惟一的,没有两个完全相同的元组,也就是一个二维表中没有两个完全相同行,也称为行完整性。

2.参照完整性

当一个数据表中有外部关键字(即该列是另外一个表的关键字)时,外部关键字列的所有值,都必须出现在其所对应的表中,这就是参照完整性的含义 。

3.用户定义完整性

一是针对关系的一个属性列的,二是针对多个属性的。

2.5 数据库的设计方法
2.5.1 数据库设计过程
  • 数据库设计过程一般包括:

    (1)需求分析

    (2)概念设计

    (3)逻辑设计

    (4)物理设计

    (5)实施与维护

2.5.2 E-R模型及其到关系模型的转化

1.独立实体到关系模型的转化

一个独立实体转化为一个关系模型(即一张关系表),实体码转化为关系表的关键属性,其他属性转化为关系表的属性,注意根据实际对象属性情况确定关系属性的取值域。

2.1:1联系到关系模型的转化

在转化这种联系时,只要在两个实体关系表中各自增加一个外部关键字即可。

3.1:n联系到关系模型的转化

要转化1:n联系,需要在n方(即1对多关系的多方)实体表中增加一个属性,将对方的关键字作为外部关键字处理即可。

4.m:n联系到关系模型的转化

一个m:n联系要单独建立一个关系模式,分别用两个实体的关键字作为外部关键字。

5.多元联系到关系模型的转化

多元联系即该联系涉及两个以上的实体。例如一个课程表,涉及班级、课程、教师、教室等4个实体。

  • 例如一个课程表,涉及班级、课程、教师、教室等4个实体。转化时,应建立一个单独的关系表,将该联系所涉及的全部实体的关键字作为该关系表的外部关键字,再加上适当的其他属性,得到关系模式如下: 课程表(班号,课程号,教师号,教室号,周次)。

6.自联系到关系模型的转化

自联系指同一个实体类中实体间的联系。例如一个公司的所有员工组成的实体类中,员工中存在领导与被领导这样的联系。

2.5.3 数据库设计实例
1.问题概述

该系统数据模型包含的数据实体有:

  • (1)供应商(Supplier):为该公司提供商品的公司。

  • (2)商品(Goods):该公司经营的商品。

  • (3)客户(Customer):该公司提供服务的厂家。

  • (4)员工(Employee):该公司的员工。

  • (5)运输商(Transporter):为该公司提供运输服务的公司。

  • (6)销售订单(Sell_Order):该公司与用户签定的销售合同。

  • (7)采购订单(Purchase_Order):该公司与供应商签定的采购合同。

2.数据实体的E-R图

这个实例包含的数据实体较多,联系较复杂,常常用一种E-R图的变形图来描述。实体及其属性用一个矩形框描述,实体名称标注在矩形框的顶部,实体关键字用*标出,并紧跟在实体名称后面,实体属性依次标注。实体间的联系省略菱形框,只用连线,并在连线的两端标注联系类型。

3.数据表设计示例 以员工、销售订单、商品以及部门4个数据实体及其相互间的联系为例,说明这种转换过程。

  • (1)“员工”实体到关系模式的转换“员工”实体与“销售订单”实体间有一个1:n的联系,与“部门”实体间有一个n:1的联系,为描述这种联系,需要增加一个外部关键字Department_ID。

  • (2)“销售订单”实体到关系模式的转换“销售订单”实体与“客户”等4个实体具有n:1的联系,为描述这种联系,需要增加4个外部关键字(实体中已列出了这4个外部关键字)。

  • (3)“商品”实体到关系模式的转换“商品”实体与“销售订单”实体及“采购订单”实体间有1:n的联系,与“商品规格”实体有n:1的联系。

  • (4)“部门”实体到关系模式的转换“部门”实体与“员工”实体有1:n的联系。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值