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