1 数据库系统基础
1.1 数据库系统概述
1.1.1 基本概念
数据:描述事物的符号记录
数据的含义称为数据的语义,数据与其语义是不可分的。
数据库:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合
数据库管理系统:位于用户与操作系统之间的一层数据管理软件
数据库系统:数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员(DataBase Administrator,DBA)组成的存储、管理、处理和维护数据的系统
数据模型三要素:数据结构、数据操作、完整性约束
数据源(DATA SOURCE):远程数据库的别名
ODBC:开发工具访问数据库统一的平台
JDBC:Java数据库连接
1.1.2 数据独立性
数据独立性包括物理独立性和逻辑独立性(本质:希望不管怎么变,想不修改应用程序)
物理独立性:指用户的应用程序与数据库中数据的物理存储是相互独立的
逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的
1.2 概念模型
实体(entity):客观存在并可相互区别的事物,虚拟的概念
属性(attribute):实体所具有的某一特性,共同的性质
码(key),键:唯一标识实体的属性集
实体类型(entity type,class):用实体名及其属性名集合来抽象和刻画同类实体。例如**学生(学号,姓名,性别,出生年月日,所在院系,入学时间)**就是一个实体型
实体集(entity set):同一类型实体的集合。例如,全体学生就是一个实体集
联系(relationship):实体集内的单个实体之间的联系通常是指不同实体集之间的联系,实体之间的联系有一对一、一对多和多对多等多种类型
域:属性的取值范围
Association(联系、关联)
数据库领域中主要的逻辑数据模型有:
- 层次模型
- 网状模型
- 关系模型
- 面向对象数据模型
- 对象关系数据模型
- 半结构化数据模型
其中,层次模型和网状模型是非关系模型,统称为格式化模型。
关系数据库系统采用关系模型作为数据的组织方式
基本概念:
关系(relation):一个关系对应通常说的一张表
元组(tuple):表中的一行即为一个元组
属性(attribute):表中的一列即为一个属性,给每一个属性起一个名称即为属性名
码,码键(key):表中的某个属性组,它可以唯一确定一个元组
域(domain):域是一组具有相同数据类型的值的集合。即某个属性的取值范围
分量:元组中的一个属性值
关系模式:对关系的描述,一般表示为
关系名(属性1,属性2,···,属性n)
PS:关系模型要求关系必须是规范化的,每一个分量必须是一个不可分的数据项。
1.3 数据库系统的结构
1.模式(schema)
也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,不同的dbms表示模式的方法不一样!(其实就是Mysql和SQL Server语法有区别的意思)
2.外模式(external schema)
也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。(其实就是模式的子集,有多少权限,就看多少)
3.内模式(internal schema)
也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
二级映像功能与数据独立性
1、外模式/模式映像
当模式改变时,只需修改外模式/模式映像,而不需要修改外模式,从而应用程序不需要修改。保证了数据与程序的逻辑独立性。
2、模式/内模式映像
当内模式改变时,只需修改模式/内模式映像,而不需要修改模式,从而应用程序也不需要修改,保证了数据与程序的物理独立性。
2. 关系数据库
2.1 关系数据结构及形式化定义
基本概念:
候选码(key):某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码(candidate key)
主码:若一个关系有多个候选码,则选定其中一个为主码(primary key),主码只可以有一个
主属性(prime attribute):候选码的诸属性称为(主属性)
非主属性:不包含在任何候选码中的属性
全码(all key):关系模式的所有属性是这个关系模式的候选码;
2.2 关系操作
常用的关系操作包括查询操作和插入、删除、修改操作两大部分
查询操作是关系操作中最重要的部分,又可分为选择、投影、连接、除、并、差、交、笛卡尔积等。其中选择、投影、并、差、笛卡尔积是5种基本操作。
关系操作的特点是一次一集合,非关系数据模型的数据操作方式则是一次一记录。
关系操作能力通常用代数方式或逻辑方式来表示,分别称为关系代数和关系演算。
程序 { 关系代数语言(例如 I S B L ) 关系演算语言 { 元组关系演算语言(例如 A L P H A 、 Q U E L ) 域关系演算语言(例如 Q B E ) 具有关系代数和关系演算双重特点的语言(例如 S Q L ) 程序 \begin{cases} 关系代数语言(例如ISBL) \\ 关系演算语言 \begin{cases} 元组关系演算语言(例如ALPHA、QUEL) \\ 域关系演算语言(例如QBE) \end{cases} \\ 具有关系代数和关系演算双重特点的语言(例如SQL) \end{cases} 程序⎩ ⎨ ⎧关系代数语言(例如ISBL)关系演算语言{ 元组关系演算语言(例如ALPHA、QUEL)域关系演算语言(例如QBE)具有关系代数和关系演算双重特点的语言(例如SQL)<