每天进步一点点
数据库设计概念
数据库设计简介
1.数据库设计概念
- 数据库设计就是根据业务系统具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型。
- 建立数据库中的
表结构
以及表与表之间的关联关系
的过程。 - 有哪些表?表里有哪些字段?表和表之间有什么关系?
2.数据库设计步骤
-
需求分析:数据库是什么?数据具体有哪些属性?数据与属性的特点是什么?
-
逻辑分析:通过
ER图
对数据库进行逻辑建模,不需要考虑我们所选用的数据库管理系统。 -
物理设计:根据数据库自身的特点把逻辑设计转换为物理设计。
-
维护设计:对新的需求进行建表和对表的优化。
3.表关系简介
-
在真实的开发中,一个项目中的数据,一般都会保存在同一个数据库中,但是不同的数据需要保存在不同的数据表中。这时不能把所有的数据都保存在同一张表中。
-
那么在设计保存数据的数据表时,我们就要根据具体的数据进行分析,然后把同一类数据保存在同一张表中,不同的数据进行分表处理。
-
数据之间必然会有一定的联系,我们把不同的数据保存在不同的数据表中之后,同时还要在数据表中维护这些数据之间的关系。这时就会导致表和表之间必然会有一定的联系。这时要求设计表的人员,就需要考虑不同表之间的具体关系。
在数据库中,表总共存在三种关系,真实的数据表之间的关系:多对多关系、一对多(多对一)、一对一(极少),(一对一关系就是我们之前学习的Map集合的key-value关系)
表关系(多对多)
1.多对多
- 如:订单 和 商品
- 一个商品对应多个订单,一个订单对应多个商品
- 实现方式:建立第三张
中间表
,中间表至少包含两个外键
,分别关联两方主键
说明:如果两张表是多对多的关系,需要创建第三张表,并在第三张表中增加两列,引入其他两张表的主键作为自己的外键。
2.外键约束
- 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性(例如上述多对多中的订单商品表来维护订单表和商品表之间的关系)
- 使用之间表的目的是维护两表之间多对多的关系:中间表插入的数据,必须在多对多的主表中存在,如果主表的记录在中间表中维护了关系,就不能随意的删除。如果要删除,必须先要删除中间表关联的数据
3.外键约束语法
-- 关键字解释:
constraint: 添加约束,可以不写
foreign key(当前表中的列名): 将某个字段作为外键
references 被引用表名(被引用表的列名) : 外键引用主表的主键
-- 创建表时添加外键约束
CREATE TABLE 表名(
列名 数据类型,
…
[CONSTRAINT] [外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)
);
-- 建完表后添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
-- 删除约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
4.创建外键约束
-- 订单表
CREATE TABLE tb_orders
(
id int primary key auto_increment,
payment double(10, 2),
payment_type TINYINT, -- 0 微信支付 1 支付宝支付
status TINYINT -- 0 未付款 1 已经支付
);
-- 商品表
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, -- 购买商品数量
foreign key(order_id) references tb_orders(id),
foreign key(goods_id) references tb_goods(id)
);
5.外键级联
在修改和删除主表的主键时,同时更新或删除从表的外键值,称为级联操作
ON UPDATE CASCADE
– 级联更新,主键发生更新时,外键也会更新ON DELETE CASCADE
– 级联删除,主键发生删除时,外键也会删除
6.总结
1.为何要引用外键约束?
- 让表的数据有效性,正确性。提高查询效率。
2.添加外键约束语法?
- constraint 外键约束名 foreign key(当前表的字段名) references 主表(主键)
3.有了外键约束操作数据注意事项?
- 要求添加数据需要先添加主表,然后添加从表。
- 要求删除数据需要先删除从表,然后再删除主表。
表关系(一对多)
一对多(多对一)
- 如:部门表 和 员工表
- 一个部门对应多个员工,一个员工对应一个部门
- 实现方式:在多的一方建立外键,指向一的一方的主键