二、一对多
※案例的需求: 一个人可以拥有多辆汽车,要求查询出某人所拥有的所有汽车
数据库设计
方案一(差的设计)
编号 姓名 性别 年龄 汽车编号 车型 排量 价格
P001 Jack 男 25 C001 BMW 12L 80w
P001 Jack 男 25 C002 Benz 12L 100w
P001 Jack 男 25 C003 Benz 12L 100w
P002 Tom 男 26 C004 BMW 12L 80w
P002 Tom 男 26 C005 Benz 10L 60w
P003 Rose 女 24 C006 Adio 10L 70w
方案二(好的设计)
1)把"一方"单独建表
编号 姓名 性别 年龄 ...
P001 Jack 男 25 ...
P002 Tom 男 26 ...
P003 Rose 女 24 ...
P004 Mike 男 24 ...
2)把"多方"也建个表(要依赖"一方": 通过外键(补一个字段) )
外键:位于依赖的那个表,它是被依赖那个表是的主键
汽车编号 车型 排量 价格 车主
C001 BMW 12L 80w P001
C002 Benz 12L 100w P001
C003 Benz 12L 100w P001
C004 BMW 12L 80w P002
C005 Benz 10L 60w P002
C006 Adio 10L 70w P003
C007 QQ 8L 6.5w NULL
3)SQL代码实现
create table person2(
id varchar(32) primary key,
name varchar(30),
※案例的需求: 一个人可以拥有多辆汽车,要求查询出某人所拥有的所有汽车
数据库设计
方案一(差的设计)
编号 姓名 性别 年龄 汽车编号 车型 排量 价格
P001 Jack 男 25 C001 BMW 12L 80w
P001 Jack 男 25 C002 Benz 12L 100w
P001 Jack 男 25 C003 Benz 12L 100w
P002 Tom 男 26 C004 BMW 12L 80w
P002 Tom 男 26 C005 Benz 10L 60w
P003 Rose 女 24 C006 Adio 10L 70w
方案二(好的设计)
1)把"一方"单独建表
编号 姓名 性别 年龄 ...
P001 Jack 男 25 ...
P002 Tom 男 26 ...
P003 Rose 女 24 ...
P004 Mike 男 24 ...
2)把"多方"也建个表(要依赖"一方": 通过外键(补一个字段) )
外键:位于依赖的那个表,它是被依赖那个表是的主键
汽车编号 车型 排量 价格 车主
C001 BMW 12L 80w P001
C002 Benz 12L 100w P001
C003 Benz 12L 100w P001
C004 BMW 12L 80w P002
C005 Benz 10L 60w P002
C006 Adio 10L 70w P003
C007 QQ 8L 6.5w NULL
3)SQL代码实现
create table person2(
id varchar(32) primary key,
name varchar(30),