一、绪论
从保存游戏角色的信息到保存个人身份信息,从小型企业管理到电子商务、电子政务,甚至是高科技辅助制造等高科技行业,数据库都扮演者举足轻重的作用。
1.1 数据库系统概述
❗️ 4个基本概念
- 数据:描述事物的符号,其含义叫做数据的语义,数据必有其含义,否则只是一个符号,而不能描述事物
- 数据库:保存数据的仓库,有永久存储、有组织、可共享等特点(严格定义:数据库是长期存储在计算机上的有组织、可共享的大量数据集合,它的数据按照一定的数据结构组织、描述和管理,具有低冗余度、高独立性易扩展和供多用户共享的特点)
- 数据库管理系统:科学组织和存储数据,高效 获取维护数据的计算机基础软件(包含6点作用a数据定义;b数据组织、存储和管理c数据操纵;d数据库建立和维护;e数据库事物管理和运行管理;f其他扩展功能)
- 数据库系统:由数据库、数据库管理系统、数据库管理员、相应应用程序组成的存储、管理、维护和处理数据的系统(在通常情况下,一边简称为数据库)
❗️数据管理技术发展(数据库系统也是一种数据管理技术):
- 人工管理阶段(特点:数据不保存、应用程序需要设计管理数据的部分、数据不共享、数据不独立)
- 文件系统阶段(特点:数据长期保存在计算机、统一由文件系统管理、数据共享性、独立性差)
- 数据库系统阶段(特点:见下)
❗️数据库系统特点:
- 整体数据结构化:数据的结构面向整个组织或企业,不仅仅像文件系统那样只对于一个应用;而且数据之间有联系,整体有结构(数据库系统与文件系统本质区别)
- 由数据库管理系统统一管理控制:数据库的高共享同时也带来了并发负担,由数据库管理系统解决(数据安全保护、数据完整性检测、并发控制、数据库恢复等),强大功能简化了使用者的负担
- 数据共享性高、冗余度低且易扩展:数据面向整体共享,不用保存重复的数据,而且其能够及时基于现有数据扩展功能,不用另外重新设计数据
- 数据独立性高:包括物理独立性,和应用程序可以保存在不同物理存储中;逻辑独立性,与应用程序的逻辑相互独立,可以自由更改,只需要保证对外接口不变
❗️综上所述:数据库是长期存储在计算机内部,有组织、大量、共享的数据集合,可供多个用户共享,有小冗余度和高数据独立性。数据库管理系统在数据库建立、运行使用和维护时对数据库进行统一控制,保证数据安全和完整性,以及提供并发控制和故障时恢复技术。
1.2 数据库数据模型
数据模型就是对现实世界的抽象,是数据库系统的核心和基础,可分为两类三种
- 概念模型:也叫信息模型,按照需要对现实事物进行概念化提取,用于设计数据库(比如学生模型(学号、姓名、年纪…)
- 逻辑模型和物理模型:
-
- 逻辑模型:指数据库使用的数据结构设计的逻辑,用于数据库管理系统的实现——如层次模型,网状模型,关系模型等
- 物理模型:数据最底层的抽象,表示数据在系统内部的表示方式和存取方法
现实世界——>抽象概念——>机器世界
再谈概念模型相关概念,在抽象过程中的一些术语:
- 实体:客观存在可分辨的事物,可以是具体的物体,也可以是概念和联系(如订货记录,选课关系)
- 实体型:同类实体的共同特征的提取(相当于Java的类)
- 实体集:就是同类实体的集合
- 属性:实体具有的某一特征(学生具有学号,姓名等特征)
- 码:唯一标识实体的属性集合
- 联系;一般指实体集合之间的联系(学生和课程产生选课联系)(有一对一、一对多、多对多)
- E-R图:概念模型的一种表示方法——实体-联系(Entity-Relationship)方法
逻辑模型:也叫数据模型,由数据结构(静态特征)、数据操作(动态特征)和完整性约束(约束条件)组成
- 数据结构:描述数据库的组成对象和联系
- 数据操作:指数据库中对象运行执行的操作(查询和更新)
- 数据完整性约束:数据的约束条件,后面再讲
常用数据模型:
- 层次模型:唯一无双亲节点(根节点),其余节点只有一个双亲节点的结构。
-
- 优点(3):结构简单清晰、查询效率高、良好的完整性支持
- 缺点(4):不适合表示多对多关系、有多个双亲的关系引入虚节点or冗余、查询子女节点需要通过双亲、结构严密命令过于程序化(就像写程序代码一样,不够灵活)
- 网状模型:允许多节点无双亲or多双亲节点的结构(就是网状结构…),还提供码约束、一对多保证、支持双亲和子女之间的约束条件
-
- 优点(2):更符合现实世界描述、性能良好存取效率高
- 缺点(3):结构复杂、需要嵌入高级语言中使用不易学、记录之间的联系与存取路径有关用户需要了解系统结构细节加重了开发负担
- 关系模型:二维表状的数据结构(关系为一张表、一行记录为一个元组、一列为一个属性、分量指一格数据)
-
- 优点(3):严谨的数学支持(关系数据理论)、结构单一易学易用、存取路径透明数据独立性高更安全且简化了开发工作
- 缺点(2):查询效率不够高、需要开发查询优化增大了数据库管理系统开发难度
1.3 数据库系统结构
- 型和值(相当于类和对象)——模式是数据库系统的型,描述了数据库全体数据的结构和特征,是相对稳定的;而实例则是模式的值,数据库的实际内容,是相对变动的——例子:定义数据库的模式为学生记录、课程记录和选课记录三种关系模式;该数据库的一个实例则可以是2019级所有学生和开设课程,以及他们的所有选课记录。
数据库三级结构、二级映射:
- 模式:对数据库中全体数据的逻辑结构和特征的描述
- 外模式:子模式or用户模式,模式数据对于用户的映射,是用户权限可见的局部数据逻辑结构和特征的描述
- 内模式:存储模式,表示数据在计算机上的物理存储结构和存储方式,是数据在计算机内部的组织方式
- 外模式/模式映射:每个外模式都是模式在其局部数据的映射,所以可以有多个映射,外模式不实际保存数据,程序的使用只与数据的外部映射相关联,实现了逻辑独立性
- 模式/内模式映射:唯一映射关系,实现了物理存储结构与数据记录的独立,实现了物理独立性
数据库模式结构需要确定全局的逻辑结构描述,即要先确定模式
内模式的选择决定数据物理存取的时间和空间效率
外模式的设计决定应用的使用性和可扩展性
三级模式和二级映射实现了数据与程序的独立性(逻辑和物理独立),使得数据的定义和应用程序分离,而是由数据库管理工具管理,简化了开发负担,和维护成本。
数据库系统组成:
- 硬件:大内存、大磁盘、高数据传输速率
- 软件:数据库管理软件、操纵系统、编译系统和开发工具
- 人员:数据库管理员、系统分析和数据库设计人员、程序开发者、用户(偶然用户、简单用户、复杂用户)
二、关系数据库
2.1关系数据结构和定义
关系的相关概念:
- 域:一组具有相同数据类型的值的集合
- 笛卡尔积:D1 X D2 X… X Dn={(d1,d2,…,dn) | di 属于 Di}
- n元组:含有n个属性的元素集合,(d1,d2,…,dn)
- 分量:元素集合中的一个值,即di
- 多个属性做笛卡尔积所得的结果的子集可作为一个关系,实际上表示某个实体类有这些属性
- 关系的属性个数称为目或者度,为1叫一元关系,2叫二元关系
- 候选码:唯一标识一个元组(即一个实体)的最小属性集合
- 主码:从候选码中选取一个
- 主属性:注意是候选码中的属性,只要在一个候选码中就为主属性
- 非主属性:不在任何一个候选码中
- 全码:全部属性一起作为候选码
关系2条限定和6条性质:
-
关系为有限集合
-
关系每个列添加属性名来取消属性列的顺序
-
列同质(即同一列的分量来自同一域,同数据类型)
-
不同列可同质,但要给与不同属性名
-
列无序
-
行无序
-
行的候选码不能有重复的,否则不为候选码
-
分量取原子,不可再分(规范化条件基础,见后范式详解)
关系模式:关系的型,对关系的抽象描述
- 表示为R(U,