是否应该使用Mysql外键?
2016-01-19 10:41
405 查看
外键是用来保证数据的完整性和一致性的。
一般数据库属于持久层,尽量把业务逻辑转移到应用层,外键会使表之间耦合太大,所以建议靠程序去检测和数据库的事务来保证数据的完整性和一致性;另外外键需要额外的资源进行数据完整性和一致性检验,更容易造成死锁,数据库更容易达到瓶颈,特别是表的扩展能力大大受限。
当然也要看你的系统,如银行系统等需要很高的安全性和可靠性还是建议使用外键,另外利用外键检测数据还能减少程序开发量;但是大部分web项目都是追求体验、性能,对数据并不是非常严格,还是不建议使用;
结论: 避免使用外键
参考: 高性能mysql 7.3 外键约束
php手册 1.8.5.5. 外键
一般数据库属于持久层,尽量把业务逻辑转移到应用层,外键会使表之间耦合太大,所以建议靠程序去检测和数据库的事务来保证数据的完整性和一致性;另外外键需要额外的资源进行数据完整性和一致性检验,更容易造成死锁,数据库更容易达到瓶颈,特别是表的扩展能力大大受限。
当然也要看你的系统,如银行系统等需要很高的安全性和可靠性还是建议使用外键,另外利用外键检测数据还能减少程序开发量;但是大部分web项目都是追求体验、性能,对数据并不是非常严格,还是不建议使用;
结论: 避免使用外键
参考: 高性能mysql 7.3 外键约束
php手册 1.8.5.5. 外键
相关文章推荐
- MySQL简单的确定瓶颈
- C 连接mysql VC的步骤
- MySQL创建用户的三种方法
- 操作MySQL数据库的文章
- mysql常用命令
- Hibernate关于查询Timestamp字段总结
- mysql的复制原理以及流程
- Mysql存储位置变更
- 安装Hive(独立模式 使用mysql连接)
- Mysql 数据库备份权限
- mysql 数据库 分表后 怎么进行分页查询?Mysql分库分表方案?
- MySQL数据库
- mysql错误删除默认root用户解决办法
- MySQL逗号分割字段的行列转换技巧
- mysql 语句练习
- MySql启动预编译功能
- mysql数据库插入中文时出现ERROR 1…
- mysql环境变量设置
- MySQL数据库使某个不是主键的字段唯一
- mysql 常用命令