将1个表绑定到多个表的最佳方法是什么

时间:2010-02-02 16:30:10

标签: sql

我有一张桌子。称之为TableA

此表将链接到许多表,理想情况下由(many-1)中的数据库关系强制执行(TableA-TableB) (many-1)(TableA-TableC)......等

我的解决方案是将TableB,TableC等的所有外键与TableA一起放入“Type”字段(其中包含要强制执行关系的word版本)。但我认为必须有更好的方法。 你会做什么?

我对此表示感谢,谢谢。

2 个答案:

答案 0 :(得分:1)

这是一种完全可以接受的方法 - 外键确实是建立多对一关系的正确方法。

一般来说,你不能只说你想要一个“更好”的解决方案;相反,你应该有一个特定的目标。更快,更短的实现,更少的内存,等等。更好的是,如果您有一个特定的用例,您希望优化它。

修改:现在您的问题已经过编辑了。如果我理解正确,您会觉得您当前的实现效率很低,因为您的一个TableA项目最多可以附加到另一个项目,无论是来自TableC,TableC等。

如果这是正确的,我可能会做的是将表A中的外键实现为ID和表名,而不是为要添加到系统的每种新类型的对象都有一个新列。当然,这会阻止您更改表名,因此更强大的解决方案是将另一个表映射到对象类型(存储为表名)的唯一ID。然后表A中的外键将是item_idobject_type_id,您可以通过查找object_type_id表中的object_types来获取表名。< / p>

答案 1 :(得分:0)

如果要添加数据库服务器强制执行的参照完整性,则每个键必须由TableA中的唯一列表示。

如果不了解更多有关您的设计尝试的内容,很难提供更多建议。