Chapter01 - 绪言
数据模型
数据模型是对现实世界数据特征的抽象,用以抽象、表示和处理现实世界中的数据和信息
- 数据模型应满足三方面要求
- 能比较真实地模拟现实世界
- 容易为人所理解
- 便于在计算机上实现
- 数据模型是数据库系统的核心和基础
概念/逻辑/物理模型
概念模型,也称信息模型
- 按用户的观点来对数据和信息建模,用于数据库设计
逻辑模型
- 按计算机系统的观点对数据建模,用于DBMS实现
- 主要包括网状模型、层次模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等。
物理模型
- 是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法
完整性约束条件
数据的完整性约束条件,一组完整性规则的集合
- 完整性规则:给定的数据模型中数据及其联系所具有的制约和依存规则
- 用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容
数据模型对完整性约束条件的定义
- 反映和规定必须遵守的基本的通用的完整性约束条件。
- 提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。
概念模型
概念模型的用途
- 概念模型用于信息世界的建模
- 是现实世界到机器世界的一个中间层次
- 是数据库设计的有力工具
- 数据库设计人员和用户之间进行交流的语言
对概念模型的基本要求
- 较强的语义表达能力
- 简单、清晰、易于用户(非IT从业人员)理解
信息世界中的基本概念
实体(Entity
- 客观存在并可相互区别的事物称为实体。
- 可以是具体的人、事、物或抽象的概念。
属性(Attribute)
- 实体所具有的某一特性称为属性。
- 一个实体可以由若干个属性来刻画。
码(Key) 唯一标识实体的属性集称为码。
属性相同的就是同一个实体。一个属性的集合就是一个实体。key
是属性的一部分,但是唯一标识实体。key
一样的就是同一个实体。类比:身份证号key
可以是单一的属性,也可以是一个集合(足以区分不同实体的属性集合)。
每一个实体都有key
实体型(Entity Type)
- 用实体名及其属性名集合来抽象和刻画同类实体称为实体型
实体集(Entity Set)
- 同一类型实体的集合称为实体集
联系(Relationship)
- 现实世界中事物内部以及事物之间的联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
实体型≈实体集
联系
实体之间的联系
实体之间的联系通常是指不同实体集之间的联系
实体之间的联系有一对一、一对多和多对多等多种类型
一对一:一位同学至多拥有一张学生卡
一对多:一个行政班拥有多名同学,一个同学最多归属一个行政班
多对多:一个同学可以选n门课,一门课可以有m个同学
实体内部的联系
实体内部的联系通常是指组成实体的各属性之间的联系
- 一对一:配偶关系
实体-联系方法 ER模型
联系建立了两个实体,让联系也包含了属性。“成绩”隶属于联系“选修”。选一次课,就会产生一次成绩。所以成绩隶属于联系“选修”
逻辑模型
逻辑模型作为接口,物理模型作为载体,在外面封装一层应用的壳
如何“多快好省”地将信息世界转换为机器世界?
基本问题,如何在机器世界中表达“低层”数据结构和“高层”数据结构?
- 方案1:尽量独立于应用层,采用“中立”的方式表达概念模型。面向应用层的壳**中立,不受到应用层的影响 ** (数据库作为中转站的方式,实现多个应用的数据共享)
- 方案2:在应用层中,使用特定数据结构,并在逻辑模型中高效支持这一数据结构。对于效率非常追求,“中立”的好处不大(共享范围小、共享的应用对数据的要求相似)。
- 方案*:通用数据结构采用方案1,关键性数据结构采用方案2
常用数据模型
格式化模型(不常用了)
- 层次模型(Hierarchical Model)
- 网状模型(Network Model)
关系模型(Relational Model))
对象模型(和上层应用紧密联系,难以实现共享)
- 面向对象数据模型(Object Oriented Data Model)
- 对象关系数据模型(Object Relational Data Model)
关系模型
- 关系(Relation):一个关系对应通常说的一张表。是满足某种条件的集合。
- 元组(Tuple):表中的一行即为一个元组,是具体的属性值的集合(无序、不重复)
- 属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名
- 主码(Key):也称码键。表中的某个属性组,它可以唯一确定一个元组
- 域(Domain):是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。
- 分量:元组中的一个属性值。
- 关系模式
- 对关系的描述
- 关系名(属性1,属性2,…,属性n)
1 2 3
和3 2 1
在集合中是等价的 - 学生(学号,姓名,年龄,性别,系名,年级)
- 关系必须是规范化的,满足一定的规范条件
- 最基本的规范条件:关系的每一个分量必须是一个不可分的数据项, 不允许表中还有表
上表不是一个关系,有嵌套的表
操作与完整性约束
数据操作(查询、插入、删除、更新)是集合操作,操作对象和操作结果都是关系
存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”
关系的完整性约束条件
- 实体完整性:里面的任何一条元祖都确定了一个实体
- 参照完整性:实体必须存在
- 用户定义的完整性
优缺点
关系模型类似于保姆性质的,进行了检查,效率较低
优点
- 足够统一且简单
- 有严格的数学概念的基础
- 对用户(底层)透明
缺点:
- 没有办法对底层进行优化
NoSQL
列族模型:针对网络的处理
文档模型:类似于树
ch06 数据库系统的结构
从数据库应用开发人员角度
- 看数据库系统通常采用三级模式结构,是数据库系统内部的系统结构
从数据库最终用户角度看
数据库系统的结构分为:
- 单用户结构
- 主从式结构
- 分布式结构
- 客户-服务器
- 浏览器-应用服务器/数据库服务器多层结构等
模式
- 内模式是对模式的物理实现、落地。模式本身绝大多数下是固定的,内模式在不同时间下有不同形式。
- 在模式不变的情况下,内模式可以根据需要进行修改。
- 所以模式可以隔离来自底层物理模式/内模式的变化。
在统一模式下的不同应用,对数据的访问、需要是相同的或者类似的,处在同一个应用域。如果模式暴露给应用,而应用不需要这么多数据同时也会有安全问题。同时模式中数据的变化,会对不同的外模式都会造成影响。如果只改变外模式1,是不会对其他的外模式造成影响的。
所以应用群变得更加安全了,不易受到其他改变的影响
外模式(External Schema)
- 也称子模式或用户模式
- 数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
- 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
外模式的地位:介于模式与应用之间
模式与外模式的关系:一对多
- 外模式通常是模式的子集
- 一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求
- 对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同
外模式与应用的关系:一对多
- 同一外模式也可以为某一用户的多个应用系统所使用
- 但一个应用程序只能使用一个外模式
外模式的用途
- 保证数据库安全性的一个有力措施
- 每个用户只能看见和访问所对应的外模式中的数据(隔离)
三级模式与二级映像
三级模式是对数据的三个抽象级别
二级映象在数据库管理系统内部实现这三个抽象层次的联系和转换
- 外模式/模式映像
- 模式/内模式映像
外模式/模式映像
- 模式:描述的是数据的全局逻辑结构
- 外模式:描述的是数据的局部逻辑结构
- 同一个模式可以有任意多个外模式
- 每一个外模式,数据库系统都有一个外模式/模式映象,定义外模式与模式之间的对应关系
- 映象定义通常包含在各自外模式的描述中
- 保证数据的逻辑独立性
- 当模式改变时,数据库管理员对外模式/模式映象作相应改变,使外模式保持不变
- 应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
模式/内模式映像
- 模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。
例如,说明逻辑记录和字段在内部是如何表示的
- 数据库中模式/内模式映象是唯一的
- 该映象定义通常包含在模式描述中
- 保证数据的物理独立性
- 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变。
- 应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。
小结
数据库模式
- 即全局逻辑结构是数据库的中心与关键
- 独立于数据库的其他层次
- 设计数据库模式结构时应首先确定数据库的逻辑模式
数据库的内模式
- 依赖于它的全局逻辑结构
- 独立于数据库的用户视图,即外模式
- 独立于具体的存储设备:内模式是数据物理结构和存储方式的描述,定义数据在数据库内部的表示方式,而不是具体的存储位置
- 将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率
数据库的外模式
- 面向具体的应用程序
- 定义在逻辑模式之上
- 独立于存储模式和存储设备
- 当应用需求发生较大变化,相应外模式不能满足其视图要求时,该外模式就得做相应改动
- 设计外模式时应充分考虑到应用的扩充性
特定的应用程序
- 在外模式描述的数据结构上编制的
- 依赖于特定的外模式
- 与数据库的模式和存储结构独立
- 不同的应用程序有时可以共用同一个外模式
二级映像
数据库的二级映像
- 保证了数据库外模式的稳定性
- 从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改
数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去
数据的存取由数据库管理系统管理
- 简化了应用程序的编制大大
- 减少了应用程序的维护和修改