【发布时间】:2013-12-18 18:06:38
【问题描述】:
我有以下实体:书籍、作者和商店。
它们每个都可以有一个 cmets 部分。我应该将 cmets 存储在单独的表中还是有子类型/超类型设计?如果我使用单独的表格在技术上是错误的吗?因为无论哪种方式,它可能需要相同数量的工作,或者如果任何子类型的超类型层次结构发生变化,则子类型设计可能需要更多工作。
【问题讨论】:
我有以下实体:书籍、作者和商店。
它们每个都可以有一个 cmets 部分。我应该将 cmets 存储在单独的表中还是有子类型/超类型设计?如果我使用单独的表格在技术上是错误的吗?因为无论哪种方式,它可能需要相同数量的工作,或者如果任何子类型的超类型层次结构发生变化,则子类型设计可能需要更多工作。
【问题讨论】:
超类型和子类型解决了“这些东西不完全相同,但也没有完全不同”的问题。
超类型/子类型设计要求一些属性存储在超类型中,而另一些属性存储在子类型中。现实世界中每个事物的属性都在两个表之间进行拆分。
您如何决定如何拆分属性? 所有子类型共有的属性“向上”移动到超类型中。所以如果你从公司和个人开始,他们并不完全一样,因为
等等。
它们并没有完全不同,因为
等等。
两者共有的属性(至少是法定名称)冒泡“向上”进入超类型。
但是,在您的情况下,尚不清楚书籍、作者和商店如何适合该分析。很明显,它们并不完全相同。但它们完全不同吗?我想是的。
如果您谈论的是关于书籍、人物和商店的网站帖子之类的内容,那就另当别论了。 answer to a similar SO question 包含代码。
【讨论】: