这是我参与8月更文挑战的第30天,活动详情查看:8月更文挑战
一 相关概念
1.1 数据库系统DBS的组成
- 数据库
- 硬件
- 软件
- 人员。
1.2 数据库管理系统DBMS的功能
- 数据定义
- 数据库操作
- 数据库运行管理
- 数据的存储管理
- 数据库的建立和维护等。
1.3 DBMS的分类
- 关系数据库系统RDBS
- 面向对象的数据库系统00DBS
- 对象关系数据库系统ORDBS。
1.4 数据库系统的体系结构
- 集中式数据库系统(所有东西集中在DBMS电脑上)
- 客户端/服务器体系结构(客户端负责请求和数据表示,服务器负责数据库服务)
- 并行数据库系统(多个物理上在一起的CPU)
- 分布式数据库系统(物理上分布在不同地方的计算机)。
二 三级模式一两级映像
2.1 内模式
管理如何存储物理的数据,对数据的存储方式、优化、存放等。
2.2 模式
又称为概念模式,就是我们通常使用的表这个级别,根据应用、需求将物理数据划分成一张张表。
2.3 外模式
对应数据库中的视图这个级别,将表进行一定的处理后再提供给用户使用,例如,将用户表中的用户名和密码组成视图提供给登录模块使用,而用户表中的其他列则不对该模块开放,增加了安全性。
2.3.1 外模式-模式映像
是表和视图之间的映射,存在于概念级和外部级之间,若表中数据发生了修改,只需要修改此映射,而无需修改应用程序。
2.3.2 模式-内模式映像
是表和数据的物理存储之间的映射,存在于概念级和内部级之间,若修改了数据存储方式,只需要修改此映射,而不需要去修改应用程序。
2.3 分层图
以上的数据库系统实际上是一个分层次的设计,从底至上称为物理级数据库(实际为一个数据库文件)、概念级数据库、用户级数据库,各层情况如下:
三 数据库的设计
- 需求分析:即分析数据存储的要求,产出物有数据流图、数据字典、需求说明书。
- 概念结构设计:就是设计E-R图,也即实体-联系图,与物理实现无关,就是说明有哪些实体, 实体有哪些属性。
- 逻辑结构设计:将E-R图,转换成关系模式,也即转换成实际的表和表中的列属性,这里要考虑很多规范化的东西。
- 物理设计:根据生成的表等概念,生成物理数据库。 具体各个设计阶段的产出物、要求等如下所示:
四 E-R模型
- 使用椭圆表示属性(一般没有)
- 长方形表示实体
- 菱形表示联系,联系的两端要填写联系类型,示例如下图:
4.1 数据模型的三要素
- 数据结构
- 数据操作
- 数据的约束条件。
4.2 联系类型
- 一对一1:1
- 一对多1:N
- 多对多M:N
4.3 属性分类
- 简单属性
- 复合属性(属性是否可以分割)
- 单值属性
- 多值属性(属性有多个取值)、
- NULL属性(无意义)
- 派生属性(可由其他属性生成)。
4.4 E-R模型如何转换为关系模型
- 实际就是转换为多少张表?
- 每个实体都对应一个关系模式;
- 联系分为三种:
- 1:1联系中,联系可以放到任意的两端实体中,作为-一个属性(要保证1:1的两端关联);
- 1:N 的联系中,联系可以单独作为-一个关系模式,也可以在N端中加入1端实体的主键;
- M:N的联系中,联系必须作为-一个单独的关系模式,其主键是M和N端的联合主键。
- 以上,明确了有多少关系模式,就知道有多少张表,同时,表中的属性也确定了,注意联系是作为表还是属性,若是属性又是哪张表的属性即可。
五 关系代数运算
关系模式在代数运算时可以理解为数据库中的表,两个概念通用。
5.1 自然连接
5.2 选择 投影 笛卡尔积
- 笛卡尔积: S1S2, 产生的结果包括S1和S2的所有属性列,并且S1中每条记录依次和S2中所有记录组合成一条记录, 最终属性列为S1+S2属性列,记录数为S1S2记录数。
- 投影:实际是按条件选择某关系模式中的某列,列也可以用数字表示。
- 选择:实际是按条件选择某关系模式中的某条记录。设有S1和S2关系如下图,其笛卡尔积、投影、选择结果如下图:
5.2 并 交 差
- 并:结果是两张表中所有记录数合并,相同记录只显示一次。
- 交:结果是两张表中相同的记录。
- 差: S1-S2,结果是S1表中有而s2表中没有的那些记录。
5.3 自然连接:⋈
效率和笛卡尔积差不多,慢。 结果显示全部的属性列,但是相同属性列只显示一次,显示两个关系模式中属性相同且值相同的记录。自然联接结果如下:
效率问题:关系代数运算的效率,归根结底是看参与运算的两张表格的属性列数和记录数,属性列和记录数越少,参与运算的次数自然越少,效率就越高。因此,效率高的运算- -般都是在两张表格参与运算之前就将条件判断完。如:π1,2,3,8 ( σ 2='大数据'^1=5^3=6 ^8='开发平台' (RXS))和π 1,2,3,8 ( σ 1=5^3=6 ( σ2='大数据' (R) X σ 4='开发平台' (S)))。后者效率比前者效率高很多。
六 关系数据库的规范化
6.1 函数依赖
给定一个X,能唯一确定一个Y,就称X确定Y,或者说Y依赖于X,例如Y=X*X函数。 函数依赖又可扩展以下两种规则:
- 部分函数依赖: A可确定C,(A,B)也可确定C,(A,B)中的一 部分(即A)可以确定C,称为部分函数依赖。
- 传递函数依赖:当A和B不等价时,A可确定B, B可确定C,则A可确定C,是传递函数依赖; 若A和B等价,则不存在传递,直接就可确定C。
6.2 Armstrong公理系统
设∪是关系模式R的属性集,F是R上成立的只涉及U中属性的函数依赖集。函数依赖的推理规则有:
- 自反律:若属性集Y包含于属性集X,属性集X包含于U,则X→Y在R上成立。(此处X→Y是平凡函数依赖)
- 增广律:若X→γ在R上成立,且属性集Z包含于属性集U,则XZ→YZ 在R上成立。
- 传递律:若x→Y和Y→Z在R上成立,则X→z在R . 上成立。
- 合并规则:若x→Y,x→z同时在R.上成立,则X→YZ在R上也成立。
- 分解规则:若x→W在R上成立,且属性集Z包含于W,则X→Z在R.上也成立。
- 伪传递规则:若X→Y在R上成立,且WY→z,则XW→Z。
- 蕴含就是包含的意思。
6.3 键和约束
- 超键:能唯一标识此表的属性的组合。
- 候选键:超键中去掉冗余的属性,剩余的属性就是候选键。
- 主键:任选一个候选键,即可作为主键。
6.3.1 超键
比如一个小范围的所有人,没有重名的,考虑以下属性
身份证 姓名 性别 年龄
身份证唯一,所以是一个超键
姓名唯一,所以是一个超键
(姓名,性别)唯一,所以是一个超键
(姓名,性别,年龄)唯一,所以是一个超键
-
这里可以看出,超键的组合是唯一的,但可能不是最小唯一的
-
因为姓名和性别就唯一了,加上年龄,属于冗余的。
6.3.2 候选键
候选键要求是不能包含多余属性的超键 身份证唯一,而且没有多余属性,所以是一个候选键
姓名唯一,而且没有多余属性,所以是一个候选键
(姓名,性别)唯一,所以是一个候选键
--这里可以看出,候选键是没有多余属性的超键
考虑输入查询方便性,可以选择 身份证 为主键
也可以 考虑习惯 选择 姓名 为主键
6.3..3 主键
任选一个候选键,即可作为主键。
6.4 范式
6.4.1 第1范式
表中的每一个分量必须是一个不可分的数据项。通俗讲就是每一个属性都不可分割。
存在以下问题
- 数据冗余:一个系有很多的学生,同一个系的学生的系主任是相同的,所以系主任名会重复出现。
- 更新复杂:当一个系换了一个系主任后,对应的这个表必须修改与该系学生有关的每个元组。
- 插入异常:如果一个系刚成立,没有任何学生,那么这个无法把这个系的信息插入表中。
- 删除异常:如果一个系的学生都毕业了,那么在删除该系学生信息时,这个系的信息也丢了。
6.4.2 第2范式
就是在1NF的基础上,表中的每一个非主属性不会依赖复合主键中的某一个列。 当表中有多个主键时,称为复合主键,复合主键联合保证唯一索引”。
比如: 有6个属性, 1和2组合是复合主键、属性集、码,、候选键,1和2可以推导出3,4,5,6。如果单独的1也能推导出4,4没有完全依赖码12,所以不符合2NF。
6.4.3 第3范式
符合2NF,并且消除了传递依赖。
,比如: 1,2,3 , 主码1->2, 如果 2 -> 3, 说明 1->3也是成立的, 3被2个属性函数依赖了,所以不符合3NF。