一对多:一对多,两张表,多的表加外键!!
多对多:多对多,三张表,关系表两个外键!!
一对一:一对一,外键唯一!!
一对一放到一张表为啥要拆分表?
实际开发中,可能存在一张表字段太多,太庞大,需要拆分
设计:
没有拆分之前:一张表
t_user
id login_name login_pwd real_name email address........
-------------------------------------------------------------------------------------------------------------------------
1 zhangsan 123 张三 zhangsan@123.com
2 lisi 123 李四 lisi@123.com
...
建议拆分两张表:
t_login 登录信息表
id(pk) login_name login_pwd
-----------------------------------------------------------------------
1 zhangsan 123
2 lisi 123
t_user 用户详细信息表
id(pk) real_name email address.... login_id(fk+unique) 外键加一个唯一性约束,
---------------------------------------------------------------------------------------------------- 这里外键用的是登录信息表的id
100 张三 zhangsan@123.com 1
200 李四 lisi@123.com
4.7、数据库设计三范式理论上的
最终满足客户需求,有的时候会拿冗余换执行速度。
sql中,表和表之间连接次数越多,效率越低(笛卡尔积)
有的时候可能存在冗余,为了减少表的连接次数,这样做是合理的
对于开发人员来说,sql语句的编写难度也会降低