数据库表间关系

多表之间的关系

分类与实现方式

一对一(了解)

  • 如:人和身份证
  • 分析:一个人只有一个身份证,一个身份证只能对应一个人
  • 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键

一对多(多对一)*

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

多对多

  • 如:学生和课程
  • 分析:一个学生可以选择很多门课程,一门课程可以被很多学生选择
  • 实现方式:多对多关系实现需要借助第三张中间表,中间表至少包含两个字段,这两个字段作为该表的外键,分别指向两张表的主键。

练习

  • 旅游线路表

    id name price

  • 旅游线路分类

    id name

  • 用户表

    id username password

对应关系

  • 旅游线路表 == 旅游线路分类 多对一
  • 旅游线路表 == 用户表 多对多

实现方式

  • 旅游线路表添加外键,连接旅游线路分类表的主键
  • 创建第四张表连接 旅游线路表和用户表,两个字段外键分别是两张表的主键

实现步骤

  1. 创建旅游线路分类表
  2. 创建旅游线路表外键连接旅游线路分类表的id
  3. 创建用户表
  4. 创建第四张表,外键分别是旅游线路表和用户表的主键
#1创建旅游线路分类表 id作为主键
CREATE TABLE trou_route_class(
id int PRIMARY KEY AUTO_INCREMENT,	-- 路线分类id:主键,自动增长
name VARCHAR(30) NOT NULL UNIQUE		-- 路线类名约束:非空,唯一
);
#2创建旅游线路表,添加外键连接旅游线路表的主键 id作为主键,外键名称省略创建
CREATE TABLE trou_route(
id int PRIMARY KEY AUTO_INCREMENT,  -- 路线id:主键,自动增长
name VARCHAR(30) NOT NULL UNIQUE,		-- 路线名:非空,唯一		
price DOUBLE,
shelf_time DATE,	-- 上架日期
class_id int,
FOREIGN KEY (class_id) REFERENCES trou_route_class(id)
);
#3创建用户表
CREATE TABLE user(
id INT PRIMARY KEY NOT NULL,
username VARCHAR(20) NOT NULL,
password INT NOT NULL,
sex VARCHAR(20),
telephone VARCHAR(11)
);
#4中间表,用来联系用户表和旅游路线表,外键分别是旅游路线表和用户表的主键,外键名称省略创建
CREATE TABLE user_route(
route_id INT,
user_id INT,
PRIMARY KEY(route_id,user_id),  -- 联合主键
FOREIGN KEY (route_id) REFERENCES trou_route(id),
FOREIGN KEY (user_id) REFERENCES user(id)
);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值