MySQL
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
什么是数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每一个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大量数据。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
- 数据以表格的形式出现
- 每行为各种记录名称
- 每列为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成database
为什么需要设计数据库
良好的数据库设计
- 节省数据的存储空间
- 能够保证数据的完整性
- 方便进行数据库应用系统的开发
糟糕的数据库设计
- 数据冗余、存储空间浪费
- 内存空间浪费
- 数据更新和插入的异常
设计数据库的步骤
项目开发需要经过需求分析,概要设计、详细设计、代码编写、运行测试和部署上线几个阶段。
需求分析阶段: 分析客户的业务和数据处理需求。
概要设计阶段: 绘制数据库的E-R图,用于在项目团队内部,设计人员和客户之间进行沟通,确认需求信息的正确性和完整性。
详细设计阶段: 将E-R图转换为多张表,进行逻辑设计,确认个表的主外键,并应用数据库设计的三大范式进行审核,经项目组开会讨论确定后,还需要项目的技术实现,团队开发能力及项目的成本预算,选择具体的数据库(如MySQL 或 Orcle 等)进行物理实现。
需求分析阶段: 需求分析阶段的重点式调查、收集并分析客户业务的数据需求处理需求、安全性与完整性需求。
无论数据库的大小和复杂程度如何,在进行数据库的系统分析时,都可以参考下列基本步骤。
- 收集信息
与该系统有关人员进行交流、座谈,充分理解用户需求,理解数据库需要完成的任务 - 标识实体(Entity)
标识数据库要管理的关键对象或实体,实体一般是名词 - 标识每个实体需要存储的详细信息(Attribute)
- 标识实体之间的关系(Relationship)
E-R图
映射基数
关系模式
用二维表的形式表示实体和实体间联系的数据模型即关系模式。
E-R图转换为关系模式的步骤
- 把每个实体都转换为关系模式R(U)形式
- 建立实体间联系的转换
为什么需要数据规范化
不合规范的表设计
- 信息重复
- 更新异常
- 插入异常
- 删除异常
使用 三大范式 规范数据库表的设计
第一范式(1NF)的目标是确保每列的原子性
如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)
第二范式(2NF)要求每个表只描述一件事情
如果一个关系满足2NF,并且除了主键以外的其它列都不依赖于主键列,则满足第三范式(3NF)
RDBMS 术语
数据库:数据库是一些关联表的集合。
数据表:表是数据的矩阵。在一个数据表中的表看起来像一个简单的电子表格。
列:一列(数据元素)包含了相同类型的数据。
行:一行(=元组,或记录)是一组相关的数据。
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
主键:主键是唯一的。一个数据表中只能包含一个主键。可使用主键来查询数据。
外键:外键用于关联两个表。
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
索引:使用索引可快速访问数据表中的特定信息。索引是对数据表中一列或多列的值进行排序的一种结构
参照完整数:参照的完整性要求关系中不允许引用不存在的实体。与实体完整性的关系模型必须满足的完整性约束条件,目的是保证数据的一致性。