MySQL 多表关系

多表之间的关系

1、一对一
2、多对一(一对多)
3、多对多

实现关系

1、一对一关系:
一对一关系的实现,可以在任意一方添加唯一外键指向另一方的主键

2、多对一(一对多):
实现方式:在多的一方建立外键,指向一的一方的主键

3、多对多:
多对多关系的实现需要借助第三张中间表,中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键。(联合主键)

案例

-- 创建旅游路线分类表 tab_category
-- cid 旅游路线分类主键
-- cname 旅游路线分类名称
CREATE TABLE tab_category(
	cid INT PRIMARY KEY AUTO_INCREMENT,
	cname VARCHAR(10)NOT NULL UNIQUE
);


-- 创建旅游线路表 tab_route
-- rid 旅游路线主键,自动增长
-- rname 旅游线路名称,非空 唯一 字符串(100)
-- price 价格
-- rdate 上架时间 日期类型
-- cid 外键,所属分类
CREATE TABLE tab_route(
	rid INT PRIMARY KEY AUTO_INCREMENT,
	ranme VARCHAR(100) NOT NULL UNIQUE,
	price DOUBLE,
	rdate DATE,
	cid INT,
	FOREIGN KEY(cid) REFERENCES tab_category(cid)
);

-- 创建用户表 tab_user
/*
uid          用户主键 自增长
uesername    用户名 长度100 唯一非空
password     密码 长度100 非空
name 	     真实姓名 长度100
brithday     生日
sex	     性别
telephone    手机号 字符串11
Email        邮箱 字符串长度100
*/
CREATE TABLE tab_user(
	uid INT PRIMARY KEY AUTO_INCREMENT,
	uesername VARCHAR(100) NOT NULL UNIQUE,
	PASSWORD VARCHAR(30) NOT NULL,
	NAME VARCHAR(100) NOT NULL,
	brithday DATE,
	sex CHAR(1) DEFAULT '男',
	telephone VARCHAR(11),
	Email VARCHAR(100)
);


-- 创建一个中间表,实现多对多
CREATE TABLE tab_favorite(
	rid INT, -- 线路id
	uid INT, -- 用户id
	DATE DATETIME,
	-- 创建符合主键
	PRIMARY KEY(rid,uid),-- 联合主键
	FOREIGN KEY(rid) REFERENCES tab_route(rid),
	FOREIGN KEY(uid) REFERENCES tab_user(uid)
);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

稻田里展望者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值