高性能mysql(1)-数据库概论

2017-08-07  本文已影响0人  小2斗鱼

数据库概论

数据库语言

数据库操纵语言:DML
数据库定义语言:DDL
数据库控制语言:DCL

数据库标准模式

三级模式

外模式:某一用户能够看见的和处理的数据结构描述
概念模式:从全局角度理解/管理的数据结构的描述,含相应的关联约束体现在数据之间的内在本质联系
内模式:存储在介质上的数据的结构描述,存储路径,存储方式,索引方式

两层映像

两个独立性

数据模型

数据模型:规定模式统一描述方式的模型,包括数据结构,操作,约束数据模型是对模式本身结构的抽象,模式是对数据本身结构的抽象。现在的数据库基本都是关系模型。

关系模型

  1. 描述数据库各种数据的基本结构形式。(Table/Relation)
  2. 描述表与表之间可能发生的各种操作。(关系运算)
  3. 描述这些操作所应遵循的各种约束条件。(完整性约束)

关系

  1. 域(列):一组值的集合。这组值具有相同的数据类型。
  2. 元组(行):从每一个域中任取一个值所形成的一种组合。
  3. 笛卡尔积:所有可能元组的集合。
  4. 关系:笛卡尔积中具有意义的某些元组的集合。
  5. 属性名:每一列的名字
  6. 表:由关系集合和属性名构成
    关系模式是关系的结构,关系模式是稳定的,关系是关系模式某一时刻的数据,是随时间而变化的。(可以大致的理解为表示关系模式而每一组数据是关系)

关系模型的完整性(*)

三个完整性(*)

例如,如果在学生表和选修课之间用学号建立关联,学生表是主表,选修课是从表,那么,在向从表中输入一条新记录时,系统要检查新记录的学号是否在主表中已存在,如果存在,则允许执行输入操作,否则拒绝输入,这就是参照完整性。
参照完整性还体现在对主表中的删除和更新操作,例如,如果删除主表中的一条记录,则从表中凡是外键的值与主表的主键值相同的记录也会被同时删除,将此称为级联删除;如果修改主表中主关键字的值,则从表中相应记录的外键值也随之被修改,将此称为级联更新。
要注意的是再建立表的时候设置联级更新的时候在外键约束上必须开启此操作[On delete cascade],否则将违反约束条件。

范式和反范式(*)

函数依赖

简单来说函数依赖就是某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。
例如:

一个关系:
U={学号,姓名,年龄,班级,班长,课号,成绩}
班号 -> 班长
学号,课号 -> 成绩

完全函数依赖

例如:U={学号,姓名,年龄,班级,班长,课号,成绩}
{学号,课号} -> U             完全依赖
{学号,课号} -> 姓名         部分依赖

学号就可以确定姓名

传递依赖

例如:U={学号,姓名,年龄,班级,班长,课号,成绩}
学号->班号 ,班号->班长
学号-> 班长

第一范式

第一范式(1NF)是指数据库表的每一列都是不可分割的原子数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

第二范式

若关系R(U)满足第一范式,且U中的每一个非主属性完全函数依赖于候选键,则称R(U)属于第二范式。
使用单值候选键可以有效的避免部分函数依赖

第三范式

关系R的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。
满足范式的数据库设计可以有效的减少数据的非受控冗余,但是随之带来的问题就是表之间的管理变多了,在查寻数据的时候难免要关联多张表,加大了数据库的开销,所以在实际的应用中都是范式和反范式混合使用的。

子查询(**查询优化很多都是基于此展开的)

in

表达式 [Not] in 子查询
语义:判断表达式的结果是否在子查询的结果之中

some

表达式 [<,>,<=,>=,<> ] some 子查询
语义:表达式值至少有一个结果和子查询结果的某一个值满足运算关系,则为真

all

表达式 [<,>,<=,>=,<> ] all 子查询
语义:表达式值结果和子查询所有值满足运算关系,则为真

exists

[not] exists 子查询
语义:子查询中有无结果存在

总结:
查询 最低 ,最高 等,一般使用 <=all ,>=all
查询 不是最低,不是最高使用 >some <some
查询 所有,没有 一般用 not exists

关系代数操作

并运算:子查询 Union [All] 子查询
交运算:子查询 Intersect[All] 子查询
差运算:子查询 Except[All] 子查询
通常情况下自动删除重复元组:不带All ,若要保留重复元组,则带ALL
在mysql中不支持差运算和交运算

连接操作

Inner join          内连接 
Left outer join      左外连接
Right outer join     右外连接
Full outer join      全外连接
Natural  join       自然连接

关于连接操作的区别:
连接操作的区别

视图

在三级模式两级映射结构中对应概念模式的数据在SQL中被称为基本表 ,而对应外模式的的数据称为视图。视图不仅包含外模式还包含了其E-C映像。视图在SQL中只存储由其基本表导出视图所需的公式,即由基本表产生的视图映像信息,其数据并不存储,而是在运行过程中动态产生和维护的。对视图数据的更改最终要反应在对基本表的更改上。

上一篇 下一篇

猜你喜欢

热点阅读