一对多 一对一 多对一 多对多 数据库设计实践
2017-11-01 15:49
816 查看
在数据库设计中,我们进行垂直分表或者是某些业务场景需要分多个表但是又得使这些表有联系的, 就必须设立一个关联字段让两个表关联。
这样就产生了表关系,有一对多 一对一 多对一 多对多等。
一对多,一个用户对应多个账户类型,一个用户对应多个订单,多个购物车 等
一对一,这种在一个表字段太多,垂直分表常见,或者 需要分表满足特殊功能
多对一,多个商品对应一个购买或者奖励规则,多个用户对应同一种类型用户,消息推送分组等
多对多 ,权限配置,权限表,职位表,用户表
1,在大型系统中(性能要求不高,安全要求高),使用外键;在大型系统中(性能要求高,安全自己控制),不用外键;小系统随便,最好用外键。
2,用外键要适当,不能过分追求
3,不用外键而用程序控制数据一致性和完整性时,应该写一层来保证,然后个个应用通过这个层来访问数据库
注 (主外键主要是为了保证程序无法保证的数据完整和一致性 。但是 对于系统性能有影响 , 操作表慢,删除表数据时有外键删除不了 )
4 用mybatis持久化系统写sql最好用联查代替子查询
5 用到hibernate持久化系统主外键不能乱删
相关文章推荐
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
- 数据库中根据数据一对一,一对多,多对多关系设计
- 数据库一对一、一对多、多对多设计
- 数据库一对一、一对多、多对多设计
- 20个数据库设计最佳实践
- 数据库中表关系(一对多,多对多,一对一)
- Atitit.数据库表的物理存储结构原理与架构设计与实践
- 分享20个数据库设计的最佳实践
- Django中数据库的数据关系:一对一,一对多,多对多
- 20 个数据库设计最佳实践
- 百度万亿量级数据库Tera架构应用、设计与实践全攻略
- 基于PowerDesigner数据库设计实践
- 数据库表设计(一对多,多对多)
- 20个数据库设计的最佳实践
- 转载 - 20个数据库设计最佳实践
- 20个数据库设计最佳实践
- 网易云数据库架构设计实践
- 20 个数据库设计最佳实践
- ibatis一对多 数据库设计及实现
- 精心设计的基于组件的C# Win Forms实践 一个框架数据库驱动多个业务逻辑数据库