数据库基础
2021-04-15 11:05:47 0 举报
AI智能生成
数据库基础与原理
作者其他创作
大纲/内容
学习数据库之前
数据和数据库的含义是什么?
数据的本质
数据与数据库
前置知识
离散数学
数据结构
集合论
代数
数据库基本概念
体系结构
三层结构
外模式
逻辑模式
内模式
两个映像
外模式/逻辑模式映像
逻辑模式/内模式映像
结构之间独立
每个模式之间通过映像连接
数据模型
就是对现实世界信息的模拟
将现实世界的业务转换为信息的结构化存储
要求
能够真实的对现实需求进行模拟
易于人类理解
便于机器操作与实现
要素
1. 数据结构
静态属性,表示数据的表述
2. 数据操作
动态属性,对数据的增删查改等操作
3. 数据约束条件
规则集合,如:条码不能重复等规则约束
因此,数据库设计要求的基本要素:要能够有一种数据结构归纳/表达现实信息;要能够对归纳的信息进行复杂的操作,这是最重要的功能;要能够对归纳的数据集进行一组规则的设定
模型的分类-有那些数据模型
1. 关系模型(结构化模型)
即常说的关系型数据库
特点:二维表
行代表数据实体-对应现实模型
列代表模型的属性
特点
完全结构化,可扩展性差
操作性强
历史
最早由IBM的E.F.Codd提出
E.F.Codd, A Relational Model of Data for Large Shared Data Banks Communication of ACM, 1970-论文
提出关系代数和关系演算
1972年提出数据库三范式
1974年提出BD范式
2. 半结构化
网状模型
层次模型
xml
json
半结构化特点
不完全结构化,可扩展。格式较为宽松,嵌套
不同结构的模型区别
本质不变,区别在于数据结构不同
非关系
nosql
21世纪需求产生的
特点是不使用sql操作数据
数学基础
关系模型
核心建立在集合代数基础上
案例
一张学生信息表
字段
姓名
学号
性别
年龄
籍贯
数学概念
域-Domain
一组相同数据类型的值的集合
例
整数的集合等
{1,2,3,4}
学生信息表案例
每一列就是一个域
{男,女}
{张三,李四,王五}
{21,22,32,19}
{四川,河北}
笛卡尔积
概念
给定一组域D1, D2, D3, ... , Dn
该域可以完全相同、完全不同,部分相同
笛卡尔积:不同的域(或者集合)相乘
例
D1, D2, D3, ... , Dn的笛卡尔积为
D1 x D2 x D3 x ... x Dn = {(d1, d2, ... , dn ) | di ∈ Di, i = 1, 2, ... , n}
所有域的所有取值的一个集合,且不重复
案例
D1 = name = {张三,李四}
D2 = age = {21,22}
D3 = gender = {男,女}
D1 x D2 x D3 = {(张三,21,男),(张三,21,女),(张三,22,男),(张三,22,女),(李四,21,男),(李四,21,女),(李四,22,男),(李四,22,女)
根据案例得知笛卡尔积的元素个数等于:每个集合元素数量乘积:2x2x2=8
在笛卡尔积中每个集合一行的叫做:元组,上述{张三,21,男}就是一个三元组
元组中每个元素是一个:分量,也叫做一个数据项
二维表达方式
笛卡尔积可以用一张二维表表达
表中每一行就是一个元组
表中每一列就是一个域
码(key,value)
候选码(candidate key)
在关系中唯一能够标识一个元组的属性或者属性集合
案例
在学生信息关系中
姓名、年龄等是可以重复的,因此无法唯一标识一个元组
但是学号不可重复,学号是候选码
注意
有时候单个属性或者域无法唯一标识元组,因此需要组合多个域或者属性才能够标识
主属性(primary attribute)
候选码的各个属性
有时候单个属性或者域无法唯一标识元组,因此需要组合多个域或者属性才能够标识
主码(primary key)
用户选作元组标识的候选键
全码
关系中所有属性是候选码的话,就是全码
关系
关系-Relation
D1 x D2 x ... x Dn的子集叫做在域D1,D2,...,Dn上的关系
表示为
R(D1, D2, ... , Dn)
R: 关系名
n: 关系的目或度(degree)
当n=1时,称为单元关系(unary relation)
当n=2时,称为二元关系(binary relation)
笛卡尔积会存在重复并且矛盾的数据,因此建立取出有意义的元组来构造关系
案例
导师,专业,研究生 = {(张三,计算机专业,李四),(张三,计算机专业,王五),(赵四,计算机专业,刘能)}
关系
专业:导师 = 1:n
一个专业有多个导师
导师:研究生 = 1:n
一个导师带多个研究生
我们通过域和元组建立了一组组具有抽象现实模型的关系,因此关系就是一张二维表
为了区分列,我们称之为属性
三类关系
基本关系
实际存在的表,实际存储数据的逻辑表示
不同的列可能来自同一个域
查询表
查询结果对应的表
视图
由基本表或其他视图导出的表,是虚拟的
关系模式
案例
学生(学号,姓名,性别,年龄,籍贯)
这个案例的设计并不好,以为年龄这个属性是变化的,因此写成出生日期才是合理的。年龄应当计算出来
关系模式就像关系的元数据,定义了一种数据结构或者说类型
在数据库对应的编程语言中,常常叫做一个实例
综上所述,关系模式表示为R(U),或者R(A1, A2, A3 , ... , An)
R:关系名
通常数据库中叫做表名
A:属性名
对应数据库中的field-字段名
关系模式一旦确定下来,就是稳定的,所以我们说是静态的
而关系则是关系模式的实例,是具体的,是动态的
关系操作
curd
特点
集合操作方式
如:购买鞋,首先查询出鞋的商品信息集合
数据库是以集合形式进行操作的
关系数据语言
关系代数语言
关系演算语言
关系数据库
数据库设计
高级
0 条评论
下一页