基础

数据库基础

数据

数据库是数据的集合
  • 数据量大
  • 数据不随程序的结束而消失
  • 数据被多个应用程序共享
  • 大数据

数据库发展史

  • 萌芽阶段:文件系统 使用磁盘文件来存储数据
  • 初级阶段:第一代数据库 出现了网状模型、层次模型的数据库(网状数据库和DNS根域相似,有层次迭代;层次数据库和文件系统根相似)
  • 中级阶段:第二代数据库 关系型数据库和结构化查询语言
  • 高级阶段:新一代数据库 “关系-对象”型数据库
目前主流是关系型数据库,相当于二维表 EXECL
client —> network —> dbms —> data

文件管理系统的缺点

  • 编写应用程序不方便
  • 数据冗余不可避免
  • 应用程序依赖性
  • 不支持对文件的并发访问
  • 数据间联系弱
  • 难以按用户视图表示数据
  • 无安全控制功能

数据库管理系统的优点

  • 相互关联的数据的集合
  • 较少的数据冗余
  • 程序与数据相互独立
  • 保证数据的安全、可靠
  • 最大限度地保证数据的正确性
  • 数据可以并发使用并能同时保证一致性

数据库管理系统

  • 数据库是数据的汇集,它以一定的组织形式存于存储介质上
  • DBMS是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心
  • DBA:负责数据库的规划、设计、协调、维护和管理等工作
  • 应用程序指以数据库为基础的应用程序

数据库管理系统基本功能

  • 数据定义
  • 数据处理
  • 数据安全
  • 数据备份

数据库系统的架构

  • 单机架构
  • 大型主机/终端架构
  • 主从式架构(C/S)
  • 分布式架构

关系型数据库

  • 关系 :关系就是二维表,其中:表中的行、列次序并不重要
  • 行row:表中的每一行,又称为一条记录
  • 列column:表中的每一列,称为属性,字段
  • 主键Primary key:用于惟一确定一个记录的字段
    • 一张表只有一个PK,且设置的PK字段不能为空,PK对应的字段(列)所有记录(值)是唯一
      外键 fk —> xxx.id 一张表某个字段关联另一个表的ID字段值 ,如员工对应职位
  • 域domain:属性的取值范围,如,性别只能是‘男’和‘女’两个值
  • RDBMS: MySQL: MySQL, MariaDB, Percona Server(专业的分支,使用者层层顺鄙视) PostgreSQL: 简称为pgsql(性能较高),EnterpriseDB Oracle MSSQL DB2 常规的模式 CE(Community Edition)社区版 SE(Standard Edition)标准版 EE(Enterprise Edition))企业版

简易数据规划流程

  • 第一阶段:收集数据,得到字段
    • 收集必要且完整的数据项
    • 转换成数据表的字段
  • 第二阶段:把字段分类,归入表,建立表的关联
    • 关联:表和表间的关系
    • 分割数据表并建立关联的优点
    • 节省空间
    • 减少输入错误
    • 方便数据修改
  • 第三阶段:
    • 规范化数据库

数据库的正规化分析

  • 数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性。关系模型的发明者埃德加·科德最早提出这一概念,并于1970年代初定义了第一范式、第二范式和第三范式的概念
  • RDMBS设计范式基础概念 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,不同的规范要求被称为不同范式,各种范式呈递次规范,越高的范式数据库冗余越小
  • 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般数据库只需满足第三范式(3NF)即可

范式

范式又称数据库规范,一般了解3项规范即可,PK为主键约束
  • 1NF:无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的原子性。除去同类型的字段,就是无重复的列说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库(复合主键,多个字段成为一个主键,多个字段组合起来)
  • 2NF:属性完全依赖于主键,第二范式必须先满足第一范式,要求表中的每个行必须可以被唯一地区分。通常为表加上一个列,以存储各个实例的唯一标识PK,非PK的字段需要与整个PK有直接相关性(属性依赖于主键,若和部分主键有依赖关系,就违反了第二范式)跨表查询没有一张表查询快,逻辑上复杂,考虑实现情况
  • 3NF:属性不依赖于其它非主属性,满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系
一般在生产中,特定的场景和需求下,可以违反3个范式,会提高数据库的性能

SQL概念

  • SQL: Structure Query Language 结构化查询语言,关系数据库 SQL解释器:数据存储协议:应用层协议,C/S
  • S:server, 监听于套接字,接收并处理客户端的应用请求
  • C:Client 客户端程序接口 CLI/GUI 应用编程接口 ODBC:Open Database Connectivity JDBC:Java Data Base Connectivity

约束

约束:constraint,表中的数据要遵守的限制
  • 主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即NOT NULL,一个表只能有一个(主键唯一)
  • 惟一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL,一个表可以存在多个
  • 外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据(外键字段特定某个值)
  • 检查:字段值在一定范围内
外键和检查约束一般现在很少用了,一般写程序调用API时,会写好规则,在应用程序中限制

基本概念

  • 索引:将表中的一个或多个字段中的数据复制一份另存,并且按特定次序排序存储(相当一本书的目录,查询很快,也有劣势,修改数据用降低速度,需要更新索引
  • 关系运算: 选择:挑选出符合条件的行(grep命令相似,行匹配) 投影:挑选出需要的字段(awk命令相似,列模式) 连接:表间字段的关联(主键关系)

数据模型

  • 数据抽象:
    • 物理层:数据存储格式,即RDBMS在磁盘上如何组织文件(文件、裸设备、分区、逻辑卷,一般属于DBA关注的)
    • 逻辑层:DBA角度,描述存储什么数据,以及数据间存在什么样的关系(存储什么数据,数据之间的关联,比如范式、主键等)
    • 视图层:用户角度,描述DB中的部分数据(给用户查看的数据,设置相关的权限,一般由开发负责)
  • 关系模型的分类:
    • 关系模型
    • 基于对象的关系模型
    • 半结构化的关系模型:XML数据

mysql 历史

  • 1979年:TcX公司 Monty Widenius,Unireg
  • 1996年:发布MySQL1.0,Solaris版本,Linux版本
  • 1999年:MySQL AB公司,瑞典
  • 2003年:MySQL 5.0版本,提供视图、存储过程等功能
  • 2008年:Sun 收购
  • 2009年:Oracle收购sun
  • 2009年:Monty成立MariaDB
  • 注意:mysql mariadb 版本更新不一样

MySQL系列

  • 版本演变: MySQL:5.1 –> 5.5 –> 5.6 –> 5.7 –>8.0 MariaDB:5.5 –>10.0–> 10.1 –> 10.2 –> 10.3

mysql特性

  • 插件式存储引擎:也称为“表类型”,存储管理器有多种实现版本,功能和特性可能均略有差别;用户可根据需要灵活选择,Mysql5.5.5开始innoDB引擎是MYSQL默认引擎 MyISAM ==> Aria 早期 InnoDB ==> XtraDB 目前主流
  • 单进程,多线程
  • 诸多扩展和新特性
  • 提供了较多测试组件
  • 开源

小结

1、数据库存储引擎 2、特性 3、范式等

主键 一张表只有一个PK,且设置的PK字段不能为空,PK对应的字段(列)所有记录(值)是唯一
外键 fk —> xxx.id 一张表某个字段关联另一个表的ID字段值 ,如员工对应职位 一对多
多对多,可构建第三张表,若使用两张表可能会导致有过多的冗余数据
id, fk —> x1.id, fk —> x2.id
复合主键 由多个字段联合成一个PK,比如将两个或多个字段联合起来做唯一
 
Loading...