MOOC 数据库系统笔记(二):数据库系统的基本结构及其演变发展
数据库系统的结构抽象与演变
数据库的标准结构
DBMS管理数据的三个层次
1.External Level = User Level
某一用户能够看到与处理的数据,全局数据中的某一部分
2.Conceptual Level = Logic Level
从全局角度理解/管理的数据,含相应的关联约束
3.Internal Level = Physical Level
存储在介质上的数据,含存储路径、存储方式、索引方式等
数据与数据的结构--模式
模式(Schema)
对数据库中数据所进行的一种结构性的描述
所观察到数据的结构信息
视图(View)/数据(Data)
某一种表现形式下表现出来的数据库中的数据
三级模式两层映像
三级模式(三级视图)
External Schema ---- (External)View
某一用户能够看到与处理的结构描述
(Conceptual)Schema ---- Conceptual View
从全局角度理解/管理的数据结构描述,含相应的关联约束体现在数据之间的内在本质联系
Internal Schema ---- Internal View
存储在介质上的数据的结构描述,含存储路径、存储方式、索引方式等
模式默认指概念模式,视图默认指外部视图
两层映像
E-C Mapping:External Schema-Conceptual Schema Mapping
将外部模式映射为概念模式,从而支持实现数据概念视图向外部视图的转换
便于用户观察和使用
C-I Mapping:Conceptual Schema-Internal Schema Mapping
将概念模式映射为内模式,从而实现数据概念视图向内部视图的转换
便于计算机进行存储和处理
两个独立性
逻辑数据独立性
当概念模式改变时,可以不改变外部模式(只需改变E-C Mapping),从而无需改变应用程序
物理数据独立性
当内部模式改变时,可以不改变概念模式(只需改变C-I Mapping),从而无需改变外部模式
数据模型
数据模型、数据模式、数据的区别
什么是数据模型
1.规定模式统一描述方式的模型,包括:数据结构、操作和约束
2.数据模型是对模式本身结构的抽象,模式是对数据本身结构形式的抽象
比如:
关系模型:所用模式都可以为抽象表(Table)的形式[数据结构],而每一个具体的模式都是拥有不同列名的具体的表。对这种表形式的数据有哪些操作和约束。
(个人理解:关系模型规定了数据的表现结构和所有可能的操作,如并、交等等,还有模型上数据的约束,而关系模型的模式则是关系模型的具体表现,但又不是完整的数据,它只规定了数据有哪些属性)
数据模型是对数据模式的抽象,数据模式是对数据的抽象,所以说数据模型是数据的结构的结构。
三大经典数据模型
关系模型:表的形式组织数据
层次模型:树的形式组织数据
网状模型:图的形式组织数据
数据库系统的演变与发展
简要发展史:四个阶段
第一阶段:数据库系统技术探索阶段(59-65/67)
1.研制成功格式文件系统
2.正式提出“Data Base“并开始进行研究
第二阶段:数据库技术确立阶段(65/68-75)
1.三大数据库:层次、网状及关系数据库相机提出并进行了深入研究
2.商用数据库出现并应用,但多为网状及层次型系统
3.数据库研究形成理论基础:关系数据库理论
第三阶段:数据库技术成熟阶段(76-80s前期)
1.提出了标准化数据库系统结构模型
2.关系DB系统迅速发展:如SQL,QBL,System R,ingres等
3.关系理论日臻完善,包括规范化理论,关系语言,RDB的设计与实现,新型关系模型等
4.数据库应用已十分普及,渗透到社会各个方面,出现众多DB的技术分支,DB走向全面成熟,人称70年代为“数据库的年代”
第四阶段:数据库技术深化发展阶段(85年以来)
1.数据库方法逐步理论化、数据库设计理论不断完善
2.新型数据模型、专用数据模型,专用型、新型数据库系统,不断涌现
3.数据库技术+其他计算机技术结合==面向各行各业的专用数据库。
几个重大发展
由文件系统到数据库
操作系统管理数据的方法是文件系统:
文件系统的优点:用户(程序)不必考虑文件存储的物理细节,解脱了对物理设备存取的复杂性处理的负担。
文件系统的不足:数据与程序紧密结合,数据的组织及语义紧密依赖于处理该文件的应用程序,数据结构发生改变则必须修改应用程序,文件之间无联系,文件的记录之间无联系,共享性差,冗余度搞,不一致性高。
重要发展:由文件系统到数据库
数据库系统:
1.由DBMS统一存取、维护数据组织形式及语义,可较强地独立于应用程序(数据的物理独立性和逻辑独立性)
2.把数据及数据结构的定义和描述从应用程序中分离出去,交给DBMS,使得多个应用程序课共享数据及数据结构的操作,数据存取可以记录为单位,也可以以数据项和记录集合为单位
3.统一的数据控制功能,数据共享程度高:系统可自动检查安全性、完整性和并发正确性
4.整体数据结构化,文件(Table)之间、记录之间相互有关联,数据的冗余度小,容易扩充
5.独立于应用程序的高效率查询/统计操作。
由层次模型数据库、网状模型数据库到关系模型数据库
层次模型数据库与网状模型数据库
1.数据之间的关联关系由复杂的指针系统来维系,结构描述复杂
2.数据检索操作依赖于由指针系统指示的路径
3.逐一记录的操作,不能有效支持集合的操作
关系数据库
数据之间的关联关系由Table中属性的值来表征,结构描述简单:Table/relation
数据检索操作不依赖于路径信息或者过程信息,支持非过程化的数据操作
有效支持记录集合的操作
较为完善的理论基础
由关系数据库到对象关系数据库、面向对象数据库
关系数据库
1.按行按列形式组织数据:关系的第1范式
2.数据项的不可再分特性
3.关系运算:关系代数、元组演算、域演算--》标准SQL
4.关系数据库设计理论
对象-关系数据库
1.可有效支持不满足关系第1范式的数据项
2.以对象来封装需分解的数据项
3.行对象与列对象:聚集对象与结构对象
面向对象数据库
1.面向对象技术(O-O)与几何/聚集操作(SQL)技术的结合
2.支持复杂的数据类型,数据封装与抽象数据结构
3.支持面向对象的一些特性:类、继承、封装、多态。。。
由多种多样的数据库到多数据库的开放互连
由普通数据库到与各种先进技术结合所形成的新型数据库。
MOOC 数据库系统笔记(二):数据库系统的基本结构及其演变发展的更多相关文章
- 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型
[Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- muduo学习笔记(二)Reactor关键结构
目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...
- amazeui学习笔记二(进阶开发1)--项目结构structure
amazeui学习笔记二(进阶开发1)--项目结构structure 一.总结 1.项目结构:是说的amazeui在github上面的项目结构,二次开发amazeui用 二.项目结构structure ...
- Oracle数据库基础入门《二》Oracle内存结构
Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...
- 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX
<CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...
- Mastering Web Application Development with AngularJS 读书笔记(二)
第一章笔记 (二) 一.scopes的层级和事件系统(the eventing system) 在层级中管理的scopes可以被用做事件总线.AngularJS 允许我们去传播已经命名的事件用一种有效 ...
- webpy使用笔记(二) session/sessionid的使用
webpy使用笔记(二) session的使用 webpy使用系列之session的使用,虽然工作中使用的是django,但是自己并不喜欢那种大而全的东西~什么都给你准备好了,自己好像一个机器人一样赶 ...
- java jvm学习笔记十三(jvm基本结构)
欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完 ...
随机推荐
- Selenium webdriver工作原理
webdriver是以server-client 经典模式设计的 server端可以是任何浏览器作为remote server,职责就是处理client的请求并作出相应操作,response的具体内容 ...
- LoRaWAN_stack移植笔记 (二)_GPIO
stm32相关的配置 由于例程使用的主控芯片为STM32L151C8T6,而在本设计中使用的主控芯片为STM32L051C8T6,内核不一样,并且Cube库相关的函数接口及配置也会有不同,所以芯片的驱 ...
- c++的构造和析构
//文件名ss.h 1 #pragma once class ss { private: char*p;//利用指针来为p申请对内存 float height; ; char sex; public: ...
- Java网络编程与NIO详解4:浅析NIO包中的Buffer、Channel 和 Selector
微信公众号[黄小斜]作者是蚂蚁金服 JAVA 工程师,目前在蚂蚁财富负责后端开发工作,专注于 JAVA 后端技术栈,同时也懂点投资理财,坚持学习和写作,用大厂程序员的视角解读技术与互联网,我的世界里不 ...
- Flink的TaskManager启动(源码分析)
通过启动脚本已经找到了TaskManager 的启动类org.apache.flink.runtime.taskexecutor.TaskManagerRunner 来看一下它的main方法中 最后被 ...
- nanopi NEO2 学习笔记 3:python 安装 RPi.GPIO
如果我要用python控制NEO2的各种引脚,i2c 或 spi ,RPi.GPIO模块是个非常好的选择 这个第三方模块是来自树莓派的,好像友善之臂的工程师稍作修改移植到了NEO2上,就放在 /roo ...
- unity_实用小技巧(空指针错误)
在游戏开发中,空指针错误是我们最常见也是最容易出现的错误.下面介绍一下博主近期遇见的空指针错误 如上图,有两个类,如果此时我们在图2中调用图1的单例模式可能会出现空指针错误. 原因在于:编译器可能先执 ...
- MSIL实用指南-比较运算
数值的比较就是大于.小于.等于.大于等于.小于等于.不等于,它们的运算结果都是布尔值.大于.小于.等于有直接对应的指令,分别是Cgt.Clt.Ceq.大于等于.小于等于.不等于没有直接对应的指令,它的 ...
- 用故事解析setTimeout和setInterval(内含js单线程和任务队列)
区别: setTimeout(fn,t): 延迟调用,超过了时间就调用回调函数,返回一个id,使用clearTimeout(id)取消执行. 注意:取消了里面的回调函数就不执行了哦,而不是取消的时候就 ...
- 重识 ArrayList
前言 ArrayList 作为 Java 集合框架中最常用的类,在一般情况下,用它存储集合数据最适合不过.知其然知其所以然,为了能更好地认识和使用 ArrayList,本文将从下面几方面深入理解 Ar ...