我的方法是否正确使用如此多的概括?还有其他方法吗?
当然还有其他方法。泛化没有任何问题,尽管在一个模型中看到这么多很少见。这并不意味着它的错误,在这种情况下是非,取决于您的模型表示业务需求的程度。
在上面的描述中,第一句用斜体和粗体表示有一些“可选的设施”。是否应将这些属性添加到酒店,旅馆和B& B实体或广义住宿实体?
这听起来像是一般要求,我会将其与住宿相关联。
请注意,在给定方案中有两个“设施”用法 - 可以访问/审查的地方,以及房间的功能。我建议重命名其中一个术语以避免混淆。
在突出显示的第二句中,是否应该像我所做的那样将费用添加到酒店,旅馆和B& B?否则,我该如何进行建模呢?
您可以按照自己的方式完成,或者向住宿添加费用属性(以及每个人/房间指示符)。
您应该尽量避免在属性中混合域。我的意思是所有可能的值应该是相同的类型并且在逻辑上可以互换。常见的情况是在一个属性中混合不同货币的值,或在EAV表中混合值列。这种设计往往会增加复杂性。
向住宿添加成本属性具有类似的气味,将每个房间的成本与单个属性中的人均成本相结合。不过,我会考虑它是否可以消除一组子类型 - 如果我们没有特定于子类型的属性,关系或约束,则可以通过属性指示类型,从而减少了对每个子类型进行显式建模的需要。
在第三个突出显示的句子中,是否应在每种类型的餐馆下列出指定的属性,还是应将它们添加到广义实体Eatery中?
我认为没有理由为每个餐馆单独列出它。所有子类型共有的属性,关系和约束应与超类型相关联。
为了比较,这是我的模型。我在看你之前做过,所以需要一种非常不同的方法。
一些说明:
我希望这有帮助,让我知道我是否应该澄清任何事情。