Heim  >  Artikel  >  Backend-Entwicklung  >  mysql缺少外键约束的时候,如何合理的更新两张相关联的表?

mysql缺少外键约束的时候,如何合理的更新两张相关联的表?

WBOY
WBOYOriginal
2016-06-06 20:43:461120Durchsuche

我有一个需求大概是这样的:

有一张文章表和一张类别表,文章表有一个cat_id关联类别表。这里,mysql那一层没有做外键约束。在这种情况下,每次创建文章表的时候,一般大家会怎么处理这里cat_id的?

我的几个方案:
1、去查一次类别表,如果不存在这个类别,就不让更新。(优化版:如果类别条数不多,直接放在内存备查,或者使用缓存)
2、根本不去管这个类别有没存在。

更新:
1、是做一个论坛系统,用户可以发表文章,而类别主要由运维的人员创建。

回复内容:

我有一个需求大概是这样的:

有一张文章表和一张类别表,文章表有一个cat_id关联类别表。这里,mysql那一层没有做外键约束。在这种情况下,每次创建文章表的时候,一般大家会怎么处理这里cat_id的?

我的几个方案:
1、去查一次类别表,如果不存在这个类别,就不让更新。(优化版:如果类别条数不多,直接放在内存备查,或者使用缓存)
2、根本不去管这个类别有没存在。

更新:
1、是做一个论坛系统,用户可以发表文章,而类别主要由运维的人员创建。

我一般都是用第二种的 直接忽略

如果业务上对数据的严谨性要求很高 当然还是第一种
如果要求不是很高 第二种就可以了
    首先在保存到库中时,前面的业务一般都会保证这个id是有源可循的;
    再次即使这个id对应的类别不存在或者以后这个类别被删除时没做级联删除,最终效果也不过是在查询这个类别是找不到数据,通常和把这个id置空效果接近

如你的第一个方案,查一下类别表,类别一般不会太大,大可以使用cache

1.去查一次类别表如果没有的话,键值弄成 0 插入文章
2.显示的时候弄给未分类类别(也就是键值为 0 的文章)

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn