要不要显示的创建外键关联?

示例:

表A结构如下:
uid    name
1      张飞
2      吕布

表B结构如下:
bid  uid    boss
1    2      曹操
2    1      刘备
“外键是保证数据库一致性的重要手段,可以级联更新(包括增删改),当然可以不使用显式的外键,只需要每次做操作的时候【记得】同步更新相关的表数据即可。不过有了外键,你如果忘记了,会报错,会提示,但是没有外键就不会。所以对有关联的表创建外键也不失为一个好办法。”——在用hibernate注解时,面向对象操作,针对对象进行持久化是双刃剑。尤其在实体类之间通过注解进行关联时,经过ORM数据库表会自动显示的生成一个外键关联;那么这样带来的问题就是如果外表没有进行更新时,本表是无法直接更新的。我理解,这是一个先后顺序和依赖问题,既然关联了外表的主键,就等于间接关联了其所有的信息,本表对外表是有依赖的;并且在顺序上相当于:先有外表的数据变化,才通过主键'知会'给本表;那么反过来,本表做数据更新时,怎能不顾外表,如果可以不管关联关系,那样就不切实际了。要知道,所有的关联关系,都是表相;其实,只要双方建立了联系,不管几对几,就是双向的联系关系,这个概念一定要清楚。所以,回到上面的例子中,如果B表直接修改曹操为"孙权",那么uid=2的吕布岂不是成了孙权的部下?这显然是不对的。正常逻辑应该是先更新A表中uid=2的name值为"贾诩",才能讲得通,当然级联删除和修改也是A表后B表的(先主后从)。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值