9月22日我的学习心得与个人理解

外键

用来记录表与表之间关系的

一对多关系判断及sql语句定义

判断表与表之间的关系要学会换位思考

1.先站在表1

  表1数据是否可以对应多个表2数据关系

2.再站在表2

  表2数据是否可以对应多个表1数据关系

表1单个数据对应多个表2数据关系且或表2单个数据对应多个表1数据关系

得出结论:一对多关系

在用sql语句创建一对多表关系的时候

步骤1:先创建两张基础表(无关系字段)

步骤2:再将关系字段填写到对应的表中

创建一对多关系表emp,dep,代码如下

create table emp(
id int primary key auto_increment,
username varchar(32),
age int,
gender enum('男','女','其他'),
dep_id int,
foreign key(dep_id) references dep(id)
);

create table dep(
id int primary key auto_increment,
name varchar(64),
addr varchar(255)
);

 

 创建外键时有以下几个约束

1.在创建表的时候需要先创建被关联表 然后创建关联表

2.在插入数据时也应该先插入被关联表的数据然后插入关联表的数据

3.不能直接修改被关联表里面的字段,也不能轻易的删除被关联表里面的数据

4.针对上述情况,涉及到数据的修改和删除时应该做到同步更新同步删除。修改被关联表的数据,关联表数据自动修改。

创建具有同步删除功能的一对多表dep1,emp1

create table dep1(
id int primary key auto_increment,
dep_name char(10),
dep_comment char(60)
);
create table emp1(
id int primary key auto_increment,
name char(16),
gender enum('male','female') not null default 'male',
dep_id int,
foreign key(dep_id) references dep1(id)
on update cascade  #同步更新(级联更新)
on delete cascade   #同步删除(级联删除)
);

 

多对多关系

表1数据对应多个表2数据

针对多对多表关系创建表的解决方法是

创建第三张关系表专门用来记录关系

单独的两张表之间不需要创建任何的外键字段

创建多对多表book,author,代码如下

create table book(
id int primary key auto_increment,
title varchar(32),
price float(8,2)
);
create table author(
id int primary key auto_increment,
name varchar(32),
addr varchar(64)
);
create table book2author(
id int primary key auto_increment,
author_id int,
book_id int,
foreign key(author_id) references author(id)
on update cascade #同步更新(级联更新)
on delete cascade, #同步删除(级联删除)
foreign key(book_id) references book(id)
on update cascade #同步更新(级联更新)
on delete cascade #同步删除(级联删除)
);

 

 多对多关系表在录入数据的时候

双方均可随意录入

但是操作第三张表时需要注意对应

 

posted @ 2020-09-23 12:16  ACE2020  阅读(131)  评论(0)    收藏  举报