首页 > 解决方案 > SQL/C# - 为具有 50 多个功能的产品设计表(真/假)

问题描述

我在设计一张具有我们产品功能的新桌子时遇到了问题。起初,我将这些功能硬编码到这样的列中:

ProductExtrasID | Feature 1 | Feature 2 | Feature.. 50
1                 true         true         false
2                 false        true         false

.. 等等.. 我使用 ProductExtrasID 作为产品表的外键,只显示“真”的特征。

现在我被要求动态完成功能,以便站点的每个管理员都可以添加新功能。

到目前为止我想做的是这个

ProductExtrasID |ProductID | Feature Description   | FeatureActive
    1                20        feature1 description      false
    2                20        feature2 description      true
    3                30        feature1 description      true
   ...

然后显示 FeatureActive 为 true 的每个产品 ID 的特征。

这是实现我想要的好方法还是可以做得更好?

谢谢

标签: c#sqllinq

解决方案


为所有特征创建一个表:

ID  |  Feature Description
1     feature1 description
2     feature2 description
3     feature1 description

然后在表 ProductsFeatures 中使用它:

ProductExtrasID |ProductID | FeatureID
    1                20        1      
    2                20        2      
    3                30        1

如果您需要显示如下内容:

Product20: 
    feature1: true,
    feature2: true,
    feature10: false.
(and not show another 47 features)

您需要创建附加表 ProductTypesFeatures:

ProductTypeID |FeatureID
1                1      
1                2 
1                10
2                1

推荐阅读