你会如何在db中建立这些关系?关于数据库建模的问题
您有一个可包含PageElements的Page实体。
PageElement可以是例如文章或图片。文章表格明显具有除图片之外的其他成员/列。一篇文章可能有ie。 “Title”,“Lead”,“Body”列都是nvarchar类型,而图片可能有类似“AltText”,“Path”,“Width”,“Height”的内容。我喜欢这是可扩展的,谁知道在3个月内我可能需要什么PageElements?所以我想我需要一个PageElementTypes表。
对于关系,那这样的表:
网页一个ID,和其他魔神。 (创建日期,可见,什么不该)
Pages_PageElements用的PageId和PageElementId。
PageElements带有Id和PageElementTypeId以及更多的mumbojumbo(SortOrder,Visibility等)。
PageElementTypes用一个ID和一个名称(如“条”,“图片”,“AddressBlock”)
现在,我应该建立在每一个第一个PageElementId列,图片,AddressBlocks表完成东西了吗?这是我有点卡住,这是一个简单的1:1关系,所以这应该工作,但不知何故,我可能会错过一些东西。
追问:
下面设有独立的属性会强迫我的所有属性存储为同一类型,或不推荐的解决方案?如果一个PageElement的属性是nvarchar(255),而其中一些属于nvarchar(1000),那么如果某些是整数?
如果我得到了EAV的方式,我将不得不创建大量的表来保存所有不同数据类型的属性值。
This Works。这基本上是实体属性值(EAV)。它有优点和缺点。 – BobbyShaftoe 2008-12-02 09:26:28
这不需要所有的参数都是相同的类型吗? – kitsune 2008-12-02 09:36:13
有办法。首先,如果你使用MSSQL,使用nvarchar(MAX),否则检查你的DBVS。其次,对于int/datetime/decimal /等,在同一个表中创建几个列。对于每个记录,只填写一个。 – 2008-12-02 10:16:30