关系模型的数据结构
关系模型的数据结构单一,是一种二维表格结构。
关系数据库的数据操作
关系数据库所使用关系语言班的特点是高度非过程化,即用户只需说明"做什么"而不必说明"怎么做"。用户不必请求数据库管理员为其建立特殊的存取路径,存取路径的选择是由DBMS(数据库管理系统)自动完成的。这也是关系数据库的主要优点之一。
早期关系操作有两种表示方式:关系代数与关系演算。理论上,关系代数和关系演算被证明是完全等价的。
关系代数通过对关系的运算来表达查询,其操作对象是关系,操作结果亦为关系。关系代数的运算可分为两类。下面通过关系代数来说明关系操作是如何实现的。
传统的集合操作
传统的集合操作包括并、交、差、广义笛卡儿积等。这类操作将关系看作元组的集。其操作是从关系的水平方向,即是对关系的行来进行的。
设关系R和关系S具有相同数目的属性列(n列属性),并且相应的属性取自同一个域,则可定义以下四种集合运算:
* 并(Union)
关系R与关系S的并,它是属于R或属于S的元组组成的集合,结果为n列属性的关系。
* 交(Intersection)
关系R与关系S的交,它是既属于R又属于S的元组组成的集合,结果为n列属性的关系。
* 差(Difference)
关系R与关系S的差,它是属于R而不属于S的元组组成的集合,结果为n列属性的关系。
* 广义笛卡儿积(Extended cartesian product)
关系R(假设为n列)和关系S(假设为m列)的广义笛卡儿积是一个(n+m)列元组的集合,每一个元组的前n列是来自关系R的一个元组,后m列是来自关系S的一个元组。若R有K1个元组,S有K2个元组,则关系R和关系S的广义笛卡儿积有K1*K2个元组。
专门的关系操作
包括选择、投影、连接等。这类操作不仅涉及行,而且也涉及列。
* 选择(Selection)
选择操作是指在关系中选择满足某些条件的元组。例如要在学生基本信息中找出年龄为24岁的所有学生数据,就可以对学生基本信息表做选择操作,条件是年龄为24岁。
* 投影(Projection)
投影操作是在关系中选择某些属性列。例如,找出所有老师的姓名、电话,则可以对教师基本信息表做投影操作,将表数据投影到教师名和电话列。
* 连接(Jion)
连接操作是从两个关系的笛卡儿积中,选取属性间满足一定条件的元组。连接条件中的属性称为连接属性,两个关系中的连接属性应该是可比的,即是同一类的数据类型。连接条件中的算符为算术比较运算符,当此算符取"="时,为等值连接。若等值连接中连接属性为相同属性(或属性组),且在结果关系中去掉重复组,则此等值连接为自然连接。自然连接是最常用的连接操作。
关系模型的完整性
关系模型中的完整性是指数据库中数据的正确性和一致性。数据完整性由数据完整性规则来维护,包括实体完整性和参照完整性规则。当然任何给定数据库中还要包括与应用有关的完整性规则。这类完整性规则并不是关系模型特有的,将其称为用户定义的完整性规则。
1、实体完整性规则
实体完整性是指:关系的主属性,即主码的组成不能为空,也就是关系的主属性不能是空值,在关系系统中一个关系通常对应一个表。在机器上实际存储数据的表称为基本表,除此之外的查询结果表是临时表,视图表是虚表,是不实际存储数据的表,而实体完整性是针对基本表的。因此,具体地讲,实体完整性是指在实际存储数据的基本表中,主属性不能取空值。
定义实体完整性的必要性是:关系对应于现实世界中的实体,而现实世界中实体可区分的。也就是说每个实体具有唯一性标志,在关系模型中,只有主码做唯一标志的。若主码为空值,则说明这个实体无法标志,即不可区分,这显然是错误的,与现实世界应用环境矛盾,因此不存在这样的不可标志实体,从而引入实体完整性的概念。
如所定义的实体是"学生-系",由于其主码是组合属性(学号,系名),则该实体的任意元组中,学号和系名这两个属性的值均不能为空值,否则就违反了实体完整性要求。
2、参照完整性规则
参照完整性的定义:如果基本关系R2的属性中,包含与另一个基本关系R1的主码K相对应的属性组F,那么F则称为外部码;对R2每个元组在F上的取值只能只允许两种可能:一是空值;二是等于R1中某个元组的主码值。这里R1和R2不一定是不同的关系;K与F是定义在同一域中的。
举一个实例,教职工关系(职工号,职工名,工资,部门号)和部门关系(部门号,部门名),其中部门关系中的部门号是主码,职工关系中,对每个职工也有部门号这一项,表明这个职工是在哪个部门工作的。职工关系中的部门号属性和部门关系中的部门号属性相对应,职工关系中部门号则是外部码。
从上面的例子可以看到:在职工关系中部门号一项,要么取空值,表示这个职工还未分配到任何一个部门工作;要么取值必须和部门关系中某个元组的部门号相同,表示这个职工分配到某个部门工作。这就是参照完整性。上例中若是教职工关系中某个职工的部门号取值不能与部门关系中任何一个元组的部门号一致,表示这个职工被分配到不属于这个单位的部门工作,这与实际应用环境是不相符的,显然是错误的。这就是为什么关系模型中定义了参照完整性约束规则。
在参照完整性定义中,还注明R1、R2不一定是不同的关系。现再给出一个同一关系的实例:若有教职工关系(职工号,职工名,系主任-职工号,工资),其中职工号是主码。系主任的职工号是外部码,它与本关系职工关系中主码职工号相对应,系主任职工号的取值要么为空值,表示这个系还未任命主任;要么等于职工关系中某个职工号。
实体完整性与参照完整性是由系统自动支持的,即:在建立关系(表)时只要说明了"谁是主码","谁参照于谁",系统将自动进行此类完整性的检查。
3、用户定义的完整性规则
用户定义的完整性规则是针对某一应用环境的完整性约束条件,他反映了某一具体应用所涉及的数据应满足的要求。系统提供定义和检验这类完整性规则的机制,其目的是用统一的方式由系统来处理它们,不在有应用程序来完成这项工作。
在实际系统中,这类完整性规则一般在建立库表的同时进行定义,应用程序人员不需再做考虑。如果某些约束条件没有建立在库表一级,则应用编程人员应在各模块的具体编程中通过程序进行检查和控制。
分享到:
相关推荐
数据库管理工具,数据库模型创建工具,内包含“Navicat Data Modeler”
NodeJS数据库模型建模工具源码 NodeJS数据库模型建模工具源码 NodeJS数据库模型建模工具源码 NodeJS数据库模型建模工具源码 NodeJS数据库模型建模工具源码 NodeJS数据库模型建模工具源码 NodeJS数据库模型...
没事整理商城数据模型互相学习学习,产品已经成功发布,网上商店数据库模型和后台数据关系表,可以积分、购物车。
分析与设计数据库模型的简单过程,欢迎大家来下载,呵呵!
关系数据库模型的实质,深入解析关系型数据库的原理。并产述数据库和数据结构之间的关系
11 HANA数据库模型备份 11.1 自建表备份 登录HANA Studio,在Catlog下展开需要导出自建表的用户(如DYDEV400),选择需要导出的表,右击,选中"Export" 1、 2、 HANA数据库操作-HANA数据库模型备份全文共7页,当前为...
crm 数据库模型
数据库模型设计规范
Python pymysql dbmodelClass数据库模型封装类(python version 3.7)
PowerDesigner16.5中文教程-数据库模型操作教程.docx
用ERWin创建数据库模型用ERWin创建数据库模型用ERWin创建数据库模型
数据库模型数据库模型
PowerDesigner16.5中文教程-数据库模型操作教程. 1、 创建概念数据模型、2、 创建物理数据模型 三、 数据模型转换、四、 导入导出sql脚本、五、 由物理模型生成对象模型,并生成相应的get、set方法、六、 建立索引、...
本项目是基于Node.js开发的PDMan开源数据库模型建模工具设计源码,主要使用JavaScript进行开发。项目共包含259个文件,其中JavaScript源代码文件92个,CSS样式文件83个,LESS样式文件33个,PNG图片文件14个,JSON...
空间数据库模型概念与结构研究,空间数据库模型概念与结构研究,空间数据库模型概念与结构研究
3、 物理数据模型 (PDM) (PHYSICAL DATA MODEL)-最主要和常用的数据库模型 4、 面向对象模型 (OOM) (OBJCET ORIENTED MODEL) 5、 业务程序模型 (BPM) (BUSINESS PROCESS MODEL) 6、 信息流模型(ILM) 7、 ...
compiere 数据库模型用相应工具打开即可
模型种类 一般在建立数据库模型时,会涉及到几种模型种类:概念模型、逻辑模型、物理模 型。数据库设计中概念模型和逻辑模型区别比较模糊,所以在数据库设计工具ERWIN中只 提供了逻辑模型和物理模型,而在...
反射机制与抽象工厂结合多数据库模型源码 1、本程序为.NET的反射机制与抽象工厂结合开发的多数据库系统模型! 2、在本系统中,集合了SQL Server、Mysql、Oracle、DB2、Access数据库的不同连接方式。实现了切换数据库...
库存管理数据库模型库存管理数据库模型