我正在为新项目设计数据模型。
其中一项要求规定某些对象可以指向某个人或公司。
实现这一目标的最明智的方法是什么?
我想过一个表格链接"演员"像这样(用优秀的yUML.me BTW绘制):
在actor
表中,根据actor_type
,person_id
或company_id
是其对应表格中的外键,或者是NULL
。这样,当one_table
想要检索有关actor
的详细信息时,我首先检查actor_type
字段并检索person_id
或company_id
。
它正在运作,但我正在寻找更好的设计。 Here is the link for editing the diagram
答案 0 :(得分:2)
很难真正给出答案,但我有一些可能对你有用的笔记。
但他们真的只是一些笔记。
总的来说,这个数据模型似乎很好,因为已知。
答案 1 :(得分:2)
我建议你制作引用相同超类型(演员)的公司和人物子类型。请注意,您不需要单独的person_id,company_id,因为参与者必须是一个或另一个,并且不能同时存在。像这样:
答案 2 :(得分:1)
这是类/子类的经典案例(或者,如果您更喜欢类型/子类型)。我建议你访问以下三个标签,查看标记的问题以及你可以在&#34下看到的标签维基;了解更多"。
single-table-inheritance class-table-inheritance shared-primary-key
这可能会为您提供所需的所有答案。或者您可能更愿意在问题中添加一个或多个这些标记,以吸引更多答案。
注意:"继承"标签中使用的是这些技术允许您获得构建到实现继承的对象环境中的一些好处。