我正在开发一个项目,其中数据库有一些表,其中包含一个存储来自多个表的id的type_id字段
例如:
id | table_type | table id
==============================
1 ADDRESS 1
2 ADDRESS 2
3 CITY 1
4 CITY 2
4 ADDRESS 3
5 COUNTRY 1
table_id字段包含Addresses表中的id,或Cities表或Countries表
我只是想知道这是不是很好的设计。或者我应该尽可能避免这种情况?
此表用于获取用户输入的所有位置。
答案 0 :(得分:3)
答案是:
它取决于。
如果您提供的示例表名为Location
,并且您正在使用它来实现类型继承,那么Address
,City
和Country
是特定类型的Location
,那么这个设计就可以了。在这种情况下,您的主键将位于Location
表中,其他每个表都将具有Location
的外键。如果这不是你如何使用它,那么这不是一个正确规范化的数据库设计。
答案 1 :(得分:0)
这似乎是一个令人困惑的设计。如果您的表Address
,City
和Country
都有自己的id
字段,那么引用它们的表应使用类似Address_id
的列名,{分别为{1}}和City_id
。
您当前的设计试图过于通用。它一定会让你以后遇到麻烦。
答案 2 :(得分:0)
看,如果您可以使用您拥有的值制作密钥。
在这种情况下,您可以将table_type
和table id
组合成主/唯一密钥。
虽然如果table_type
只能是少数值中的一个,可能会将类型保存为enum
?