本文主要讲解了关系型数据库的相关知识,涉及关系数据模型和关系的知识
数据模型是一组集成的概念,用于描述和操作组织内的数据、数据间的联系,以及对数据的约束。
数据模型是数据库系统的核心和基础。各种机器上实现的DBMS软件都是基于某种数据模型
数据结构是对系统静态特征的描述,数据操作是对系统动态特性的描述。
数据结构是:
1.与数据类型、内容、性质有关的对象,如网状模型中的数据项、记录,关系模型中的域、属性、关系等
2.与数据之间联系有关的对象 ,如网状模型中的系型(Set Type)
数据操作是指对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则
数据库主要有检索和更新两大类操作。
数据的约束条件是一组完整性规则的集合
数据模型应该反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。此外,数据模型还应提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件
关系实例是由命名的若干列和行组成的表格。
要强调的是:
一般情况下,关系指代实例。
关系模式是对关系的描述。关系模式通常可以简记为:
R ( U ) 或 R ( A 1 , A 2 , … , A n ) R (U) 或 R (A1,A2,…,An) R(U)或R(A1,A2,…,An)
关系模式可以形式化地表示为:
R ( U , D , d o m , F ) R(U,D,dom,F) R(U,D,dom,F)
R 关系名
U 组成该关系的属性名集合
D 属性组U中属性所来自的域
dom 属性向域的映象集合,常常直接说明为属性的类型、长度
F 属性间的数据依赖关系集合
在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。
因为关系由两部分组成,所以关系数据库也是由两部分组成,即关系模式的集合及对应的关系实例的集合。
关系模式的集合称为数据库模式,对应的关系实例的集合称为数据库实例。
表中的一行,表示一个实体,关系是由元组组成的。
表中的每一列在关系中称为属性,每个属性都有一个属性名,属性值则是各元组属性的取值。
属性的取值范围称为域。同一属性只能在相同域中取值。
元组中的一个属性值。
关系中能唯一区分不同元组的属性或属性组合,称为关系的一个键,或者称为关键字、码。关键字的属性值不能取“空值”。
关系中能够成为关键字的属性或属性组合可能不是唯一的。凡在关系中能够唯一区分确定不同元组的属性或属性组合,称为候选健。
其中:
包括在候选键中的属性称为主属性,不包括在候选键中的属性称为非主属性。
当一个关系中有多个候选健的时候,则从中选定一个作为关系的主键
关系中主键是唯一的。每个关系中有且只有一个主键。
关系中某个属性或属性组合并 非该关系的键,但却是另一个关系的主键,称此属性或属性组合组合为本关系的外键。
关系模型中常用的关系操作包括两类:
1.检索(查询)
2.更新(插入、删除和修改)
用户可以通过关系语言来完成对数据的各种操作。可用讲关系语言理解为一个个库函数,或者是命令行的指令
分为三大类:
1.数据模型中固有的约束
2.可以在数据模型的模式中直接表述的约束
3.不能在数据模型的模式中直接表述的约束
1.关系模型与非关系模型不同,它是建立在严格的数学概念的基础上的。
2.数据结构简单、清晰。
3.更高的数据独立性,更好的安全保密性。
4.丰富的完整性。
1.对“现实世界”实体的表达能力弱。
2.由于存取路径对用户透明(即用户无法直接获取存取路径),查询效率往往不如非关系数据模型。
3.关系模型只有一些固定的操作集。
4.不能很好的支持业务规则。
域是一组具有相同数据类型的值的集合。
例如:
1. 自然数、整数、实数
2. 长度小于25字节的字符串
3. 指定长度的字符串的集合
4. {‘男’,‘女’}
若 D i ( i = 1 , 2 , … , n ) 为有限集,其基数为 m i , i = 1 , 2 , … , n ) , 则 D 1 × D 2 × … × D n 的基数 M 为: 若D_i(i=1,2,…,n)为有限集,其基数为m_i,i=1,2,…,n),则D_1\times D_2\times …\times D_n的基数M为: 若Di(i=1,2,…,n)为有限集,其基数为mi,i=1,2,…,n),则D1×D2×…×Dn的基数M为:
M = ∏ i = 1 n m i M=\prod_{i=1}^{n}m_i M=i=1∏nmi
给定一组域 D 1 , D 2 , … , D n ,允许其中某些域是相同的。 给定一组域D_1,D_2,…,D_n,允许其中某些域是相同的。 给定一组域D1,D2,…,Dn,允许其中某些域是相同的。
那么: D 1 , D 2 , … , D n 的笛卡尔积为 D_1,D_2,…,D_n的笛卡尔积为 D1,D2,…,Dn的笛卡尔积为:
D 1 × D 2 × … × D n = { ( d 1 , d 2 , … , d n ) ∣ d i ∈ D i , i = 1 , 2 , … , n } D_1\times D_2\times …\times D_n =\{(d_1,d_2,…,d_n)|d_i\in D_i,i=1,2,…,n\} D1×D2×…×Dn={(d1,d2,…,dn)∣di∈Di,i=1,2,…,n}
其中每一个元素 ( d 1 , d 2 , … , d n ) (d_1,d_2,…,d_n ) (d1,d2,…,dn)叫作一个n元组,元组中每一个值 d i d_i di叫做一个分量。
笛卡儿积是所有域的所有取值的一个集合,分量不能重复
笛卡尔积可表示为一张二维表,表中的每行对应一个元组,表中的每列对应一个域
例如,给出3个域:
D 1 = 导师集合 S U P E R V I S O R = { 张清玫,刘逸 } D 2 = 专业集合 S P E C I A L I T Y = { 计算机专业,信息专业 } D 3 = 研究生集合 P O S T G R A D U A T E = { 李勇,刘晨,王敏 } D_1=导师集合SUPERVISOR=\{张清玫,刘逸\}\\ D_2=专业集合SPECIALITY=\{计算机专业,信息专业\}\\ D_3=研究生集合POSTGRADUATE=\{李勇,刘晨,王敏\} D1=导师集合SUPERVISOR={张清玫,刘逸}D2=专业集合SPECIALITY={计算机专业,信息专业}D3=研究生集合POSTGRADUATE={李勇,刘晨,王敏}
D 1 , D 2 , D 3 D_1,D_2,D_3 D1,D2,D3的笛卡尔积为:
D = D 1 × D 2 × D 3 = { ( 张清玫,计算机专业,李勇 ) , ( 张清玫,计算机专业,刘晨 ) , ( 张清玫,计算机专业,王敏 ) , ( 张清玫,信息专业,李勇 ) , ( 张清玫,信息专业,刘晨 ) , ( 张清玫,信息专业,王敏 ) , ( 刘逸,计算机专业,李勇 ) , ( 刘逸,计算机专业,刘晨 ) , ( 刘逸,计算机专业,王敏 ) , ( ( 刘逸,信息专业,李勇 ) , ( ( 刘逸,信息专业,刘晨 ) , ( ( 刘逸,信息专业,王敏 ) } D=D_1\times D_2\times D_3=\\ \{ (张清玫,计算机专业,李勇),\\(张清玫,计算机专业,刘晨),\\ (张清玫,计算机专业,王敏),\\(张清玫,信息专业,李勇),\\ (张清玫,信息专业,刘晨),\\(张清玫,信息专业,王敏),\\ (刘逸,计算机专业,李勇),\\(刘逸,计算机专业,刘晨),\\ (刘逸,计算机专业,王敏),\\((刘逸,信息专业,李勇),\\( (刘逸,信息专业,刘晨),\\((刘逸,信息专业,王敏) \} D=D1×D2×D3={(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),(刘逸,计算机专业,王敏),((刘逸,信息专业,李勇),((刘逸,信息专业,刘晨),((刘逸,信息专业,王敏)}
基数为
| D 1 | × | D 2 | × | D 3 | = 2 × 2 × 3 = 12 |D_1|\times|D_2|\times|D_3|= 2\times2\times3=12 |D1|×|D2|×|D3|=2×2×3=12
转换成表为:
D 1 × D 2 × … × D n 的子集叫作在域 D 1 , D 2 , … , D n 上的关系 D_1×D_2×…×D_n的子集叫作在域D_1,D_2,…,D_n上的关系 D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为:
R ( D 1 , D 2 , … , D n ) R(D_1,D_2,…,D_n) R(D1,D2,…,Dn)
R:关系名
n:关系的目或者度(Degree)
关系中的每个元素是关系中的元组,通常用t表示。
当n=1时,
称该关系为单元关系(Unary relation),或者一元关系
当n=2时,
称该关系为二元关系(Binary relation)
关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域
一个关系通常有如下性质:
1.有一个关系名,并且跟关系模式中所有其他关系不重名
2.每一个单元格都包含且仅包含一个原子值(1NF)
3.每个属性都有一个不同的名字
4.同一属性中的各个值都取自相同的域
5.各个元组互不相同,不存在重复元组
6.属性的顺序并不重要
7.理论上讲,元组的顺序并不重要
关系模式:
是型
对关系的描述
静态的、稳定的
关系:
是值
关系模式在某一时刻的状态或内容
动态的、随时间不断变化的
关系数据库模式S包含关系模式的集合 S = { R 1 , R 2 , … , R m } S=\{ R_1,R_2,…,R_m\} S={R1,R2,…,Rm}和完整性约束的集合IC。
下表显示了一个关系数据库模式,记做HIS={Dept,Doctor,Patient,Diagnosis}。
关系数据库的型:关系数据库模式,是对关系数据库的描述
关系数据库的值:关系模式在某一时刻对应的关系的集合,通常称为关系数据库
有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成
有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理
1.代表当前不知道或是对这个元组不可用的一个属性值。
2.空是处理不完整或异常数据的一种方法。
3.空并不等于零值或空格所组成的字符串 。
规则如下:
1. 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
2. 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
3. 关系模型中以主码作为唯一性标识。
4. 主码中的属性即主属性不能取空值
在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用。
例如:
学生(学号,姓名,性别,专业号,年龄)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码
基本关系R称为参照关系(Referencing Relation)
基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation)
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
或者取空值( F的每个属性值均为空值)
或者等于S中某个元组的主码值。
用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能
文章的不妥之处请读者包涵与指正