数据库精华知识点总结(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对模式/内模式映像相应做修改实现模式不变,从而应用程序不变,就保证数据和应用程序的物理独立性。

数据库系统的三级模式和两级映像的小结:

  1. 中间模式(概念模式)相对稳定的反映数据的结构和属性关系,是DB的关键和中心,全局的逻辑结构,独立于其他层次,故设计DB模式结构时应先确定DB逻辑模式。
  2. 模式的实例是动态反映数据的时效性。定义模式时要考虑逻辑结构,还要考虑数据的联系,考虑数据的安全性完整性。
  3. 内模式独立于用户视图(外模式),依赖全局逻辑结构(模式),组织存储数据实现存储时提高空间和时间效率
  4. 外模式面向具体应用,独立于存储设备(内模式),应用的较大修改导致外模式变动,故设计外模式要考虑扩展性。特定应用程序是在外模式数据结构上编制的,依赖于外模式,独立于模式和内模式,不同的应用可以公用一个外模式。
  5. 二级映像保证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的难度。

数据库的数据模型有哪几种,说出至少两种的特征

非关系模型;

层次模型:记录之间的联系通过指针实现,查找效率高。

网状模型:一个结点可以有多于一个的双亲,允许一个以上的结点无双亲。

关系模型:概念简单,结构清晰,用户易学易用(重点,前一个题论述)

面向对象模型(基本抛弃了)

对象关系模型

 

辛苦的劳动,转载请注明出处,谢谢……

http://www.cnblogs.com/kubixuesheng/p/4391323.html

时间: 2024-10-03 08:44:17

数据库精华知识点总结(1)—数据库的三层模式和二级映像,E-R(实体联系图)图,关系模型的相关文章

大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 关联规则分析算法)

原文:(原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 关联规则分析算法) 前言 本篇继续我们的微软挖掘算法系列总结,前几篇我们分别介绍了:Microsoft决策树分析算法.Microsoft聚类分析算法.Microsoft Naive Bayes 算法.Microsoft 时序算法,后续还补充了二篇结果预测篇.Microsoft 时序算法--结果预算+下期彩票预测篇,看样子有必要整理一篇目录了,不同的算法应用的场景也是不同的,每篇文章都有它自己的应用场景介绍,有兴趣

[Qt教程] 第21篇 数据库(一)Qt数据库应用简介

[Qt教程] 第21篇 数据库(一)Qt数据库应用简介 楼主  发表于 2013-5-13 20:56:39 | 查看: 1403| 回复: 13 Qt数据库应用简介 版权声明 该文章原创于作者yafeilinux,转载请注明出处! 导语 下面十节讲解数据库和XML的相关内容.在学习数据库相关内容前,建议大家掌握一些基本的SQL知识,应该可以看懂基本的SELECT.INSERT.UPDATE和DELETE等语句,因为在这几篇教程中使用的都是非常简单的操作,所以即便没有数据库的专业知识也可以看懂!

数据库设计技巧[转]_数据库其它

1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处. [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会关系表.工作简历表.这就是"一张原始单证对应多个实体"的典型例子. 2. 主键与外键

sql语句-SQL语句创建的表不在新建的数据库中而在系统数据库中,

问题描述 SQL语句创建的表不在新建的数据库中而在系统数据库中, SQL语句创建的表不在新建的数据库中而在系统数据库中, 怎么让表在新建的数据库呢 解决方案 肯定你写错了,或者数据库连接到了系统库,或者sql中指明了写到系统库了 解决方案二: 你没写 use database; database是你的数据库 解决方案三: 创建表前,先写需要创建在哪个数据库中.USE DATABASE GO......CREATE TABLENAME() 解决方案四: 先要使用自己的数据库 use databas

数据库应用系统中的数据库完整性

数据库完整性(Database Integrity)是指数据库中数据的正确性和相容性.数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计. 数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中.通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计(本文主要讨论前者).数据库完整性对于数据库应用系统非常关键,其作用主要体现在以下几个方面: 1.数据库完

Android开发入门(十九)数据库 19.3 预创建数据库

在开发过程中,有时候,预先创建好数据库比在程序运行时创建数据库更加地高效.举个例子,你想编写 一个程序,这个程序把你去过的地方的坐标都显示出来.这种情况下,预先创建数据库是更加容易的,比在 运行时创建数据库. 这里,需要使用一些免费的工具.推荐使用SQLite Database Browser,支持多 平台,并且免费.下载地址: http://sourceforge.net/projects/sqlitebrowser/ 下面是创建一个 联系人表的例子. 在设计阶段把数据库建好,下 一步,就是把

Oracle数据库入门之DDL与数据库对象

数据库对象 常见:表:存放数据的基本数据库对象,由行(记录)和列(字段)组成 约束条件:执行数据校验,保证数据完整性的系列规则 视图:表中数据的逻辑显示 索引:根据表中指定的字段建立起来的顺序,用于提高查询性能 序列:一组有规律的整数值 同义词:对象的别名 命名:必须以字母开头.可以包含字母.数据.下划线.$.# 同一方案(用户)下的对象不能重名.不能使用Oracle的保留字 补充:Oracle数据库中的表分为用户定义的表和数据字典表 用户定义的表:用户自己创建并维护的一组表,包含了用户所需的信

access数据库-VC++ mfc连接odbc数据库后,不能对数据库的记录更新(增删改),只能查寻是什么原因?

问题描述 VC++ mfc连接odbc数据库后,不能对数据库的记录更新(增删改),只能查寻是什么原因? 下面是一段插入的代码,不能插入,在第二个str.Format()时出现FROM子句出错. 我在执行查询时是成功的. void CINPUT::OnTianjia() { // TODO: Add your control notification handler code here UpdateData(TRUE); if(m_No.IsEmpty() || m_name.IsEmpty()

mfc vc6 0 sql 数据库-请问当SQL Server数据库中数据有更新的时候,如何通知到MFC上?

问题描述 请问当SQL Server数据库中数据有更新的时候,如何通知到MFC上? 编程环境VC6.0,在MFC对话框中添加了一些控件,并且能够显示数据库中内容, 使用的是CRecordSet类,读取完数据库后就调用Close关闭数据库了. 我想请问的是,如何实时的显示数据库内容? 或者当数据库数据有变更的时候才显示到 MFC的控件上? 解决方案 参考这个试试 SQL Server 2008 表数据改变后发送消息 http://blog.csdn.net/sliphades/article/de