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

示例:

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

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

发布了24 篇原创文章 · 获赞 7 · 访问量 5335

猜你喜欢

转载自blog.csdn.net/GengMingHui_5/article/details/89339556
今日推荐