精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-01-04
下面是我总结的一些优缺点,欢迎大家指导,帮忙分析一下到底使用哪种方式 建立外键的好处: 1) 由数据库保证数据完整性,比程序保证完整性更可靠, 多应用时(如有应用A,B,C他们之间的实体存在关联关系),由程序来保证数据完整性变得困难 2) 外键约束使得数据库的ER图可读性变强,有助于业务逻辑设计 不建立外键的好处: 1) 可以用触发器或应用程序保证数据的完整性 2) 开发变得简单,维护数据时不用考虑外键约束 3) 性能高,大数据量插入操作时不用考虑维护外键 讨论结果:不建立外键约束,关联关系由程序控制,另外还需要删除现有的外键关系 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-01-04
我们公司一直都这样 一律不用数据库外键。
所有外键逻辑都用程序来保证 |
|
返回顶楼 | |
发表时间:2013-01-04
hedgehog12 写道 我们公司一直都这样 一律不用数据库外键。
所有外键逻辑都用程序来保证 谢谢 |
|
返回顶楼 | |
发表时间:2013-01-05
如果你不需要参照完整性(数据不完整也没关系,或者不可能不完整,其他机制保证了)
或者无法使用参照完整性(比如分表/分库) 或者有其他机制保证参照完整性(比如在应用中搞定) 或者参照完整性影响性能(大批量数据插入) 那就没必要使用。否则,根据自己的需要考虑使用,我做项目中不使用外键也不没遇到严重的问题。个人观点,多多指正 |
|
返回顶楼 | |
发表时间:2013-01-07
tangyanbo 写道 最近做项目的时候在讨论表与表之间的关系是否需要建立外键约束,
下面是我总结的一些优缺点,欢迎大家指导,帮忙分析一下到底使用哪种方式 建立外键的好处: 1) 由数据库保证数据完整性,比程序保证完整性更可靠, 多应用时(如有应用A,B,C他们之间的实体存在关联关系),由程序来保证数据完整性变得困难 2) 外键约束使得数据库的ER图可读性变强,有助于业务逻辑设计 不建立外键的好处: 1) 可以用触发器或应用程序保证数据的完整性 2) 开发变得简单,维护数据时不用考虑外键约束 3) 性能高,大数据量插入操作时不用考虑维护外键 讨论结果:不建立外键约束,关联关系由程序控制,另外还需要删除现有的外键关系 哎,我也一直在纠结这个问题, 不过目前做的几个系统都是使用的外键。 还有,外键导入数据的时候,比较麻烦,例如excel数据的导入。 |
|
返回顶楼 | |
发表时间:2013-01-07
想在程序逻辑偷懒的人才用外键约束
|
|
返回顶楼 | |
发表时间:2013-01-07
w156445045 写道 tangyanbo 写道 最近做项目的时候在讨论表与表之间的关系是否需要建立外键约束,
下面是我总结的一些优缺点,欢迎大家指导,帮忙分析一下到底使用哪种方式 建立外键的好处: 1) 由数据库保证数据完整性,比程序保证完整性更可靠, 多应用时(如有应用A,B,C他们之间的实体存在关联关系),由程序来保证数据完整性变得困难 2) 外键约束使得数据库的ER图可读性变强,有助于业务逻辑设计 不建立外键的好处: 1) 可以用触发器或应用程序保证数据的完整性 2) 开发变得简单,维护数据时不用考虑外键约束 3) 性能高,大数据量插入操作时不用考虑维护外键 讨论结果:不建立外键约束,关联关系由程序控制,另外还需要删除现有的外键关系 哎,我也一直在纠结这个问题, 不过目前做的几个系统都是使用的外键。 还有,外键导入数据的时候,比较麻烦,例如excel数据的导入。 导入数据时禁用外键即可 有命令 |
|
返回顶楼 | |
发表时间:2013-01-09
如用程序对数据的完整性约束代替数据的外键约束,是否增加了程序的复杂性,导致程序无法安于业务层面的开发?
PS:个人愚见^_^ |
|
返回顶楼 | |
发表时间:2013-01-09
msi110 写道 如用程序对数据的完整性约束代替数据的外键约束,是否增加了程序的复杂性,导致程序无法安于业务层面的开发?
PS:个人愚见^_^ 程序约束可以做到很友好的错误提示 DB约束想做友好提示就不那么好整了 |
|
返回顶楼 | |
发表时间:2013-01-09
外键不错啊,可以用,只不过,很多时候会有想死的心
|
|
返回顶楼 | |