一对一
外键写在那个表都可以;逻辑上是写在辅表
SQL语句:
- people表
create table person(
pid int primary key auto_increment,
pname VARCHAR(22),
password
VARCHAR(22),
address VARCHAR(22)); - IdCard
create table IdCard(
cid int primary key auto_increment,
number varchar(18) not null UNIQUE,
pid int, 你之前写错了 和一对多一样 都是这样设置外键
FOREIGN key(pid) references person(pid));
你之前写的错了 ;都是pid
一对多
一个人可以有多个女朋友;多辆宝马;或者多个房产
SQL: 一个人点了2份饭 只能是俩好像
- people
create table person(
pid int primary key auto_increment,
pname VARCHAR(22),
password
VARCHAR(22),
address VARCHAR(22));- order
create tableorder
(
oid int primary key auto_increment,
code
varchar(22),
price double,
pid int,
foreign key(pid) references person(pid));
- order
一对一和一对多没区别
- 一对多
pid int,---------------------------------区别在这里
foreign key(pid) references person(pid));
一对多 和 一对多的区别
- 一对多 和多对多的区别在于; 多对多的外键是集中放在中间表的
- 多表查询的多表 都是正常创建;不需要写外键 外键都写在中间表中
多对多
两个一对多及多对多;需要借助一个中间表来存储俩外键;
多表查询的多表 都是正常创建;不需要写外键 外键都写在中间表中
SQL:
-
order
create tableorder
(
oid int primary key auto_increment,
code
varchar(22),
price double, -
product
create table product(
productId int primary key auto_increment,
productName varchar(22),
Color varchar(22),
price double); -
item
create table item(
oid int,
productId int,
foreign key(oid) referencesorder
(oid),
foreign key(productId) references product(productId));