我和这个旧职位有同样的问题。
但就我而言,我没有桌子,我只有两个专栏。我解释:
***mytable
id
name
conditional_1 (is a foreign key int)
conditional_2 (int)
包含的数据如下所示:
id name conditional_1 conditional_2
1 oscar 1 NULL
2 rene NULL 67
3 hello 2 NULL
4 stack 4 NULL
5 overf NULL 98
我做对了吗?否则我将需要以下内容:
***mytable
id
name
cond_type
conditional_id (fk tbl_post)
***condtable1
conditional_1
***condtable1
conditional_2
对于这种情况最好的解决方案是什么?
通过使用同一表中的列,您可以强制执行排他性和参照完整性。换句话说,您可以确保在给定的行中,最多一个字段为非NULL 1, 并引用正确表中的现有行。另外,您可以考虑继承。有关这两者的更多信息,请查看这篇文章。
cond_type
从DBMS角度来看,类似的东西毫无意义-您将放弃对引用完整性的自动实施。在并发环境中手动执行此操作可能不正确或缓慢。2
1不幸的是,MySQL没有强制执行CHECK约束(这是强制执行排他性的自然机制),但是您仍然可以依靠触发器。
2您需要非常小心地锁定,以避免出现竞争情况,即使正确执行操作,也可能会损害过程的可伸缩性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句