数据库设计简介
软件的常见研发步骤
产品经理 架构师 开发工程师 测试工程师 运维工程师
^ ^ ^ ^ ^
| | | | |
需求分析 ----> 设计 ----> 编码 ----> 测试 ----> 安装部署
可以注意到,在设计模块中包括:
- 软件结构设计
- 数据库设计
- 接口设计
- 过程设计
数据库设计概念
- 数据库设计就是根据业务系统的具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储。
- 建立数据库中的表结构以及表与表之间的关联关系的过程。
- 有哪些表?表里有哪些字段?表和表之间有什么关系?
数据库设计的步骤
一、需求分析
- 数据是什么?
- 数据具有哪些属性?
- 数据与属性的特点是什么?
二、逻辑分析
- 通过
ER
图对数据库进行逻辑建模 - 不需要考虑我们所选用的数据库管理系统
三、物理设计
- 根据数据库自身的特点,把逻辑设计转换为物理设计
四、维护设计
- 对新的需求进行建表;
- 表优化
表关系
一对多(多对一)
- 比如 部门表 和 员工表
- 一个部门对应多个员工,多个员工同属于一个部门
- 一对多的关系(或者多对一)在实际应用中也很常见。
- 实现方式:在多的一方(从表)建立外键,指向一的一方(主表)的主键。
多对多
- 比如:商品表 和 订单表
- 一个商品对应多个订单,一个订单包含多个商品
- 实现方式:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键。
下面是代码展示:
-- 订单表
CREATE TABLE tb_order(
id int primary key auto_increment,
payment double(10, 2),
payment_type TINYINT,
status TINYINT
);
-- 商品表
CREATE TABLE tb_goods(
id int primary key auto_increment,
title varchar(100),
price double(10, 2)
);
-- 订单商品中间表
CREATE TABLE tb_order_goods(
id int primary key auto_increment,
order_id int,
goods_id int,
count int
);
-- 添加外键:为 订单表 和 商品表 添加 多对多 的关系,演示如下:
-- 1. 为订单商品中间表添加外键 order_id
-- 此时外键 order_id 可指向订单表(tb_order)中的 id
ALTER TABLE
tb_order_goods
ADD CONSTRAINT
fk_order_id
FOREIGN KEY(order_id)
REFERENCES
tb_order(id);
-- 2. 为订单商品中间表添加外键 goods_id
-- 此时外键 goods_id 可指向商品表(tb_goods)中的 id
ALTER TABLE
tb_order_goods
ADD CONSTRAINT
fk_goods_id
FOREIGN KEY(goods_id)
REFERENCES
tb_goods(id);
一对一
- 一对一关系 多用于表拆分
- 将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提升查询性能。
- 比如:用户表 和 用户详情表
- 实现方式:为任意一方添加外键,关联另一方主键,并且设置外键为唯一(
UNIQUE
)