关于数据库设计

三年前曾问过一个问题:到底在做数据库设计时要不要外键约束?
如今看来,虽然外键约束能在一定程序上保证数据库数据的一致性,比如做了级联更新或级联删除,程序里不用特别对关联表做相应操作,数据库里即可以即时级联同步。但对后续的数据库修改,却是极不利的。
比如最近需求修改,三年前项目里主键全是int类型,现在int类型不能满足实际需求,需要对主键升级为varchar类型,这时问题就来了,做了外键约束的主键,修改不了字段类型,报错Error on rename of ‘.\dbname#sql-1780_2’ to ‘.\dbname\commodity_type_info’ (errno: 150)。初步估计需要删除外键约束才能解决问题,但前期项目里已经没有对关联表做相应操作,此时删除外键,这个后果,只能呵呵了。。。。。。

所以以后做数据库设计时,一定要记住前车之鉴了,只需设计主键,至于关联表的操作,在程序里处理好相关逻辑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值