:数据库原理)
文章目录MySQL 系列1 数据库原理1.1 数据的分类结构化数据半结构化数据非结构化数据1.2 数据管理发展历史1.2.1 三个发展阶段1.2.2 文件管理系统优缺点1.3 数据库管理系统1.3.1 核心概念1.3.2 DBMS 特点1.3.3 DBMS 七大基本功能1.3.4 DBMS 发展历史1.3.5 数据库软件排名1.4 关系型数据库理论1.4.1 E‑R 模型实体‑联系模型 ERD1.4.2 实体间三种联系类型1.4.3 CRUD 数据操作1.4.4 数据库范式正规化1NF 第一范式原子性2NF 第二范式消除部分依赖3NF 第三范式消除传递依赖1.4.5 SQL 结构化查询语言SQL 语言五大分类SQL 编写规范SQL 注释写法数据库对象命名规则*学习复盘MySQL 系列实验环境 ip192.168.108.1281 数据库原理1.1 数据的分类数据按照结构类型分为三类结构化数据、半结构化数据、非结构化数据。结构化数据可以用二维表来逻辑表达实现的数据拥有固定格式、有限长度可使用关系型数据库存储。特点以行为单位一行代表一个实体每行属性完全相同存储在数据库中使用统一结构描述先定义结构再录入数据。示例二维表nonameage1唐三1232叶凡456半结构化数据介于结构化与非结构化中间属于自描述结构结构和数据混合在一起先有数据再有结构。常见格式JSON、XML、HTMLNoSQL 数据库。JSON 范例[ { id:1, name:唐三, age:123 }, { id:2, name:叶凡, age:456 } ]非结构化数据没有固定格式、长度不固定无法用二维表描述整体存储。典型二进制文件、音视频、图片。1.2 数据管理发展历史数据管理经历三个阶段人工管理 → 文件系统 → 数据库系统1.2.1 三个发展阶段人工管理阶段20 世纪 50 年代中期以前硬件磁带、打孔纸带无专门数据管理软件用途科学计算处理方式批处理。文件系统管理阶段50 年代后期60 年代中期硬件磁盘、磁鼓可以随机存取软件文件系统管理数据特点数据可以长期保存支持批处理、联机实时处理。数据库系统阶段60 年代后期至今硬件大容量磁盘硬件成本下降通过 DBMS 数据库管理系统管理数据特征高数据独立性、低数据冗余度。1.2.2 文件管理系统优缺点优点文件格式多样化数据长期保存具备一定独立性。缺点无统一访问接口不支持并发访问缺少安全控制很难按照业务视图组织数据数据之间关联弱冗余不可避免。1.3 数据库管理系统1.3.1 核心概念数据库Database数据库是按照一定的数据结构来组织存储和管理数据的仓库。 是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库管理系统Database Management System(DBMS)数据库管理系统是一种操纵和管理数据库的大型软件用于建立使用和维护数据库简称DBMS。 它对数据库进行统一的管理和控制以保证数据库的安全性和完整性。数据库管理员Database Administrator(DBA)DBA是从事管理和维护数据库管理系统DBMS的相关工作人员的统称属于运维工程师的一个分支 主要负责业务数据库从设计、测试到部署交付的全生命周期管理。 DBA的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高可用性能。应用程序Application一个应用程序通常是指能够执行某种功能的软件程序。1.3.2 DBMS 特点使用复杂数据模型数据冗余小易扩展实现数据共享具有较高的数据和程序独立性。数据库的独立性表现在物理独立性和逻辑独立性两个方面。数据库管理系统为用户和应用程序提供了方便和统一的查询接口数据库管理系统的存在使得数据可以和应用程序解耦内置能力并发控制、备份恢复、完整性、安全性保障1.3.3 DBMS 七大基本功能数据的定义DBMS提供了数据定义语言DDLData Definition Language供用户定义数据库的三级模式结构两级映像以及完整性约束和保密限制等约束。DDL主要用于建立、修改数据库的库结构。DDL所描述的库结构仅仅给出了数据库的框架数据库的框架信息被存放在数据字典中。数据操作DBMS提供数据操作语言DMLData Manipulation Language供用户实现对数据的追加、删除、更新、查询等操作。数据组织、存储与管理DBMS要分类组织、存储和管理各种数据包括数据字典、用户数据、存取路径等需确定以何种文件结构和存取方式在存储级上组织这些数据如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率选择合适的存取方法提高存取效率。数据库的运行管理数据库的运行管理功能是DBMS的运行控制、管理功能包括多用户环境下的并发控制、安全性检查和存取限制控制、完整性检查和执行、运行日志的组织管理、事务的管理和自动恢复即保证事务的原子性。这些功能保证了数据库系统的正常运行。数据库的维护这一部分包括数据库的数据载入、转换、转储、数据库的重组和重构以及性能监控等功能这些功能分别由各个使用程序来完成。数据库的保护数据库中的数据是信息社会的战略资源所以数据的保护至关重要。DBMS对数据库的保护通过4个方面来实现数据库的恢复、数据库的并发控制、数据库的完整性控制、数据库安全性控制。DBMS的其他保护功能还有系统缓冲区的管理以及数据存储的某些自适应调节机制等。通信DBMS具有与操作系统的联机处理、分时系统及远程作业输入的相关接口负责处理数据的传送。对网络环境下的数据库系统还应该包括DBMS与网络中其他软件系统的通信功能以及数据库之间的互操作功能。1.3.4 DBMS 发展历史自20世纪60年代中后期开始使用电脑进行数据处理的规模越来越大同时也出现了大容量的磁盘存储设备操作系统也日渐成熟为了解决数据的独立性问题实现数据的统一管理达到数据共享的目的出现了数据库技术。数据库技术从出现至今经历了多次的迭代行进在这个过程中按时间和特性可以将数据库管理系统分为三类。数据库三代模型层次数据库 → 网状数据库 → 关系型数据库 RDBMS层次数据库层次模型数据库系统是最早研制成功的数据库系统这种数据库中的数据被组织成一个树状模型这种结构简单但缺乏灵活性各数据之间仅限于一对多的关系。树状模型只能一对多代表IBM IMS。网状数据库网状数据库是采用网状原理和方法以网状数据模型为基础建立的数据库。网状数据模型是以记录类型为结点的网络结构即一个结点可以有一个或多个下级结点也可以有一个或多个上级结点两个结点之间甚至可以有多种联系两个记录类型之间的值可以是多对多的联系。网络模型结点可以拥有多个上下级支持多对多关系。关系型数据库 RDBMS关系数据库管理系统Relational Database Management System(RDBMS)是指包括相互联系的逻辑组织和存取这些数据的一套程序数据库管理系统软件。关系数据库管理系统就是管理关系数据库并将数据逻辑组织的系统。常见的关系型数据库管理系统有OracleMySQLDB2SQLServer等。关系型数据库是指采用了关系模型来组织数据的数据库其以行和列的形式存储数据以便于用户理解关系型数据库这一系列的行和列被称为表一组表组成了数据库。用户通过查询来检索数据库中的数据而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。关系型数据库中的相关概念在我们开始学习MySQL 数据库前让我们先了解下RDBMS的一些术语数据库: 数据库是一些关联表的集合。数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。列(column): 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。行(Row): 一行元组或记录是一组相关的数据例如一条用户订阅的数据。冗余: 存储两倍数据冗余降低了性能但提高了数据的安全性。主键(Primary key): 主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。外键: 外键用于关联两个表。复合键: 复合键组合键将多个列作为一个索引键一般用于复合索引。索引: 使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件目的是保证数据的一致性。MySQL 为关系型数据库(Relational Database Management System), 这种所谓的关系型可以理解为表格的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:表头(header): 每一列的名称;列(col): 具有相同数据类型的数据的集合;行(row): 每一行用来描述某条记录的具体信息;值(value): 行的具体信息, 每个值必须与该列的数据类型相同;键(key): 键的值在当前列中具有唯一性。常见的关系型数据库系统MySQL 分支MySQL、MariaDB、Percona ServerPostgreSQLPgSQLOracleMicrosoft SQL ServerDB21.3.5 数据库软件排名参考网站https://db-engines.com/en/ranking1.4 关系型数据库理论1.4.1 E‑R 模型实体‑联系模型 ERD数据库设计建模工具不绑定具体数据库产品。 三要素实体 Entity客观事物ER 图用矩形同类为实体集。属性 Attribute实体特征ER 图用椭圆形。联系 Relationship实体之间关联规则ER 图用菱形。1.4.2 实体间三种联系类型一对一 1:1A 对应唯一 BB 对应唯一 A人 ↔ 身份证丈夫 ↔ 妻子一对多 1:n一个 A 对应多个 B一个 B 只归属一个 A一个班级→多个学生一个部门→多个员工多对多 m:nA 可以对应多个 BB 可以对应多个 A学生 ↔ 课程一个学生选多门课一门课多个学生商品 ↔ 订单示例表结构一对多老师表 课程表class_idnameteacher_id1linux12golang13python2多对多学生‑课程中间关联表class_idstu_id111221221.4.3 CRUD 数据操作数据库基础操作增查改删缩写全称操作SQL 关键字CCreate新增INSERTRRead读取查询SELECTUUpdate更新UPDATEDDelete删除DELETE1.4.4 数据库范式正规化范式目的降低数据冗余提升一致性范式等级越高冗余越小。 6 大范式1NF、2NF、3NF、BCNF、4NF、5NF。实际业务做到3NF 第三范式就足够。1NF 第一范式原子性要求每一列字段必须不可再拆分不能存放多个值。反例违反 1NF学生 ID联系方式00113800138000, zhangexample.com正确学生 ID手机号邮箱00113800138000zhangexample.com规则一列只能存一个值禁止列表、集合复合数据。2NF 第二范式消除部分依赖前提已经满足 1NF。 要求所有非主键字段必须完全依赖整个联合主键不能只依赖主键其中一部分。 主要针对复合主键场景。反例 主键 (订单 ID商品 ID)商品名称只依赖商品 ID不依赖订单 ID。订单 ID商品 ID商品名称数量1001P001苹果5解决方法拆分成两张表商品表商品 ID商品名称订单明细表订单 ID商品 ID数量3NF 第三范式消除传递依赖前提已经满足 1NF、2NF。 要求非主键字段之间不能互相依赖不能传递依赖主键。 A → B → C则 C 传递依赖 A不允许。反例 主键学生 ID学院地址依赖学院 ID学院 ID 依赖学生 ID形成传递依赖。学生 ID学院 ID学院地址2001CS01北京中关村解决方法拆分两张表学生表学生 ID学院 ID学院表学院 ID学院地址范式总结对照表范式核心目标关键规则1NF原子性字段值不可再拆分2NF消除部分依赖非主属性完全依赖整个主键针对复合主键3NF消除传递依赖非主属性之间不能存在互相依赖提示范式越高表拆分越多实际开发一般做到3NF。1.4.5 SQL 结构化查询语言SQL 全称Structured Query Language专门用于关系数据库存取、查询、管理。数据库典型工作模式C/S 客户端服务端架构服务端监听端口客户端发送 SQL服务返回结果。MySQL 支持原生 CLI也可以使用 Navicat 等 GUI 工具程序语言使用数据库驱动交互。SQL 语言五大分类类型全称作用语句DDL数据定义语言定义库、表结构CREATE、ALTER、DROPDML数据操纵语言表中数据增删改INSERT、DELETE、UPDATEDQL数据查询语言查询数据SELECTDCL数据控制语言权限管控GRANT、REVOKETCL事务控制语言事务提交回滚BEGIN、COMMIT、ROLLBACK、SAVEPOINTSQL 编写规范SQL 关键字大小写不敏感生产习惯关键字大写库名表名区分大小写语句以分号;结尾支持单行、多行书写关键字不能换行拆分使用空格、Tab 缩进子句独立一行提升可读性。SQL 注释写法-- 单行注释标准SQL /* 多行注释 可以写多行内容 */ # mysql特有单行注释数据库对象命名规则对象数据库、表、索引、视图、存储过程、用户、触发器等允许字符字母数字# _ $禁止直接使用 MySQL 保留关键字如果使用需要用反引号 包裹。*学习复盘数据分为结构化、半结构化、非结构化不同数据适合不同存储方案数据库系统阶段解决了文件系统的冗余、并发、安全短板E‑R 模型是数据库设计的前置工具实体、属性、联系1:1 /1:n /m:n 三种关系三大范式核心原子性、消除部分依赖、消除传递依赖日常开发优先满足 3NF 即可SQL 分为 DDL、DML、DQL、DCL、TCL 五大类不同语句各司其职。思考什么时候可以不遵守范式当业务查询压力大为减少多表 JOIN可以做适度反范式牺牲一点冗余换取性能。未完待续下一节进入 MySQL 实操环节上手敲命令