Mysql多表关系

关系分类:

  1. 一对多/多对一:
  • 实现方式: 实现方式:在多的一方建立外键,指向一的一方的主键。

2.  多对多:

  • 实现方式:多对多关系的实现需要借助第三张中间表,中间表至少包含两个字段。其中每一个字段分别指向原表

3.  一对一:

  • 实现方式:在任意一方建立外键,指向另一方的主键。

案例分析:旅游线路

  SQL多表关系案例

代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<pre>/*
rid 线路id
cid 用户id
*/
#创建topic分类表
create table topic(
cid int,
name varchar(20)
);
#创建路线表routes
create table routes(
rid int,
name varchar(20),
price int
);
#创建用户表users
create table users(
uid int,
username varchar(20),
sex varchar(1) default '男',
phone_number varchar(11)
);
#分别设置rid、cid和uid为主键
alter table routes modify rid int primary key ;
alter table topic modify cid int primary key ;
alter table users modify uid int primary key ;
#添加在路线表中添加外键cid
alter table routes add cid int;
alter table routes add constraint cid_rid
foreign key (cid) references topic(cid) on update cascade on delete cascade ;

#创建临时表t
create table t(
rid int,
date date,
uid int
);
# 在表t中添加联级操作
alter table t add constraint uid
foreign key (uid) references users(uid) on update cascade on delete cascade ;
alter table t add constraint rid
foreign key (rid) references routes(rid) on update cascade on DELETE cascade ;

有关MySql约束概念,请查看《Mysql约束笔记》。