数据库概论
四个基本概念
数据(Data)
数据(data):是数据库中存储的基本对象
语义:数据的含义称为数据的语义,数据与其语义是密不可分的(常用来表示数据的类别)
记录:数据的特征值
数据库(Database)
数据库:长期存储在计算机内、有组织的、可共享的大量数据的集合
基本特征:
- 数据可按一定的数据模型组织、描述和存储
- 可为各种用户共享、冗余度较小、易扩展
- 数据独立性高
数据库管理系统(DBMS)
位于用户应用和操作系统之间的一层数据管理软件,是基础软件,是一个大型复杂的软件系统
数据定义功能:
- 提供数据定义语言(DDL)
- 定义数据库中的数据对象
数据组织、存储和管理
- 分类数据、存储和管理各种数据
- 确定数据在存储级别上的结构和存取
- 实现数据之间的联系
- 提供多种存储方法提高存储效率
数据操作功能:
- 提供数据操作语言(DML)
- 实现对数据库的基本操作(增删改查)
数据库的事务管理和运行管理
- 数据的安全性、完整性、多用户对数据的并发使用
- 发生故障后的系统回复数据库
数据库的建立和维护功能
其他功能:
- 数据库管理系统和网络中其他软件系统的通信
- 数据库管理系统与系统之间的数据转换
- 异构数据库之间的互访和互操作
数据库系统(DBS)
在不混淆的情况下常常把数据库系统简称为数据库
构成:数据库,数据库管理系统,应用程序。数据库管理员(DBA)
数据管理技术发展
数据库系统的特点
数据结构化
数据的整体结构化是数据库的主要特征之一
- 不再仅仅针对某一个应用,而是面向整个企业或组织
- 不仅数据内部结构化,整体是结构化的,数据之间具有联系
- 数据记录可以变长
- 数据的最小存取单位是数据项
数据用数据模型描述,无需应用程序定义
数据的共享性高、冗余度低且易扩展
数据面向整个系统,可以被多个用户、多个应用共享使用。
数据共享的好处:
- 减少数据冗余,节约存储空间
- 避免数据之间的不相容性与不一致性
- 使系统易于扩充
数据独立性高
- 物理独立性:指用户的应用程序与数据库中数据的物理存储是相互独立的。当数据的物理存储改变了,应用程序不用改变。
- 逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,应用程序不用改变。
- 数据独立性由数据库管理系统的二级映像功能来保证。
数据由数据库管理系统统一管理和控制
- 数据的安全性(Security)保护:保护数据以防止不合法的使用造成的数据的泄密和破坏。
- 数据的完整性(Integrity)检查:保证数据的正确性、有效性和相容性。
- 并发控制(Concurrency Control):对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。
- 数据库恢复(Recovery):将数据库从错误状态恢复到某一已知的正确状态。
数据模型
数据模型是对现实世界数据特征的抽象。
通俗地讲数据模型就是现实世界的模拟。数据模型应满足三方面要求:
- 能比较真实地模拟现实世界;
- 容易为人所理解;
- 便于在计算机上实现;
数据模型是数据库系统的核心和基础
概念模型:也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计。
逻辑模型和物理模型
- 逻辑模型:主要包括网状模型、层次模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等。按计算机系统的观点对数据建模,用于DBMS实现。
- 物理模型:是对数据最底层的抽象,描述数据在系统内(磁盘上)的表示方式和存取方法。
概念模型
概念模型的用途
- 概念模型用于信息世界的建模
- 是现实世界到机器世界的一个中间层次
- 是数据库设计的有力工具
- 数据库设计人员和用户之间进行交流的语言
对概念模型的基本要求
- 较强的语义表达能力
- 简单、清晰、易于用户理解
实体(Entity):客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。
属性(Attribute):实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。
码(Key):准一标识实体的属性集称为码。
实体型(Entity Type):甲实体名及其属性名集合来抽象和刻画同类实体称为实体型
实体集(Entity Set):司一类型实体的集合称为实体集
联系(Relationship)
现实世界中事物内部以及事物之间的联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
- 实体内部的联系:是指组成实体的各属性之间的联系
- 实体之间的联系:通常是指不同实体集之间的联系
实体之间的联系有一对一(1:1)、一对多(1:m)
和多对多(m:n)等多种类型
概念模型的一种表示方法:
实体-联系方法(Entity-Relationship Approach) - 用E-R图来描述现实世界的概念模型
- E-R方法也称为E-R模型
数据模型的组成要素
数据模型是严格定义的一组概念的集合,精确地描述了系统的静态特性、动态特性和完整性约束条件(Integrity Constraints)。
数据模型由三部分组成
- 数据结构–描述系统的静态特性
- 数据操作–描述系统的动态特性
- 完整性约束
数据结构
- 刻画数据模型性质的重要方面数据结构的类型来命名数据模型
- 层次结构-层次模型、网状结构–网状模型、关系结构—关系模型描述数据库的组成对象–对象的类型、内容、性质
- 描述对象之间的联系
数据操作
- 数据操作:对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则
- 数据操作的类型:查询、更新(包括插入、删除、修改)数据操作语言
- 定义数据操作的确切含义、符号、优先级别实现数据操作的语言:查询语言——Query Language·更新语言—DML
数据的完整性约束条件
- 一组完整性规则的集合
- 完整性规则:给定的数据模型中数据及其联系所具有的制约和依存规则。
- 用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。
- 数据模型对完整性约束条件的定义
- 反映和规定必须遵守的基本的通用的完整性约束条件。
- 提供定义完整性约束条件的机制,以反映具体应用所涉及的数据,必须遵守的特定的语义约束条件。
层次模型
层次模型用树形结构来表示各类实体以及实体间的联系表示方法
- 实体型:用记录类型描述,每个结点表示一个记录类型(实体)
- 属性:用字段描述,每个记录类型可包含若干个字段
- 联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子联系
层次模型的定义
满足下面两个条件的基本层次联系的集合为层次模型
- 有且只有一个结点没有双亲结点,这个结点称为根结点
- 根以外的其它结点有且只有一个双亲结点
数据结构:
特点:
- 结点的双亲是唯一的
- 只能直接处理一对多的实体联系
- 任何记录值只有按其路径查看
- 没有一个子女记录值能够脱离双亲记录值而独立存在
层次模型的数据操纵
- 查询
- 插入
- 删除
- 更新
层次模型的完整性约束条件
- 无相应的双亲结点值就不能插入子女结点值
- 如果删除双亲结点值,则相应的子女结点值也被同时删除
- 更新操作时,应更新所有相应记录,以保证数据的一致性
优点
- 层次模型的数据结构比较简单清晰
- 查询效率高,性能优于关系模型,不低于网状模型
- 层次数据模型提供了良好的完整性支持
缺点
- 结点之间的多对多联系表示不自然
- 对插入和删除操作的限制多,应用程序的编写比较复杂
- 查询子女结点必须通过双亲结点
- 层次数据库的命令(语音)趋于程序化
网状模型
网状数据库系统采用网状结构来表示各类实体以及实体间的联系表示方法(与层次数据模型相同)
- 实体型:用记录类型描述,每个结点表示一个记录类型(实体)
- 属性:用字段描述,每个记录类型可包含若干个字段
- 联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子联系
网状模型的定义
满足下面两个条件的基本层次联系的集合:
- 允许一个以上的结点无双亲;
- 一个结点可以有多于一个的双亲。
数据结构
- 允许多个结点没有双亲结点
- 允许一个结点有多个双亲结点
- 允许两个结点之间有多种联系要为每个联系命名
- 并指出与该联系有关的双亲记录和子女记录
多对多联系在网状模型中的表示
- 网状模型间接表示多对多联系
- 方法:将多对多联系分解成一对多联系
网状模型的数据操纵和完整性约束条件
- 导航式的查询语言和增删改操作语言
- 完整性约束条件不严格
- 允许插入尚未确定双亲结点值的子女结点值
- 允许只删除双亲结点值
实际的网状数据库系统提供了一定的完整性约束
- 支持码的概念:唯一标识记录的数据项的集合,取唯一的值
- 保证一个联系中双亲记录与子女记录之间是一对多联系
- 可以定义双亲记录和子女记录之间某些约束条件。
关系模型
数据结构:
- 在用户观点下,关系模型中数据的逻辑结构是一张二维表。
- 关系(Relation)——一个关系对应通常说的一张表元组(Tuple)—表中的一行即为一个元组
- 属性(Attribute)——表中的一列即为一个属性,给每一个属性起一个名称即属性名
- 主码(Key)——也称码键。表中的某个属性组,它可以唯一确定一个元组
- 域(Domain)——是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。(属性的分类)
- 分量——元组中的一个属性值。
- 关系模式——对关系的描述
- 关系必须是规范化的,满足一定的规范条件
** 最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表。图中工资和扣除是可分的数据项,不符合关系模型要求**
术语对比
关系模型的操作和完整性约束- 数据操作是集合操作,操作对象和操作结果都是关系:查询插入删除更新
- 存取路径对用户隐蔽,用户只要指出“找什么”,不必详细说明“怎么找”。提高了数据的独立性,提高了用户生产率。
- 关系的完整性约束条件
- 实体完整性
- 参照完整性
- 用户定义的完整性
优点
- 建立在严格的数学概念的基础上概念单一
- 实体和各类联系都用关系来表示对数据的检索结果也是关系关系模型的存取路径对用户透明
- 具有更高的数据独立性,更好的安全保密性简化了程序员的工作和数据库开发建立的工作
缺点
- 存取路径对用户透明,杳询效率往往不如格式化数据模型
- 为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度