MySQL关系型数据库概念
关系型数据库基于关系模型,通过表格组织数据并建立表间关联关系。
关系模型
关系模型由E.F.Codd于1970年提出,核心思想是将数据组织为二维表格。
关系模型三要素
| 要素 | 说明 |
|---|---|
| 数据结构 | 二维表(关系) |
| 数据操作 | 增删改查(SQL) |
| 数据约束 | 实体完整性、参照完整性 |
关系术语
| 术语 | 说明 |
|---|---|
| 关系 | 一个表 |
| 元组 | 表中的一行记录 |
| 属性 | 表中的一列字段 |
| 域 | 属性的取值范围 |
| 主键 | 唯一标识元组的属性 |
表间关系
关系型数据库通过外键建立表与表之间的关联。
关系类型
| 关系类型 | 说明 | 示例 |
|---|---|---|
| 一对一 | A表一条记录对应B表一条记录 | 用户与身份证 |
| 一对多 | A表一条记录对应B表多条记录 | 部门与员工 |
| 多对多 | 需要中间表实现 | 学生与课程 |
外键约束
SQL
-- 创建外键关联
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
);
ER图
实体关系图用于设计数据库结构,直观展示实体及实体间关系。
基本元素
| 元素 | 符号 | 说明 |
|---|---|---|
| 实体 | 矩形 | 表示数据对象 |
| 属性 | 椭圆 | 实体的特征 |
| 关系 | 菱形 | 实体间的关联 |
| 连线 | 直线 | 连接元素 |
ER图示例
SQL
[用户] ---<订单>--- [商品]
| |
(下单) (包含)
范式
范式是关系型数据库设计的规范,用于消除数据冗余。
常用范式
| 范式 | 规则 | 目的 |
|---|---|---|
| 第一范式(1NF) | 字段不可再分 | 消除重复字段 |
| 第二范式(2NF) | 非主键完全依赖主键 | 消除部分依赖 |
| 第三范式(3NF) | 非主键不传递依赖主键 | 消除传递依赖 |
范式示例
text
-- 不符合3NF:存在传递依赖
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
user_name VARCHAR(50), -- 传递依赖于user_id
user_address VARCHAR(200) -- 传递依赖于user_id
);
-- 符合3NF:拆分表
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT
);
CREATE TABLE users (
user_id INT PRIMARY KEY,
user_name VARCHAR(50),
user_address VARCHAR(200)
);
实际设计中需要在范式和性能之间平衡,适当反范式可减少连接查询。
要点总结
- 关系型数据库基于关系模型,以二维表组织数据
- 表间关系有一对一、一对多、多对多三种类型
- 外键建立表间关联,保证参照完整性
- ER图用于数据库概念设计
- 范式规范设计,消除数据冗余
- 实际应用中可适度反范式提升性能
📝 发现内容有误?点击此处直接编辑