数据库精华知识点总结(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的难度。
数据库的数据模型有哪几种,说出至少两种的特征
非关系模型;
层次模型:记录之间的联系通过指针实现,查找效率高。
网状模型:一个结点可以有多于一个的双亲,允许一个以上的结点无双亲。
关系模型:概念简单,结构清晰,用户易学易用(重点,前一个题论述)
面向对象模型(基本抛弃了)
对象关系模型
数据库精华知识点总结(1)—数据库的三层模式和二级映像,E-R(实体联系图)图,关系模型的更多相关文章
- python学习之老男孩python全栈第九期_数据库day004知识点总结 —— MySQL数据库day4
复习: 1. MySQL:文件管理的软件 2. 三部分: - 服务端 - SQL语句 - 客户端 3. 客户端: - MySQL - navicat 4. 授权操作: - 用户操作 - 授权操作 5. ...
- python学习之老男孩python全栈第九期_数据库day003知识点总结 —— MySQL数据库day3
复习: 1. 增 insert into xx(name) values('root'),('xxx'); insert into xx(name) select id from tb1; 2. 自增 ...
- python学习之老男孩python全栈第九期_数据库day002知识点总结 —— MySQL数据库day2(全部)
一. 复习1. MySQL: - 服务端 - 客户端2. 通信交流 - 授权 - SQL语句 - 数据库 创建数据库: create database db1 default charset utf8 ...
- python学习之老男孩python全栈第九期_数据库day005知识点总结 —— MySQL数据库day5
三. MySQL视图(不常用) 给某个查询语句设置个别名(视图名),日后方便使用 - 创建: create view 视图名 as SQL; PS:视图是虚拟的 - 修改: alter view 视图 ...
- 大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 聚类分析算法)
原文:(原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 聚类分析算法) 本篇文章主要是继续上一篇Microsoft决策树分析算法后,采用另外一种分析算法对目标顾客群体的挖掘 ...
- Mysql数据库重要知识点(知了堂学习心得)
Mysql数据库知识点 1.管理数据库语句: 使用数据库: use test; 添加数据库: create database 数据库名; create database test; 修改数据库: al ...
- Java 面试知识点解析(六)——数据库篇
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...
- 知识点:Mysql 数据库索引优化实战(4)
知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 一:插入订单 业务逻辑:插 ...
- 知识点:linux数据库备份
服务端启用二进制日志 如果日志没有启开,必须启用binlog,要重启mysql,首先,关闭mysql,打开/etc/my.cnf,加入以下几行: [mysqld] log-bin 然后重新启动mysq ...
随机推荐
- TDD在Unity3D游戏项目开发中的实践
0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入
系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...
- springmvc SSM shiro redis 后台框架 多数据源 代码生成器
A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单 下载地址 ; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类 ...
- npm源切换
版权声明:欢迎转载,请附加转载来源:一路博客(http://www.16boke.com) 目录(?)[+] 安装 使用 列出可选的源 切换 增加源 删除源 测试速度 许可 项目主页 我们介绍 ...
- LINQ to SQL语句(7)之Exists/In/Any/All/Contains
适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式 ...
- Linux字符设备驱动框架
字符设备是Linux三大设备之一(另外两种是块设备,网络设备),字符设备就是字节流形式通讯的I/O设备,绝大部分设备都是字符设备,常见的字符设备包括鼠标.键盘.显示器.串口等等,当我们执行ls -l ...
- pycharm2016.3.1激活及汉化
pycharm快捷键 PyCharm设置python新建文件指定编码为utf-8 Python | 设置PyCharm支持中文 0, 注册码 43B4A73YYJ-eyJsaWNlbnNlSWQiOi ...
- MVP初探
什么是MVP MVP是一种UI的架构模式,是MVC的一种变体,适用于基于事件驱动的应用框架.MVP中的M和V分别对应了MVC中的Model和View,而P代替了Controller,而它更多地体现在了 ...
- Linux配置防火墙 开启80端口的方法
命令行输入: vi /etc/sysconfig/iptables 将 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT ...
- 在jexus下如何简单的配置多站点
参考:linuxdot.net 其实jexus的配置还是比较简单的,目录即站点(一个目录就是一个站点,一个配置文件就是一个站点) 如uustudy.net,在siteconf目录下创建一个uustud ...