mysql学习笔记(3):多表创建及多表之间的关系(外键约束)

本文通过电商场景探讨数据库中实体间的关系,如用户与订单的一对多,分类与商品的一对多,以及订单与商品的多对多关系。详细介绍了如何使用外键约束在数据库中实现这些关系,强调了外键约束的重要性和特点,以及如何在多对多关系中使用中间表。最后提到了使用SQLyog等可视化工具帮助查看表间关系。
摘要由CSDN通过智能技术生成

本文尝试用实际开发中常见的电商场景来厘清其背后需要的数据库中表与表之间的关系,目的在于能够分析出常见购物网站的中实体间的关系,并能创建出对应的表。

1.实体间常见关系

  • 购物网站中常有的实体一般包括:

    • 用户 订单 商品 分类
    • 这背后在数据库中都对应一张表来存放具体的数据,显然这些表之间不是孤立的,而是互相联系。
  • 常见关系:

    • 一对多:
      • 用户和订单:一个用户可以拥有多个订单,但是一个确定的订单只能属于一个用户
      • 分类和商品
    • 多对多:
      • 订单和商品:一个订单可以包含多个商品,而同一个商品可以出现在多个订单中
      • 学生和课程
    • 一对一:
      • 丈夫和妻子
  • ER图用来描述实体与实体之间的关系
    在这里插入图片描述

    • 实体用矩阵表示(一个实体对应一张表)
    • 属性用椭圆表示(属性对应字段)
    • 关系用菱形表示

2.数据库实现(一对多)

2.1一对多情况的引入

  • 假设现在有一张用户表和一个订单表,里面数据的具体关系如图:
    在这里插入图片描述
  • 上述表示张三拥有订单1和2,李四拥有订单3,但是数据库中显然不可能有划线的方式来表示关系,所以为了解决这个问题,引入外键。

2.2利用外键实现一对多

以一对多为例:

  • 在开发中,关系中的一方称之为主表或者一表,关系中的多方称之为多表或者从表,
    为了表示一对多的关系,一般会在多表的一方添加一个字段,字段名称自定义(建议:主表的名称_id)
    字段类型一般和主表的主键的类型保持一致,我们称这个字段为外键
  • 所以为了表示上述关系,我们需要在订单表中添加一个字段user_id
    在这里插入图片描述

2.3数据库实现(一对多)

2.3.1不设置外键的情况

  • 1.创建用户表
create table user(
id int primary key auto_increment,
name varchar(20)
);
  • 2.创建订单表

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值