夜间模式
1. 数据库简述
数据库是存储数据与管理的地方
DB 数据库
DBMS 数据库管理系统
RDBMS 关系数据库管理系统
DBMS 必须提供1.数据的安全性保护,2.数据的完整性保护,3.并发控制,4.数据库恢复。
数据独立:数据库的数据与应用程序的互不依赖,分为物理独立性和逻辑独立性
- 物理独立性:用户的应用程序和存储在磁盘的数据库数据是相互独立
- 逻辑独立性:用户应用程序与数据库的逻辑结构相互独立,
数据独立有利于数据库改变时应用程序尽可能不改变或者小改变。
三级模式俩级映像 , 模式也被称作概念模式和逻辑模式
外模式(子模式/用户视图)
用户看见的逻辑数据模型描述的数据,是模式的子集,根据用户的不同需求,用户视图就不一样,一个模式可以拥有许多外模式,意外模式建立的数据库为用户数据库。用户只能看见与自己有关的数据,做到了保护数据安全的作用。
模式(逻辑模式/概念模型)
是数据库中全部数据的逻辑结构和特征的描述、数据结构和属性的描述。系统为了减少数据冗余,实现数据共享,对所有用户数据综合抽象得到的全局数据视图。
内模式(存储模式/物理模式)
是数据物理结构和储存方式的描述,对数据内部表示或底层描述的表示,把系统的模式(全局逻辑模式)组织成最优的物理模式;物理数据是概念数据库的具体实现,物理模式建立的数据库为物理数据库。
物理模式是实际存在的,逻辑模式是对物理模式的抽象化,物理模式是对逻辑模式的具体实现,用户数据库(外模式)是逻辑模式的子集。
外模式<--外模式/模式映像-->模式
定义外模式与模式之间的对应关系。每一个外模式对应一个映像,
映象定义(外模式与模式之间对应关系)包含在各自外模式的描述中即呈现给用户的视图中。
用途是:保证数据逻辑独立性ex.模式变了,修改外模式/模式映象映像即可,不会影响应用程序。
==保证了数据的逻辑独立性==
模式<---模式/内模式映像--->内模式
一个数据库只有一个此映象。映象定义包含在模式描述中。
用途是:保证数据物理独立性ex.存储方式变了,修改映象就好,模式、应用程序不受影响。
==保证了数据的物理独立性==
概念模型
概念模式是现实社会到信息世界的第一层抽象,是设计数据库的有力工具,是数据库设计人员和用户交流的语言。数据的范畴:现实世界,信息世界和计算机世界。现实世界是客观世界,存在各种事物及其关系。信息世界(观念世界)是现实世界在人们头脑的抽象化,客观事物在信息世界内是实体,实体之间的联系是实体模型或概念模型。计算机世界是信息世界里的信息在计算机的数字化处理后,在计算机硬件系统和DBMS中呈现的数据。
实体 - 联系模型(E-R模型)
ER模型是概念模型的一种,由实体集、属性和联系组成。
实体是现实世界的对象,客观存在并相互区分的事物。例如,班级上的每一个人,一台电脑,早餐的豆浆等等
属性:实体拥有的某一特征称为属性,一个实体由若干个属性来描述。比如一个人的身高,体重等等组成一个人,而身高体重是一个人的属性。
- 属性必须是不可分的最小数据项,属性不可包含其他属性。
- 同一属性不能与其他多个实体具有联系
实体集具有相同属性的集合是实体集,人类是一个实体集,班级是一个实体集,班级里有很多同学。
键唯一标识实体的不同。学生的学号,中国公民的身份证号。
实体型是用实体型和属性名的集合抽象一个实体,实体名(属性1,属性2,属性3.......)
例如 班级(学号,名字,年龄,身高,体重) ,其中下划线标明
联系:实体集内部属性与实体集的关系,实体集之间的关系。
例如:
多值属性的椭圆用两个圈,完全参与两条无向边
派生属性,动态的,是数据库中的衍生数据,是一种特殊属性。例如人的出生日期可以派生出人的年龄这个属性,在e-r图用虚线画椭圆,用虚线无向图连接实体集。
数据模型分为
层次模型
ascii┌─────┐ │ │ └─────┘ │ ┌───────┴───────┐ │ │ ┌─────┐ ┌─────┐ │ │ │ │ └─────┘ └─────┘ │ │ ┌───┴───┐ ┌───┴───┐ │ │ │ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │ │ │ │ │ │ └─────┘ └─────┘ └─────┘ └─────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15网状模型
ascii┌─────┐ ┌─────┐ ┌─│ │──────│ │──┐ │ └─────┘ └─────┘ │ │ │ │ │ │ └──────┬─────┘ │ │ │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │─────│ │─────│ │ └─────┘ └─────┘ └─────┘ │ │ │ │ ┌─────┴─────┐ │ │ │ │ │ │ ┌─────┐ ┌─────┐ │ └──│ │─────│ │──┘ └─────┘ └─────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15关系模型
ascii
┌─────┬─────┬─────┬─────┬─────┐
│ │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┤
│ │ │ │ │ │
└─────┴─────┴─────┴─────┴─────┘
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
在 长期使用中,关系模型获得 了市场的认可,原因是理解起来简单,使用起来方便
关系模型
关系模型分为三个组成:数据结构、数据操作和完整性规则
关系模型建立在数学概念的基础上,用二维表描述实体与实体之间的关系。
关系模型的术语:
- 关系:一张表是一个关系
- 元组:表格一行是一个元组
- 属性:一列是一个属性
- 主键:一个属性,是唯一的,可以区分其他元组的
- 域:列的取值范围
- 分量: 元组的一个属性
- 关系模式:对关系的描述,表示为关系名(属性1,属性2!……)例如 学生(班级,年龄,姓名,性别,学号)
键:关键码,用来标识行(元组)一个或几个列(属性),键唯一叫唯一键否则为复合键
- 超键:一个关系里面,唯一标识元组的属性或属性集为关系的超键
- 候选键:一个属性集标识唯一元组,且不含多余的属性,称为关系的候选键
- 主键:一个关系的候选键中,选择一个候选键为主键,实现表中“两个元组不完全相同”
- 外键:一个关系中有一个键在另外一个键上,作为连接俩个关系的键
注意注意==SQL不区分大小写==,当有些数据库会区分大小写,建议关键字大写。
关系运算
交集、并集、差、笛卡尔积
并( U )、交( ∩ )、差(-)、笛卡尔积( × )
比较运算(>,<,>=,<=,≠,=)
大于( >)、小于(<)、等于( = )、大于等于( ≥ )、小于等于( ≤ )、不等于( ≠ )
逻辑运算
与( ^ )、或( V )、非( ┐);
关系运算符
选择( σ ) 、投影( π )、∞ (连接)、 除( ÷ )
选择( σ )与where一个意思 σ (选择条件) (表名)
投影( π )与select一个意思 π~投影名~ (表名)
连接( ∞ )
在连接符下边可以写连接条件
特殊连接
数据类型
名称 | 类型 | 说明 |
---|---|---|
int | 整型 | 4个字节范围在+-21亿 |
bigint | 长整型 | 8字节+-922亿 |
real | 浮点型 | 4字节+-10^38^ |
float | 浮点型 | 4字节+-10^38^ |
double | 浮点型 | 8字节+-10^308^ |
decimal(m,n) | 高精度小数 | m代表一个有m位数,其中n代表n位小数,整数部分m-n默认(10,0) |
char(n) | 定长字符串 | 存储指定长度的字符串,char(10)表示固定储存100位字符 |
varchar(n) | 变字符串 | 储存可变的字符串,varchar(20)可以储存0~20位字符 |
boolean | 布尔类型 | Ture或False |
date | 日期类型 | 存储日期,2022-06-14 |
time | 时间类型 | 存储时间,20:18:19 |
datetime | 日期和时间类型 | 存储时间+日期,2022-06-14 20:18:19 |
enum | 枚举类型 | 例如enum('男','女')no null;可以选择性别 |
日期类型的区别
类型名称 | 日期格式 | 日期范围 | 存储需求 |
---|---|---|---|
YEAR | YYYY | 1901 ~ 2155 | 1 个字节 |
TIME | HH:MM:SS | -838:59:59 ~ 838:59:59 | 3 个字节 |
DATE | YYYY-MM-DD | 1000-01-01 ~ 9999-12-3 | 3 个字节 |
DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 8 个字节 |
TIMESTAMP | YYYY-MM-DD HH:MM:SS | 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC | 4 个字节 |
==对于字符类型的补充==
类型名称 | 说明 | 存储需求 |
---|---|---|
TINYTEXT | 非常小的非二进制字符串 | L+1字节,在此,L<2^8 |
TEXT | 小的非二进制字符串 | L+2字节,在此,L<2^16 |
特殊字符串需要用到\
转义,比如 ' ' \ " "
==SQL语言==
结构化查询语言,使用sql语言操作数据库系统,添加,删除,修改,查询数据,对数据库进行修改,维护。sql语言在不同的数据库中有许多不同的扩展 ^因为MySQL是本人课程,文中都是MySQL的标准^
SQL语言定义了这么几种操作数据库的能力 :
DDL : 数据定义语言(建表,定义数据类型以及修改)
DML : 数据操作语言(insert,delete,update进行数据的修改)
DQL : 数据查询语言(select,查询数据等等)
TCL : 事务控制语言
DCL : 数据数据语言
CCL : 指针控制语言
~后面三种后面补,好像还没学~
数据库中表的每一行称为记录(Record),记录是一个逻辑意义上的数据。
表的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段。
NULL
不等于””
关系数据库中,一张表是一个关系,关系是通过==主键==和==外键==来维护的。
每张表之间存在一对多
,多对多
,一对一
的关系,例如一个学校有很多学生,一个老师教很多班级,一个学生在一个班级里面,有 很多老师教这个班的不同课程
完整性校验
DBMS插入语句时会进行规则完整性校验
域完整性
字段规定的数据类型,格式,值域范围,是否允许为空
实体完整性
主关键字对应的主属性不为空不重复
参照完整性
插入约束
插入记录的时候,检查外键是否在主表存在,存在允许插入,不存在则拒绝插入
删除约束
删除主表的记录时,表中被删除的记录作为外键的值,相关表的记录也被删除,级联删除。
更新约束
更新主表中关键字的值时,相关表中作为外键的值随之修改,级联更新。
用户定义的完整性
- 对于not null约束是否是非空
- 对于unique约束是否唯一
- 对于有值域约束的属性值是否在值域范围内
关系模型数据依赖以及范式
第一范式
- 数据组的每个属性只包含一个值
- 关系中的每个数组包含相同数量的值
- 关系中每个数组的一定不能相同
第二范式
第二范式(2NF)规定关系在第一范式中,关系的所有属性依赖于整个候选键
第三范式
第三范式(3NF)关系在第二范式中,非键属性相互之间无关,必须依赖于键。
理想的设计目标是规范话规则存储数据,实际工作中却经常要违反第二第三范式,解规范化。