2 yanhuhui yanhuhui 于 2016.05.05 11:56 提问

数据库表结构设计方面

为什么现在很多人设计表结构时都不设置外键关联,全部都是单表,这样设计有什么好处吗?缺点又有哪些?

5个回答

caozhy
caozhy   Ds   Rxr 2016.05.05 12:16

优点很多,比如说使用伪删除代替删除(也就是用一个字段标记代替真的删除数据),比如用户误删除数据,或者恶意删除,管理员可以追查和恢复。但是定义了关系,就得用级联删除。
级联删除规定,如果作为主键的一方如果要删除,那么它关联的数据必须全部先删除。
再比如性能上的考虑。分库分表的考虑等等。

cow977
cow977   2016.05.05 12:48

不建主外键,就可以任意顺序插入和删除数据;
建有主外键后,就必须按主外键关系来插入和删除数据,顺序反了就会报错。

Royal_lr
Royal_lr   Ds   Rxr 2016.05.05 13:57

外键关联也只是一个关系而已,不设外键的话,效率要高很多

ShanYeRen2016
ShanYeRen2016   2016.05.06 11:41

1、优点:插入删除机器开销少,不熟悉数据库的开发人员比较好处理,否则删除一个数据,需要研究清楚下边相关子表,这对大的业务模型也是非常困难的;
2、缺点:数据管理不严谨,尤其是数据质量方面难以控制,如果界面程序对插入和删除的数据相关数据不能很好的验证和清理,将来导致大量的垃圾数据,这积累的多了,为后期的数据应用分析带来很多麻烦,需要后期的数据分析筛选加很多的垃圾过滤条件才能保证数据的正确性;

个人建议:对于插入删除频繁的数据表、且数据量相对交大,父表记录也多,这样可以不建参照关系,但是插入和删除的完整性限定,必须这些表的维护程序做到位,其它的表最好还是加约束关系,免得数据出现太多不该有的垃圾

CSDNXIAON
CSDNXIAON   2016.05.05 12:02

数据库表结构设计
数据库表结构设计
数据库表结构设计
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!