数据库设计——表与表的关系

本文介绍了数据库设计中的表与表的关系,包括一对多、多对多和一对一的关联。通过实例展示了如何创建订单、商品和订单商品中间表来实现多对多关系,并通过外键约束确保数据一致性。此外,还讨论了一对一关系的实现,通过在用户表中添加外键并设置为唯一,将用户信息拆分为两张表以优化数据结构。
摘要由CSDN通过智能技术生成

数据库设计

在这里插入图片描述
在这里插入图片描述

表与表的关系

一对多

在这里插入图片描述

多对多

在这里插入图片描述
一个实体一张表,实体之间的联系一张表

-- 订单表 
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
);

创建了3个表,此时三张表之间还是逻辑的关系没有真正的物理的关系
在这里插入图片描述
于是我们在中间表中添加2个外键

-- 建完表后,添加外键 
alter table tb_order_goods add CONSTRAINT fk_order_id FOREIGN key(order_id) REFERENCES tb_order(id); 
alter table tb_order_goods add CONSTRAINT fk_goods_id FOREIGN key(goods_id) REFERENCES tb_goods(id);

实现了订单和货物之间多对多的关系
在这里插入图片描述

一对一

在这里插入图片描述
用户表 举例:
在这里插入图片描述
在真正使用过程中发现 id、photo、nickname、age、gender 字段比较常用,此时就可以将这张表查分成两张表。在这里插入图片描述

实现方式

在任意一方加入外键,关联另一方主键,并且设置外键为唯一(UNIQUE)在这里插入图片描述
如图,在用户表中加入外键,并设置外键为唯一的unique

CREATE TABLE tb_user_desc (
	id INT PRIMARY KEY auto_increment,
	city VARCHAR (20),
	edu VARCHAR (10),
	income INT,
	STATUS CHAR (2),
	des VARCHAR (100)
);

CREATE TABLE tb_user (
	id INT PRIMARY KEY auto_increment,
	photo VARCHAR (100),
	nickname VARCHAR (50),
	age INT,
	gender CHAR (1),
	desc_id INT UNIQUE,-- 唯一
	-- 添加外键 
CONSTRAINT fk_user_desc FOREIGN KEY(desc_id) REFERENCES tb_user_desc(id) 
);

在这里插入图片描述

小结

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值