数据库系统概论笔记(一)
一、绪论
1.1 数据模型
1.1.1 数据模型概述
- 数据模型是严格定义的一组概念,精确的描述了系统的静态特性、动态特性和完整性约束
- 组成要素
- 数据结构:描述系统的静态特性,即组成数据库的对象类型
- 数据操作:描述系统的动态特性,即对数据库中对象的实例允许执行的操作的集合,包括操作及操作规则
- 数据的约束条件:数据的约束条件是完整性规则的集合,规定数据库状态及状态变化所应满足的条件,以保证数据的正确、有效
- 类型
- 概念模型
- 层次模型
- 网状模型
- 关系模型
1.1.2 实体-联系模型(E-R模型)
- 基本概念
- 世界是由一组称作实体的基本对象和这些对象之间的联系构成的
- 实体(Entity):客观存在并可相互区别的人、事物、事件和概念
- 属性(Attribute):实体具有的特性
- 码(Key、实体标识符):唯一标识实体的属性集
- 域(Domain):属性的取值范围
- 实体型(Entity Type):用实体名及其属性名集合来抽象刻画同类实体
- 实体集(Entity Set):同型实体的集合,如全体学生,全部的系
- 联系(Relationship):实体(型)内部的联系(组成实体的各属性间);实体(型)之间的联系(不同的实体集之间)
- 图形表示
- 矩形框 – 实体型
- 菱形框 – 联系类型
- 椭圆形框 – 实体型/联系类型的属性
- 直线 – 实体型与联系之间用直线相连,线旁标注联系的种类(1:1, 1:N, M:N)
- 实体集属性中作为主码的一部分的属性用下划线来标明
- 在1:N的联系中,联系集的主码是n端的主码
1.1.3 由E-R图到数据库设计
- E-R图的设计要点
- 确定实体:实体名、实体属性、实体码
- 确定联系:存在性联系、功能性联系、事件联系
- E-R图向关系模型的转换
- 实体→关系
- 属性→关系的属性
- 一对一联系→新的关系,属性为双方的码
- 一对一联系→与某一端关系合并,合并后在该端加入另一端关系的码和联系本身的属性,其码不变
- 多对多联系→新的关系,其属性为与该联系相连的各实体的码以及联系本身的属性,其码是与该联系相连的各实体的码的组合
- 一对多联系→新的关系,其属性为与该联系相连的各实体的码以及联系本身的属性,其码是n端实体的码
- 一对多联系→与n端关系合并,合并后在n端关系加入1端关系的码和联系本身的属性,n端关系的码不变
- 三个或三个以上实体间的多元联系→新的关系,其属性为与该多元联系相连的各实体的码以及联系本身的属性,其码是与该联系相连的各实体的码的组合
- 合并具有相同码的关系模式,并去除同义属性
- 从关系模型到数据库实施
- 定义数据库结构:表结构、视图
- 装载数据
- 编制与调试应用程序
- 数据库试运行
- 数据库运行与维护
1.1.4 关系模型
关系模型使用二维表来表示实体及其联系:行、列
- 用表格表示实体集,用列表示属性,表结构表示实体的型
- 用表间的特定冗余信息表示实体间的联系(主键、外键)
- 行、列无序
- 列不可再分
关系模型中的概念
- 关系:即通常说的表,用于表示实体以及实体间的联系
- 元组:表中的一行即为一个元组
- 属性:表中的一列即为一个属性
- 主码(key):图中的某个属性组,它可以唯一确定一个元组
- 域(domain):属性的取值范围
- 分量:元组中的一个属性值
- 关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,…,属性n)
1.2 数据库系统
- 数据库系统:由应用程序、DBMS、操作系统、硬件、人员(数据库管理员DBA)组成
- 数据库管理系统DBMS
- DB定义
- 操纵语言及编译程序
- DB运行控制程序
- 实用程序
二、关系数据库
2.1 关系数据结构
- 域:一组值的集合,这组值具有相同的数据类型
- 笛卡尔积
- 一组域$ D_1,D_2,\cdots,D_n $的笛卡尔积为:$ D_1\times D_2\times\cdots\times D_n = \{(d_1 , d_2 , \cdots, d_n)\vert d_i∈D_i , i=1,\cdots,n\} $
- 笛卡尔积的每个元素$ (d_1,d_2,\cdots,d_n) $称作一个$ n $元组
- 元组的每个值$ d_i $称为一个分量
- 若$ D_i $的基数为$ m_i $,则笛卡尔积的基数为$$ \prod\limits_{i=1}^{n}m_i $$
- 关系
- 笛卡尔积$ D_1\times D_2\times\cdots\times D_n $的子集叫做在域$ D_1,D_2,\cdots,D_n $上的关系,用$ R(D_1 , D_2 ,\cdots, D_n ) $表示
- 关系是笛卡尔积中有意义的子集
- 候选码
- 关系中的一个属性组,其值能唯一标识一个元组。
- 若从该属性组中去掉任何一个属性,它就不具有这一性质
- 主属性:任何一个候选码中的属性称作主属性
- 主码:从一个关系的多个候选码中选定一个作为主码
- 外部码:关系R中的一个属性组,它不是R的码,但它与另一个关系S的码相对应,则称这个属性组为R的外部码
- 关系模式
- 关系的描述称作关系模式,包括关系名、关系中的属性名、属性向域的映象、属性间的数据依赖关系等
- 关系模式是一个5元组$ R(U,D,Dom,F) $,其中R是关系名;U是关系的属性集合;D是U中属性所来自的域的集合;DOM是属性向域映射的集合;F是属性间的依赖关系集合
- 关系数据库
- 在一个应用领域内,用关系表示实体及其联系,关系的集合构成一个关系数据库
- 其型是关系模式的集合,即数据库描述,称作数据库的内涵(Intension)
- 其值是某一时刻关系的集合,称作数据库的外延(Extension)
2.2 关系的完整性
- 实体完整性:若属性A是基本关系R的主属性,则A不能取空值
- 参照完整性:如果关系$ R_2 $的外部码$ F_k $与关系$ R_1 $的主码$ P_k $相对应,则$ R_2 $中的每一个元组的$ F_k $值或者等于$ R_1 $中某个元组的$ P_k $值,或者为空值
- 用户定义的完整性:用户针对具体的应用环境定义的完整性约束条件
2.3 关系代数
关系代数是一种抽象的查询语言,通过对关系的运算来表达查询操作
基本概念
- 如果两个关系的属性数目相同,且各属性的域相同,则两个关系是相容的
- 元组的连串:若$ r=(r_1,r_2,\cdots,r_n) $,$ s=(s_1,s_2,\cdots,s_n) $则定义二者的连串$ \widehat{AB}=(r_1,r_2,\cdots,r_n,s_1,s_2,\cdots,s_n) $
- 给定关系模式$ R(A_1 , A_2 ,\cdots, A_n) $,设$ R $是它的一个具体的关系,$ t\in R $是关系的一个元组
- $ A=\{A_{i1},A_{i2},\cdots,A_{ik}\}\subseteq {A_a,A_2,\cdots,A_n} $是**属性列**,$ \overline{A} $表示$ {A_1,A_2,\cdots,A_n} $去掉$ A $后剩余的属性组
- $ t[A_i] $表示元组$ t $中相应于属性$ A_i $的一个**分量**
- $ t[A]=\{t[A_{i1}],t[A_{i2}],\cdots,t[A_{ik}]\} $表示元组$ t $在属性列$ A $上各分量的集合
- 给定关系$ R(X,Z) $,$ X $和$ Z $为属性组。当$ t[X]=x $时,$ x $在$ R $中的象集为:$ Z_X=\{t[Z]\vert t∈ R,t[X]=x\} $ ,它表示$ R $中属性组$ X $上值为$ x $的诸元组在$ Z $上分量的集合
集合运算符(进行集合运算的两个关系必须相容):并$ \cup $、交$ \cap $、差$ - $
关系运算符
笛卡尔积$ \times $
- 设两个关系R,S,其度分别为n,m,则它们的广义笛卡尔积为$ R\times S=\{\widehat{rs}\vert r\in R\land s\in S\} $
选择$ \sigma $
- $ \sigma_F(R)=\{t\vert t\in R\land F(t)=true\} $
- 即$ \sigma $运算的结果为满足条件F的元组集合
投影$ \Pi $
- $ \Pi_A(R)=\{t[A]\vert t\in R\} $,其中$ A $为$ R $的属性列
- 投影结果中要去掉相同的行
连接$ \Join $
- $ R\underset{A\Theta B}\Join S=\{\widehat{rs}|r\in R\land s\in S\land r[A]\Theta S[B]\} $
- $ R\underset{A\Theta B}\Join S=\sigma_{R[A]\Theta S[B]}(R\times S) $
即从两个关系的笛卡尔积中选取给定属性间满足一定条件的元组
等值连接:从两个关系的广义笛卡儿积中选取满足某一等值条件的元组,两个关系可以没有相同属性列
自然连接:特殊的等值连接,从两个关系的广义笛卡儿积中选取在相同属性列上取值相等的元组,并去掉重复的列
除$ ÷ $
- 设有关系$ R(X,Y) $和$ S(Y,Z) $,则$ R÷Z $可根据如下过程得到
- 在关系$ S $中对$ Y $做投影,得到$ \Pi_Y(Z) $
- 关系$ R $在属性列$ X $上作取消重复值的投影,得到$ \Pi_X(R) $
- 判断$ \Pi_X(R) $中$ x_i $的象集$ Y_i $是否包含$ \Pi_Y(Z) $,如果包含,则最终结果中包含$ x_i $
- 即$ R÷Z $表示【$ R $在$ X $上分量值$ x $的象集$ Y_x $包含$ S $在$ Y $上投影的集合】在$ X $属性列上的投影
比较运算符:<、≤、>、≥、≠、=
逻辑运算符:与$ \land $、或$ \lor $、非$ \lnot $
评论
匿名评论
评论条例