您将如何在数据库中建模这些关系?
您有一个可以包含 PageElements 的 Page 实体。
PageElement 例如可以是文章或图片。文章表显然具有除图片之外的其他成员/列。一篇文章可以有ie。“Title”、“Lead”、“Body”列都是 nvarchar 类型,而 Picture 可能有“AltText”、“Path”、“Width”、“Height”之类的内容。我喜欢它是可扩展的,谁知道我在 3 个月内可能需要什么 PageElements?所以我想我需要一个 PageElementTypes 表。
对于关系,像这样的表呢:
带有 Id 的页面,以及其他的胡言乱语。(创建日期,可见,什么不)
Pages_PageElements与 PageId 和 PageElementId。
具有 Id 和PageElementTypeId的 PageElements 以及更多的 mumbojumbo(SortOrder、Visibility 等)。
具有 Id 和名称的PageElementTypes(例如“文章”、“图片”、“地址块”)
现在,我应该在每个 Articles、Pictures、AddressBlocks 表中创建一个 PageElementId 列来完成吗?这就是我有点卡住的地方,这是一个简单的 1:1 关系,所以这应该可以工作,但不知何故我可能会错过一些东西。
跟进:
下面推荐的具有单独属性的解决方案将迫使我将所有属性存储为同一类型,或者不是?如果一个 PageElement 的属性是 nvarchar(255) 并且有些是 nvarchar(1000),如果有些是整数怎么办?
如果我采用 EAV 方式,我将不得不创建大量表来保存所有不同数据类型的属性值。