mysql缺少外键约束的时候,如何合理的更新两张相关联的表?
有一张文章表和一张类别表,文章表有一个cat_id关联类别表。这里,mysql那一层没有做外键约束。在这种情况下,每次创建文章表的时候,一般大家会怎么处理这里cat_id的?
我的几个方案:
1、去查一次类别表,如果不存在这个类别,就不让更新。(优化版:如果类别条数不多,直接放在内存备查,或者使用缓存)
2、根本不去管这个类别有没存在。
更新:
1、是做一个论坛系统,用户可以发表文章,而类别主要由运维的人员创建。
回复内容:
我有一个需求大概是这样的:
有一张文章表和一张类别表,文章表有一个cat_id关联类别表。这里,mysql那一层没有做外键约束。在这种情况下,每次创建文章表的时候,一般大家会怎么处理这里cat_id的?
我的几个方案:
1、去查一次类别表,如果不存在这个类别,就不让更新。(优化版:如果类别条数不多,直接放在内存备查,或者使用缓存)
2、根本不去管这个类别有没存在。
更新:
1、是做一个论坛系统,用户可以发表文章,而类别主要由运维的人员创建。
我一般都是用第二种的 直接忽略
如果业务上对数据的严谨性要求很高 当然还是第一种
如果要求不是很高 第二种就可以了
首先在保存到库中时,前面的业务一般都会保证这个id是有源可循的;
再次即使这个id对应的类别不存在或者以后这个类别被删除时没做级联删除,最终效果也不过是在查询这个类别是找不到数据,通常和把这个id置空效果接近
如你的第一个方案,查一下类别表,类别一般不会太大,大可以使用cache
1.去查一次类别表如果没有的话,键值弄成 0
插入文章
2.显示的时候弄给未分类类别(也就是键值为 0
的文章)