天气:阴
地点:图书馆
人物:小伙伴们与我
事件:不宅家,在图书馆睡觉、读书、写字、捣手机....
收获:生活是积极向上的,很美好的一天,因为是我的破蛋日,祝我生日快乐~~~~加油,越来越好、越来越明亮~~☀️
数据库实体表间有三种对应关系:一对一、一对多、多对多。
一、设计总结
1、设计E-R图(先画出实体,再画实体间的联系)
2、根据E-R图设计表和表结构(具体根据表关系进行设计)
二、各个表关系示例设计
1、一对一
示例:每个人都有唯一的年龄和姓名
id | age | name |
1 | 18 | 林某 |
2 | 20 | 林可爱 |
2、一对多:
示例:一个人只能上一个户口本,但一个户口本可以有多个人
设计:多方添加一方的主键作为外键
a.用户表引入户口表id作为外键
b.用户表的户口表id 和 户口表的id 字段类型要一致,类型是字符的话长度也要相同
c.通过添加主外键约束,避免删除数据时造成数据混乱
SQL:
a.关键字:constraint 约束 references 参照
b.语句:alter table user add constraint household_user_fk foreign key(householdId) references household(id)
id | age | name | householdId |
1 | 18 | 林某 | 000000001 |
2 | 20 | 林可爱 | 000000001 |
3 | 16 | 吼子 | 000000002 |
id | householdName | familyMember |
000000001 | 林家 | 2 |
000000002 | 吼家 | 1 |
3、多对多:
示例:一个人可以选择多个爱好,每个爱好也有不同的人选择
设计:先建表,再添加联合主键、最后添加外键约束(先后顺序不可颠倒)
a.通过用户爱好关系表建立用户表和爱好表的联系;
b.userId、hobbyId作为关系表的联合主键,确保不出现相同记录;
c.多对多表建立主外键后,要先删除约束表内容再删除主表内容。
SQL:
a.建立联合主键:alter table user_hobby add constraint user_hobby_pk PRIMARY KEY(userId,hobbyId)
b.外键约束:
alter table user_hobby add constraint user_hobby_fk1 FOREIGN KEY(userId) references user(id)
alter table user_hobby add constraint user_hobby_fk2 FOREIGN KEY(hobbyId) references hobby(id)
id | age | name |
1 | 18 | 林某 |
2 | 20 | 林可爱 |
id | hobbyName | hobbyMemberCount |
1 | 跳舞 | 1 |
2 | 唱歌 | 2 |
3 | 溜冰 | 1 |
4 | 攀岩 | 1 |
userId | hobbyId | createTime |
1 | 1 | 2020-11-28 10:14:00 |
1 | 2 | 2020-11-28 11:16:20 |
1 | 3 | 2020-11-28 12:12:12 |
2 | 2 | 2020-11-28 13:14:15 |
1 | 4 | 2020-11-28 14:24:00 |