关系型数据库

关系型数据模型

关系模型是由若干个关系模式组成的集合,关系模式的实例称为关系,每个关系实际上是一张二维表格

基本概念

⑴关系(Relation):对应通常所说的一张表。

⑵元组(Tuple):表中的一行即为一个元组,可以用来标识实体集中的一个实体,表中任意两行(元组)不能相同;

⑶属性(Attribute):表中的一列即为一个属性,给每个属性起一个名称即属性名,表中的属性名不能相同。

⑷主键(Key):表中的某个属性组,它可以唯一确定一个元组。

⑸域(Domain):列的取值范围称为域,同列具有相同的域,不同的列也可以有相同的域。

⑹分量:元组中的一个属性值。

⑺关系模式:对关系的描述。可表示为:关系名(属性1,属性2,…,属性n)。例如上面的关系可以描述为:学生(学号,姓名,年龄,性别)

关系是一种规范化的二维表格

具有如下性质:

⑴属性值具有原子性,不可分解。
⑵没有重复的元组。
⑶理论上没有行序,但是使用时有时可以有行序。在关系数据库中,关键码(简称键)是关系模型的一个重要概念,是用来标识行(元组)的一个或几个列(属性)。如果键是唯一的属性,则称为唯一键;反之由多个属性组成,则称为复合键

键的主要类型

⑴超键:在一个关系中,能唯一标识元组的属性或属性集称为关系的超键。
⑵候选键:如果一个属性集能唯一标识元组,且又不含有多余的属性,那么这个属性集称为关系的候选键。
⑶主键:如果一个关系中有多个候选键,则选择其中的一个键为关系的主键。
⑷外键:如果一个关系R中包含另一个关系S的主键所对应的属性组F,则称此属性组F为关系R的外键,并称关系S为参照关系,关系R是依赖关系。

用主键可以实现关系定义中“表中任意两行(元组)不能相同”的约束。

例如,在一个数据库图书管理系统中,可将图书明细表中的图书编号列假设是唯一的,因为图书馆管理员是通过该编号对图书进行操作的。因此,把图书编号作为主键是最佳的选择,而如果使用图书名称列作为主键则会存在问题。为此,最好创建一个单独的键将其明确地指定为主键,这种唯一标识符在现实生话中很普遍,例如,身份证号、牌照号、订单号、学生标识号和航班号等。

外键为了表示关联,可以将一个关系的主键作为属性放入另外一个关系中,后者的那些属性就称为外键。

例如,同样是在图书管理系统数据库,有一个出版社表用来描述出版社的各种信息,如电话、地址和网址等,在该表中使用“出版社编号”作为主键。为了表示图书与出版社之间的联系,可以将出版社表中的主键“出版社编号”作为新列添加到图书明细表中。(一个表中的外键相当于是对这个属性内容的再扩充,因为由此可以唯一性查出另一张表的信息)

关系模型的完整性规则

关系模型的完整性规则是对数据的约束。关系模型提供了3类完整性规则:实体完整性规则、参照完整性规则和用户定义的完整性规则。其中实体完整性规则和参照完整性规则是关系模型必须满足的完整性的约束条件,称为关系完整性规则。

・实体完整性:指关系的主属性(主键的组成部分)不能是NULL。NULL就是指不知道或是不能使用的值,它与数值0和空字符串的意义都不一样。

・参照完整性:如果关系的外键R1与关系R2中的主键相符,那么外键的每个值必须在关系R2中主键的值中找到或者是空值。

・用户定义完整性:是针对某一具体的实际数据库的约束条件。它由应用环境所决定,反映某一具体应用所涉及的数据必须满足的要求。关系模型提供定义和检验这类完整性的机制,以便用统一、系统的方法处理,而不必由应用程序承担这一功能。

总结为三句话就是

  1. 主键非空
  2. 外键对应
  3. 属性合理

数据依赖与范式

关系模型的范式有第一范式、第二范式、第三范式和BCNF范式等多种。在这些定义中,高级范式根据定义属于所有低级的范式。第三范式中的关系属于第二范式,第二范式中的关系属于第一范式。下面介绍规范化的过程。

1. 第一范式

第一范式是第二范式和第三范式的基础,是最基本的范式。第一范式包括下列指导原则。

⑴数据组的每个属性只可以包含一个值。
⑵关系中的每个数组必须包含相同数量的值。
⑶关系中的每个数组一定不能相同。

如果关系模式R中的所有属性值都是不可再分解的原子值,那么就称此关系R是第一范式(First Normal Form,1NF)的关系模式。

在关系型数据库管理系统中,涉及的研究对象都是满足1NF的规范化关系,不是1NF的关系称为非规范化的关系。

例如,下图中的第四和第五行的2、3数组违反了第一范式,因为“商品编号”和“商品名称”属性每个都包含两个值。
在这里插入图片描述

如果要将这些数据规范化,就必须创建允许分离数据的附加表,这样才能使每个属性只包含一个值,每个数组包含相同数量的值,并且每个数组各不相同,如下图所示。这时的数据才符合第一范式。
在这里插入图片描述

2. 第二范式

第二范式(2NF)规定关系必须在第一范式中,并且关系中的所有属性依赖于整个候选键。候选键是一个或多个唯一标识每个数据组的属性集合。例如,在下图所示的关系中,可以将“商品名称”和“供应商”名称指定为候选键。这些值共同唯一标识每个数组。在该图中“,库存编号”属性只依赖于“商品名称”,而不依赖于“供应商名称”属性。
在这里插入图片描述

3. 第三范式

第三范式(3NF)同2NF一样依赖于关系的候选键。为了遵循3NF的指导原则,关系必须在2NF中,非键属性相互之间必须无关,并且必须依赖于键。例如,在下图所示的关系中,候选键“供应商代号”是属性。“商品名称”和“供应商名称”的属性都依赖于主键“库存编号”,并且相互之间进行关联。“供应商代号”属性依赖于“商品编号”,而不依赖于主键“库存编号”。
在这里插入图片描述
金融系统的应用最为突出。
5. Access
Access是在Windows操作系统下工作的关系型数据库管理系统。它采用了Windows程序设计理念,以Windows特有的技术设计查询、用户界面、报表等数据对象,内嵌了VBA(Visual Basic Application)程序设计语言,具有集成的开发环境。Access提供图形化的查询工具和屏幕、报表生成器,用户建立复杂的报表、界面无需编程和了解SQL语言,它会自动生成SQL代码。Access被集成到Office中,具有Office系列软件的一般特点,如菜单、工具栏等。与其他数据库管理系统软件相比,更加简单易学,普通的计算机用户即使没有程序语言基础,仍然可以快速地掌握和使用它。最重要的一点是,Access的功能比较强大,足以应付一般的数据管理及处理需要,适用于中小型企业数据管理的需求。当然,在数据定义、数据安全可靠、数据有效控制等方面,它比前面几种数据库产品要逊色不少。

MySQL数据库系统的体系结构

了解MySQL必须牢牢记住其体系结构图,MySQL是由SQL接口、解析器、优化器、缓存、存储引擎组成的,如下图所示。

在这里插入图片描述

⑴支持接口:是指不同语言中与SQL的交互。

⑵管理服务和工具:系统管理和控制工具。

⑶连接池:管理缓冲用户连接、线程处理等需要缓存的需求。

⑷SQL接口:接受用户的SQL命令,并且返回用户需要查询的结果,如select from就是调用SQL Interface。

⑸解析器:SQL命令传递到解析器的时候会被解析器验证和解析,解析器是由Lex和YACC实现的,是一个很长的脚本,其主要功能如下。
①将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的。
②如果在分解构成中遇到错误,那么就说明这个SQL语句是不合理的。

⑹查询优化器:SQL语句在查询之前会使用查询优化器对查询进行优化。它使用“选取→投影→连接”策略进行查询。用一个例子就可以理解:
select uid,name from user where gender = 1;
这个select查询先根据where语句进行选取,而不是先将表全部查询出来以后再进行gender过滤。
这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤。将这两个查询条件连接起来生成最终查询结果。

⑺缓存和缓冲池:查询缓存。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存、记录缓存、Key缓存、权限缓存等。

⑻存储引擎:存储引擎是MySQL中具体的与文件打交道的子系统。也是MySQL最具有特色的一个地方。从MySQL 5.5之后,InnoDB就是MySQL的默认事务引擎。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值