constraint 起个名字 foreign key(关联字段) references 被关联表(被关联字段) on delete cascade # 是否联动删除 on update cascade # 是否联动更新
一个出版社能够出多本书 一对多spa
一本书能够被多个出版社出版 一对多code
被关联表blog
create table press( id int primary key auto_increment, name char(20) );
关联表索引
create table book( book_id int primary key auto_increment, book_name varchar(20), book_price int, press_id int,
constraint Fk_pressid_id foreign key(press_id) references press(id) on delete cascade on update cascade );
FK 字段在关联表建立,会新增一个 FK字段 创建于被关联表的映射 rem
被关联表的被关联字段必须是惟一的,即多对一的 "一" it
关联表的FK 字段是能够不惟一的, 即多对一的 "多" table
关联字段 类型 unique, # 一对一的管理字段必须在关联表中惟一 constraint 起个名字 foreign key(关联字段) references 被关联表(被关联字段) on delete cascade # 是否联动删除 on update cascade # 是否联动更新
管理员对于用户class
每一个管理员都是一个用户 一对一关系 date
被关联表float
create table user( id int primary key auto_increment, #主键自增 name char(10) );
关联表
create table admin( id int primary key auto_increment, user_id int unique, # 惟一索引 password varchar(16), foreign key(user_id) references user(id) # 创建外键索引 on delete cascade on update cascade );
一对一关系基于 FK 的使用加上了 惟一索引来限制 ,从而实现两边都是惟一的索引
unique(关联字段1,关联字段2), # 创建联合惟一
constraint 起个名字 foreign key(关联字段) references 被关联表(被关联字段)
on delete cascade # 是否联动删除
on update cascade # 是否联动更新
书和做者的关系
一个做者能够写多本书,一本书也能够有多个做者
双向的一对多,即多对多
被关联表1
create table book1( id int primary key auto_increment, name varchar(10), price float(3,2) );
被关联表2
create table author( id int primary key auto_increment, name char(5) );
关联表
create table author2book( id int primary key auto_increment, book_id int not null, author_id int not null,
unique(book_id,author_id), # 创建联合惟一
foreign key(book_id) references book1(id) # 对每一个表进行外键关联 on delete cascade on update cascade,
foreign key(author_id) references author(id) # 对每一个表进行外键关联
on delete cascade
on update cascade );
多对多的关系已经没法用两张表完成。必须多创建一张表用来存储关系字段的联系记录
第三张表创建的时候要对两个表分别进行 FK 关联
在插入数据的时候要对第三张表进行操做建立管理数据才能够实现多对多关系映射