表关联设计
一对一模型:一张表的一条记录一定只能与另外一张表的一条记录进行对应,反之亦然。
举例:学生信息与档案信息,一个学生对应一个档案,一个档案也只能属于一个学生。
学生表:create table student(id int primary key auto_increment ,name varchar(50) not null);
档案表 : create table xxxx(id int primary key auto_increment,name varchar(50) not null, stu_id int unique ,foreign key(stu_id) references student(id) on delete cascade on update cascade);
一对多模型:一张表的一条记录对应另外一张表的多条记录;但是反过来,另外那张表的一条记录只能对应第一张表的一条记录,这种关系叫一对多或者多对一
举例:一个人可以拥有多辆车 ,但是每辆车的车主只能有一人。
车主表:create table person(id int primary key auto_increment,name varchar(50) not null,age tinyint default 0);
车表: create table car(id int primary key auto_increment ,name varchar(30) not null,price decimal(16,2) default 0.0,pr_id int,foreign key(pr_id) references person(id) on delete cascade on update cascade);
多对多模型:一个表(A)中的一条记录 对应 另外一个表(B)中的多条记录,反过来,B表中的一条记录也对应A表中的多条记录。
举例:一个运动员可以报多个项目,每个项目也会有多个运动员参加,这时为了表达多对多关系需要单独创建关系表。
运动员表:
create table athlete(id int not null auto_increment,name varchar(30) default null,age tinyint not null,primary key(id));
项目表:
create table item(id int primary key auto_increment,rname varchar(30) not null);
关系表:
create table xxx(id int primary key auto_increment,athlete_id int,item_id int,foreign key(athlete_id) references athlete(id) on delete cascade on update cascade,foreign key(item_id) references item(id) on delete cascade on update cascade ,score int default 0);
浙公网安备 33010602011771号