MySQL数据库设计概念(多表查询&事务操作)

数据库设计概念

数据库设计简介

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.有了外键约束操作数据注意事项?

  • 要求添加数据需要先添加主表,然后添加从表。
  • 要求删除数据需要先删除从表,然后再删除主表。

表关系(一对多)

一对多(多对一)

  • 如:部门表 和 员工表
  • 一个部门对应多个员工,一个员工对应一个部门
  • 实现方式:在多的一方建立外键,指向一的一方的主键

  • 34
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 34
    评论
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tangable1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值