Database design 我应该如何对数据库模式进行建模,以适应许多具有灵活性的依赖列,从而轻松添加新列?

Database design 我应该如何对数据库模式进行建模,以适应许多具有灵活性的依赖列,从而轻松添加新列?,database-design,relational-database,Database Design,Relational Database,我有一个关系数据库,我将卖家信息存储在一个名为(很自然)卖家的表中。在那张表中,我有一个叫做工业的专栏。我也有很多关于卖家的属性。适用于卖方的属性取决于其行业。平均而言,一个行业只有四个适用的属性。每个行业的最大属性数为12个(到目前为止) 目前,我将每个属性表示为Seller表中的一列。我有21个属性,因此在Seller表上有21个允许null的对应列 该应用程序相当新(3个月),业务在这段时间内已请求了6个新属性(总共27个属性)。我猜将来还会继续请求更多属性。我现在质疑在Seller中将每

我有一个关系数据库,我将卖家信息存储在一个名为(很自然)卖家的表中。在那张表中,我有一个叫做工业的专栏。我也有很多关于卖家的属性。适用于卖方的属性取决于其行业。平均而言,一个行业只有四个适用的属性。每个行业的最大属性数为12个(到目前为止)

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

该应用程序相当新(3个月),业务在这段时间内已请求了6个新属性(总共27个属性)。我猜将来还会继续请求更多属性。我现在质疑在Seller中将每个属性作为列的选择。有没有更好的方法在数据库中对此进行建模

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

编辑
有154个行业。因此,许多行业都有共同的属性。

如果属性是行业属性。它属于行业表,否则属于卖方列。如果是“每个供应商”但“取决于行业”,则应为此创建更多的表:卖方\行业\属性(每个行业一个表)

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

  • 教育
那么您应该有以下表格:

  • 教育属性
  • 网络属性
例如,教育属性表应包含以下列: 卖方id和每个属性一列,因此,对于同一示例,如果我们有以下属性:

  • 雇员人数
  • 研究对象
然后,
education\u attributes
表应包含以下列:

  • 卖方id
  • 员工人数
  • 主题

如果属性是行业属性。它属于行业表,否则属于卖方列。如果是“每个供应商”但“取决于行业”,则应为此创建更多的表:卖方\行业\属性(每个行业一个表)

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

  • 教育
那么您应该有以下表格:

  • 教育属性
  • 网络属性
例如,教育属性表应包含以下列: 卖方id和每个属性一列,因此,对于同一示例,如果我们有以下属性:

  • 雇员人数
  • 研究对象
然后,
education\u attributes
表应包含以下列:

  • 卖方id
  • 员工人数
  • 主题

适用于卖方的属性基于卖方的行业。但是,每个属性的值都是特定于卖方的。@James是的,我的回答详细解释了这种情况。+1此解决方案也被称为。@alfasin:谢谢您的快速回复。这似乎是一个非常好的方法,但在我的例子中,我有154个行业,这些行业具有这些共同的属性。所以,我会有154张桌子。我很抱歉。。。我应该在我的原始问题中公布这一点。我只是编辑以提供附加信息。@James我不会采用这种方法,因为使用查询选择相关属性要比获取大量结果集并使用代码“手动”分析快得多(I/O是一种痛苦)。适用于卖方的属性基于卖方的行业。但是,每个属性的值都是特定于卖方的。@James是的,我的回答详细解释了这种情况。+1此解决方案也被称为。@alfasin:谢谢您的快速回复。这似乎是一个非常好的方法,但在我的例子中,我有154个行业,这些行业具有这些共同的属性。所以,我会有154张桌子。我很抱歉。。。我应该在我的原始问题中公布这一点。我只是编辑以提供附加信息。@James我不会采用这种方法,因为使用查询选择相关属性要比获取巨大的结果集并用代码“手动”分析快得多(I/O是一种痛苦)