2013-05-08 17 views
1

我有一个关系数据库,我将卖家信息存储在一个名为(自然就是)卖家的表中。在那张表中,我有一个名为行业的专栏。我也有关于卖方的许多属性。适用于卖方的属性取决于其行业。平均而言,一个行业只有四个适用的属性。每个行业的最大属性是12个属性(到目前为止)。我应该如何建模数据库模式以容纳许多依赖列,并且可以灵活地轻松添加新列?

目前,我将每个属性表示为Seller表中的一列。我有21个属性,因此有21个相应的列允许在卖方表上为空。

的应用是相当新的(3个月),并且商家表示需要6个新的属性,在这个时候(共27个属性)。我猜测未来会继续要求更多的属性。我现在质疑将每个属性作为卖家列的选择。有没有更好的方法在数据库中建模?

我有人提到有一个名为属性的列。该列将是XML类型。将包含属性名称(与行业相关)及其相应值的XML。这是一个好方法吗?

编辑 有154个行业。所以,很多行业都有共同点。

回答

1

如果属性是一个行业attr。它属于行业表,否则属于卖家专栏。如果它是“每个供应商”,但是“行业依赖”,则应为此创建更多表:seller_industry_attributes(每个行业一个表)。

例如,如果您有以下行业:

  • 教育
  • 网络

那么你应该有如下表:

  • education_attributes
  • 个web_attributes

education_attributes表,例如,应包含列: seller_id每一个属性栏,所以如果,对于同样的例子,我们有属性:

  • 员工人数
  • 课题研究的

然后education_attributes表应该有列:

  • seller_id
  • number_of_employees
  • 主题
+0

了适用于卖家的属性是基于卖方的行业。但是,每个属性的价值都是特定于卖家的。 – James 2013-05-08 18:18:49

+0

@詹姆斯是的,我的回答完全详细解释了这个案例。 – alfasin 2013-05-08 18:20:13

+0

+1此解决方案也称为[类表继承](http://martinfowler.com/eaaCatalog/classTableInheritance.html)。 – 2013-05-08 18:21:27

相关问题