网站中页面模板设计,wordpress图片主,wordpress4.7发布模块,wordpress4.9中文目录 一对一 一对一
一对一关系表在实际开发中应用起来比较简单#xff0c;通常是用来做单表的拆分#xff0c;也就是将一张大表拆分成两张小表#xff0c;将大表中的一些基础字段放在一张表当中#xff0c;将其他的字段放在另外一张表当中#xff0c;以此来提高数据的操… 目录 一对一 一对一
一对一关系表在实际开发中应用起来比较简单通常是用来做单表的拆分也就是将一张大表拆分成两张小表将大表中的一些基础字段放在一张表当中将其他的字段放在另外一张表当中以此来提高数据的操作效率。 一对一的应用场景 用户表(基本信息身份信息) 基本信息用户的ID、姓名、性别、手机号、学历身份信息民族、生日、身份证号、身份证签发机关身份证的有效期(开始时间、结束时间) 如果在业务系统当中对用户的基本信息查询频率特别的高但是对于用户的身份信息查询频率很低此时出于提高查询效率的考虑我就可以将这张大表拆分成两张小表第一张表存放的是用户的基本信息而第二张表存放的就是用户的身份信息。他们两者之间一对一的关系一个用户只能对应一个身份证而一个身份证也只能关联一个用户。 那么在数据库层面怎么去体现上述两者之间是一对一的关系呢
其实一对一我们可以看成一种特殊的一对多。一对多我们是怎么设计表关系的是不是在多的一方添加外键。同样我们也可以通过外键来体现一对一之间的关系我们只需要在任意一方来添加一个外键就可以了。 一对一 在任意一方加入外键关联另外一方的主键并且设置外键为唯一的(UNIQUE) SQL脚本
-- 用户基本信息表
create table tb_user(id int unsigned primary key auto_increment comment ID,name varchar(10) not null comment 姓名,gender tinyint unsigned not null comment 性别, 1 男 2 女,phone char(11) comment 手机号,degree varchar(10) comment 学历
) comment 用户基本信息表;
-- 测试数据
insert into tb_user values (1,白眉鹰王,1,18812340001,初中),(2,青翼蝠王,1,18812340002,大专),(3,金毛狮王,1,18812340003,初中),(4,紫衫龙王,2,18812340004,硕士);-- 用户身份信息表
create table tb_user_card(id int unsigned primary key auto_increment comment ID,nationality varchar(10) not null comment 民族,birthday date not null comment 生日,idcard char(18) not null comment 身份证号,issued varchar(20) not null comment 签发机关,expire_begin date not null comment 有效期限-开始,expire_end date comment 有效期限-结束,user_id int unsigned not null unique comment 用户ID,constraint fk_user_id foreign key (user_id) references tb_user(id)
) comment 用户身份信息表;
-- 测试数据
insert into tb_user_card values (1,汉,1960-11-06,100000100000100001,朝阳区公安局,2000-06-10,null,1),(2,汉,1971-11-06,100000100000100002,静安区公安局,2005-06-10,2025-06-10,2),(3,汉,1963-11-06,100000100000100003,昌平区公安局,2006-06-10,null,3),(4,回,1980-11-06,100000100000100004,海淀区公安局,2008-06-10,2028-06-10,4);