数据库精华知识点总结(1)—数据库的三层模式和二级映像,E-R(实体联系图)图,关系模型
Data base:
长期存储在计算机内,有组织的,可共享的大量数据集合。基本特征:永久存储,可共享,有一定的物理和逻辑结构。
Data base manage system(DBMS);用户和os之间的一层数据管理软件。
1、提供数据操纵语言DML对数据库增删改查
2、数据库的建立和维护
3、提供数据控制功能;在数据库建立,运行和维护时,DBMS管理数据的安全性,完整性,并发控制和故障的系统恢复,(也就是数据库的事务管理和运行管理)
4、与其它软件系统通信
Data base system(DBS);引入数据库的计算机系统。
数据库分几层,并简述,类似的问题很容易很容易考到,那就是关于据库系统的三级模式和两级映像的问题,这里系统的说下,包括它的作用和目的。
说到模式和映像,先说说DBS的结构;(两种角度看,分清楚条理)
1、从DBMS看;
DBS采用三级模式结构,那就是外模式,模式,内模式三级。这是DBMS的内部结构。主流DB在结构上都具有这三个相同的特征,即采用三级模式并且还提供两级映像功能。
那么到底什么是数据库里的模式(schema)呢?
模式也叫逻辑模式,是对DB中全体数据的逻辑结构和特征的总体描述,位于DBS的中间层,不关乎物理实现也不关乎应用程序或者程序语言,仅仅涉及到对型(下一个问题回答什么是型)的描述。是数据在逻辑上的视图,记住:一个DB只有一个模式。模式的一个具体值为一个实例(instance),一个模式可以多个实例。
比如:学生选课系统的数据库模式中,包含全体学生记录、选课记录。那么2014年的学生数据库是一个实例,包含了14级的所有学生的记录。同样2013级的学生也是一个实例。各年级学生是动态变化的但是选课系统的数据库模式是不变的。DBMS提供模式描述语言(模式DDL)
还有一个是外模式(也叫external schema、子模式,用户模式);
用户(也就是程序员和使用者)最终看到和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是和某个应用有关的数据的逻辑表示。通常是模式的子集。一个数据库可以有多个外模式,因用户不同,故外模式的描述也不同。同一个外模式可以让某个用户的多个应用系统使用,但是一个应用系统只能使用一个外模式。
(PS:这是保证数据安全性的一个有力措施,每个用户只能看见自己对应的外模式的数据!DBMS提供子模式描述语言(子模式DDL)来严格定义子模式)。
最后一个是内模式(也叫internal schema,存储模式,storage schema);
一个DB只有一个内模式,关乎数据的物理结构和存储方式。DBMS提供内模式描述语言(内模式DDL,或者存储模式DDL)来严格定义内模式。
接下来说完了三级模式,那么很有必要继续说下数据库的二级映像功能和数据独立性;
为在数据库系统内部实现3个层次的联系和转化,DBMS提供了三级模式间的两层映像。他们有效组织管理数据,提高了数据库的逻辑独立性和物理独立性。
外模式/模式映像;
同一个模式可有任意多个外模式,每一个外模式在DBS中都对应有(局部逻辑结构)外模式/模式映像,它定义了对应关系。当模式改变(如增加新关系,属性,改变数据类型等),DBA可以对外模式/模式映像做相应改变,使外模式不变,应用程序根据数据的外模式编写,所以应用程序不必修改,实现了数据和应用程序的逻辑独立性。
模式/内模式映像;
一个DB只有一个模式,并且只有一个内模式,故模式/内模式映像唯一。它定义全局逻辑结构和物理存储的对应关系,DB存储结构变化(内模式变化),DBA对模式/内模式映像相应做修改实现模式不变,从而应用程序不变,就保证数据和应用程序的物理独立性。
数据库系统的三级模式和两级映像的小结:
- 中间模式(概念模式)相对稳定的反映数据的结构和属性关系,是DB的关键和中心,全局的逻辑结构,独立于其他层次,故设计DB模式结构时应先确定DB逻辑模式。
- 模式的实例是动态反映数据的时效性。定义模式时要考虑逻辑结构,还要考虑数据的联系,考虑数据的安全性完整性。
- 内模式独立于用户视图(外模式),依赖全局逻辑结构(模式),组织存储数据实现存储时提高空间和时间效率
- 外模式面向具体应用,独立于存储设备(内模式),应用的较大修改导致外模式变动,故设计外模式要考虑扩展性。特定应用程序是在外模式数据结构上编制的,依赖于外模式,独立于模式和内模式,不同的应用可以公用一个外模式。
- 二级映像保证DB外模式稳定性,是在底层保证应用程序稳定性,除非应用自身变化,否则不会修改。数据和程序的独立性使数据定义和描述从应用分离,由于数据存取是DBMS管理,用户不必考虑存取细节,简化程序编制减少程序的维护和修改。
DBS的三级模式结构是对数据的三个抽象级别,用户级对外模式,概念级对概念模式,物理级对内模式,不同级别用户对数据库形成不同视图。如下图:
PS:视图广义指观察、认识和理解数据的范围、角度和方法。
还有个经常问的问题,那就是关于E-R图的。这里详细说说,基本可以解答所有关于E-R的问题。
为了更好的理解和复习,先从数据模型(数据库系统核心和基础)说起;(两大类)对现实世界的模拟,分为两个层次(现实对象的两步抽象过程)
1,概念模型(也叫信息模型);
在数据库设计阶段,由设计员按照用户观点建模实现对现实世界的概念抽象。
2,逻辑和物理模型;
逻辑模型包括网状,层次,关系,对象模型等,由设计人员按照计算机观点建模实现概念模型到适应某DBMS的逻辑模型的转变。再由DBMS完成逻辑到物理模型的转变。而物理模型是数据最底层的抽象,描述数据的存储方式和方法。
数据模型中的值和型(Type-Value);
型是对某类数据的结构和属性的描述,如学生记录定义为(姓名,性别,出身年,籍贯,专业)这样的一条记录型,而记录型的记录值为(黎明,男,1990,河北,mse)
数据模型的组成要素;(三个)
1、数据结构;(静态描述)描述数据库的组成对象和关系。根据数据结构来对DB分类。非关系模型(层次,网状),关系模型(关系),面向对象模型(对象)。
2、数据操作;(动态描述)增删改查
3、数据的完整性和约束;
概念模型用途;
1、对现实的信息世界建模,是现实到机器的中间层。
2、数据库设计工具
3、数据库设计人员和用户交流的语言
概念模型要求;简单清晰的语义,直接易懂的表达。
概念模型(信息世界)的基本概念;
1、实体(entity);客观存在并且可以区分的具体事物或者抽象概念。
2、属性(attribute);entity具有的某个特性,如(黎明,男,1990,江苏,mse)描述实体
3、码(key);唯一的标识实体的属性集!如学生学号。
4、域(domain);属性的取值范围,如学号的域为几位整数。姓名的域为字符串集合。
5、实体型(entity type);由实体名和属性名集合来刻画的同类实体称为实体型。如一个具体的学生(黎明,男,1990,江苏,mse),学生这种类型的实体型为;学生(姓名,性别,出身年,籍贯,专业)
6、实体集(entity set);同一类型的实体的集合。如全体学生。
7、联系(relationship);现实世界事物的联系在信息世界反映为实体的联系
联系的分类(根据联系的实体数量);一个实体,两个实体和多个实体,一般都是问的两个实体的联系,那么可分为三类(实体集A对实体集B);
1:1;A的每一个实体在B中最多有一个实体与之联系,当然也可以没有,反之亦然(相互的)。例如;一个学校只有一个校长,而此校长只是这一个学校的校长。
1:N;A的每个实体,在B中有N个实体和它对应,反之B中的每个实体在A中只有一个和他对应。例如;一个班级有多名学生,而这每个学生只能是在这一个班里学习。
N:M;A的每个实体在B中,有N个对应,反之,B的每个实体在A中也有M个对应
例如;一门课程可以同时有多个学生选修,同时一个学生也可以同时选择多门课程。
熟悉了以上理论,自然可以引入到ER图,即概念模型的一种表示方法:那就是问到的E-R图,也叫作(entity-relationship)实体关系图
实体-关系图(Entity-Relation Diagram)定义:
用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个独立于机器,独立于 DBMS 的 ER 图模型。通常将它简称为 ER 图,相应地可把用 ER 图描绘的数据模型称为 ER 模型。ER 图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型。
构成 E-R 图的基本要素是实体、属性和关系,其表示方法为:
实体的属性;椭圆表示,和实体用无向边连接
联系;用菱形表示,框里写联系的名称,无向边连接实体且在无向边旁边写明联系的类型。
联系的属性;联系本身也可以具有属性,比如学生和课程的联系是学习,学习是联系名,联系类型是N:M,联系的属性是学习成绩同样是椭圆表示,无向边连接。
一对多联系;
比如课程的每个实体可由多个老师教,可以有多本参考书。而每个老师只教一门课,每本参考书只对应一门课。
多对多联系;
比如每个供应商可以提供给多个项目多种零件,每个项目可以使用多个供应商的零件,每种零件可以由不同供应商供给。
单个实体型内的联系;(3类,一对一,一对多,多对多)
例子;职工实体型之间,存在领导和被领导的关系,一个职工由一个领导直接管理,而一个领导可以管理多名职工。属于1对多联系。
数据库设计工具powerDesigner介绍:
powerDesigner是sybase公司推出的图形化企业级数据建模和数据库设计工具,(包含了数据库设计的全过程)可以设计业务处理模型,数据流程图,概念模型,物理模型,支持概念模型转为物理模型,由物理模型自动生成数据库脚本,支持主流的关系数据库和应用开发平台。
可以手动先画ER图,再由powerDesigner设计CDM(conceptual data model)模型。
关于二维表和表项
数据库领域常用的逻辑数据模型:层次,网状,关系,面向对象,对象关系模型。其中层次和网状为格式化模型(早期使用),最主要的是关系模型,在用户看来关系模型中数据的逻辑结构是一张二维表(行/列)。此二维表对应一个关系(relation)。关系模型数据结构单一,建立在了集合代数的基础上。
关系模型数据结构的非形式化定义(形式化定义是数学上的定义);
关系模型的数据结构:注意;关系不是联系!不要和以前的ER图的联系混了。
表中的元组;表中的一行是一个元组(tuple)。
表中的属性;表中的一列是一个属性(attribute),属性的名字就是列名。
表中的码(key码键),唯一确定一个元组的属性组。如学号唯一确定一个学生。
域;属性的取值范围,如年龄在1-120等
分量;元组的一个属性值。
关系模式;对关系(表)的描述,一般格式:关系名(属性1,属性2,属性……属性n)
关系模型数据结构的形式化定义(基于数学方法);
域(Dmain);一组具有相同数据类型的值的集合。如自然数,整数等。
笛卡尔积(Cartesian product);域上的一种集合运算,给定一组域D1,D2,D3……DN,可以相同,则笛卡尔积为;D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n},其中每个元素(d1,d2,…,dn)叫做一个n元组(元组),每个元组的每一个值叫分量。
笛卡尔积可以表示一个二维表,表中每行对应一个元组,每列对应一个域。元组总数目等于笛卡尔积的基数连乘。
关系(relation);一组域D1,D2,D3……DN的笛卡尔积的有限子集(元素子集也就是n元组)叫做在这组域上的关系。记作;R(D1,D2,D3……DN),R为关系名,n是关系的目或度。
属性(attribute);一个关系就是一个二维表(反之未必),每列对应一个域,因为域可以相同,为了区分给列起名,为属性。
侯选码(candidate key);关系中某一属性组的值能唯一确定一个元组则该属性组为侯选码。
主码(primary key);多个侯选码里选一个
主属性;侯选码的各个属性
非主属性;不含在侯选码中的属性
全码(all key);关系模式的所有属性都是侯选码的情况下叫全码。
关系(二维表)的类型;
1、基本关系(基本表或基表);实际存在的表,实际存储数据的逻辑表示。
2、查询表;查询结果对应的表
3、视图表;是虚表,由基本表或其他视图表导出的表,不对应实际存储的数据。
基本关系(基本表)的6条性质;
1、每列同质,必须来自同一个域,数据类型同。
2、不同列可以出自同一个域(域可重复),但是不同列的属性名要不同。
3、列序任意。(随意插新属性,一般后插入)
4、任意两个元组的侯选码不同(否则无法标识唯一元组!理解)。
5、行序任意。
6、分量必须取原子值(数据项不可分)。
再来谈谈关系模式;
关系模式是型,关系是值,关系模式是对关系的描述,是静态的稳定的。关系的本质是一个二维表,一个元组就是该关系涉及的属性集的笛卡尔积的一个元素,关系是元组的集合,关系是关系模式在某一时刻的状态,动态的,随时间不断变化的。
关系模式的形式化表现:
R(U,D,dom,F),R(relation)关系名,U组成该关系的属性名集合,D属性组U中属性所来自的域,dom属性向域的映象集合,F属性间的数据依赖关系集合。
关系型数据库;
在一个给定的应用领域中,所有实体间联系的关系的集合构成一个关系数据库。典型关系DB;oracle,mysql,sqlserver,sybase,
关系数据模型的操作(CRUD);
增加(Create)、查询(Retrieve)(重新得到)、更新(Update)和删除(Delete)。
其中retrieve表达能力最强是最主要的部分;分为选择select,投影project,连接join,除divide,并union,差except,交intersection,笛卡尔积等,插入删除修改是数据更新,select,project,union,except,笛卡尔积是5种基本操作。
关系操作的特点;集合操作方式,操作对象和结果都是集合,非关系操作是记录。
关系数据语言的分类;关系代数语言relational algebra[ˈældʒəbrə],关系演算语言relation calculus,介于两者之间的结构化查询语言SQL(structured query language);丰富的查询功能,数据定义和数据控制功能(关系数据库的标准语言),用户不必了解数据的存储路径,提高了数据独立性和用户生产率。
CRUD必须满足关系的完整性约束。Crud对象是关系(若干元组的集合)。
关系模型的存储结构;实体间关系用表表示。在DBMS中一个表对应一个os文件,或者DBMS从os获得文件,再自己设计表,索引等存储结构。
关系数据模型优缺点;有严格的数学定义和约束(不同于格式化模型),概念单一;实体的联系用关系表示(表)。数据结构简单清晰,存储路径用户透明,安全保密,数据独立,并简化应用程序的开发过程。缺点就是由于存储透明,导致查询效率低,故DBMS必须优化查询请求,增加了开发DBMS的难度。
数据库的数据模型有哪几种,说出至少两种的特征
非关系模型;
层次模型:记录之间的联系通过指针实现,查找效率高。
网状模型:一个结点可以有多于一个的双亲,允许一个以上的结点无双亲。
关系模型:概念简单,结构清晰,用户易学易用(重点,前一个题论述)
面向对象模型(基本抛弃了)
对象关系模型
欢迎关注
dashuai的博客是终身学习践行者,大厂程序员,且专注于工作经验、学习笔记的分享和日常吐槽,包括但不限于互联网行业,附带分享一些PDF电子书,资料,帮忙内推,欢迎拍砖!