为什么有人说不建议建立表与表之间的主外键关系

外键约束的利与弊
本文探讨了在外键约束的使用中所遇到的问题,包括其对于开发效率的影响、错误处理的复杂性以及数据处理时的限制等。此外还提到了在实际应用中如何权衡数据完整性和开发灵活性。
使用外键有利于维持数据完整性和一致性,但是对于开发来说是非常不利的。 

每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,而且需要更为复杂的错误捕获机制。 
做数据处理时会受到很多的束缚,有些地方本来就可以允许有部分冗余,但是由于设计了外键约束,只能放弃。 
出现BUG的时候追踪很麻烦。 

总的来说,自己来掌握数据总比别人去掌握要方便。 
目前我们公司的所有软件都很少用到外键约束,基本都是由程序控制一致性和唯一性。
mysql:创建博客类型(blog_type)、博客信息(t_blog)、博客评论(t_comment)这三张,并根据设计图建立之间的约束; 博客类型(blog_type); 创建博客类型,字段和属性如下: 字段名称 类型 备注 约束 type_id int 类型id 主键,自动增长,增量为1 type_name varchar(32) 类型名称 非空 博客信息(t_blog); 字段名称 类型 备注 约束 blog_id bigint 博客id 主键,自动增长 blog_title varchar(100) 博客标题 非空 blog_content longtext 博客内容 非空 userid bigint 创建人id 外键 type_id int 类型ID 外键 blog_status int 博客状态 1为发布 0为草稿 非空,默认为0 create_time datetime 创建时间 非空 update_time datetime 更新时间 非空 cover_image varchar(255) 封面图片 无 创建该时,注意要添加外键约束,外键为userid,外键名称设置为FK_user_id,外键为用户信息(t_user)。 另一个外键为type_id,外键名称设置为FK_type_id,外键为博客类型(blog_type)。 新闻评论(t_comment)。 字段名称 类型 备注 约束 comment_id bigint 评论id 主键,自动增长,增量为1 comment_content varchar(500) 评论内容 非空 blog_id bigint 评论内容 非空,外键 createtime datetime 评论时间 非空 userid bigint 评论人ID 非空,外键 replyid int 评论回复人ID 非空 创建该时,注意要添加外键约束,外键为userid,外键名称设置为FK_comment_user_id,外键为用户信息(t_user)。 另一个外键为blog_id,外键名称设置为FK_comment_blog_id,外键为博客信息(t_blog)。 在blog_db中创建这三张(顺序能变,即blog_type -> t_blog -> t_comment),并添加相应约束。
10-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值