处理属于自身属性的属性的标准方法?

时间:2012-05-22 21:24:09

标签: sql database-design

我正在建立一个数据库,并有一个如下结构的表

         Att1    Att2    Att3   ....
User1    
User2
User3
....

我希望每个属性(Att1,Att2,Att3,...)都附加一个布尔变量。如下所示:

Att1    No
Att2    No
Att3    Yes
...     ...

每个属性都是来自用户的数字分数(列表首选项),但我想标记每个属性是否真的重要。是否有处理此类依赖的标准方法?谢谢!

3 个答案:

答案 0 :(得分:0)

哦,如果我们可以在表格中嵌入记录,那就太好了。但是,标准SQL和大多数数据库不支持此功能(尽管有例外)。

我会使用一致的命名约定,发明像“IsImportantAtt1”和“IsImportantAtt2”这样的字段。当我这样做时,我也有一个约定,即所有“Is”变量只接受“Y”或“N”的值。如果我想在输出中看到“是”和“否”,那么我使用视图进行转换或在应用程序层中进行。

答案 1 :(得分:0)

我觉得Attribute实际上是一个实体调用ListingPreference,其中包含Id个密钥,2个属性,ScoreIsImportant以及一个FK致User的{​​{1}}。

UserID currentley只有一个User键。


简而言之,属性没有属性,这意味着你的模型是错误的。

答案 2 :(得分:-1)

如果属性本身不重要,属性的分数是否重要?如果没有,您可以简单地使用NULL分数表示该属性不重要的约定。

否则,您可以为每个属性列添加另一个(bool)列:

         Att1    Important1    Att2    Important2    Att3    Important3   ....
User1    
User2
User3
....

顺便说一句,属性是固定的吗?即你总是拥有完全相同的属性集吗?如果没有,EAV model可能会更好地服务(尽管EAV传统上有一些缺点):

enter image description here

可以简单地从USER_ATTRIBUTE表中省略一个不重要的属性(假设“no”是我在顶部的问题的答案)。