0

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

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

我希望每个属性(Att1,Att2,Att3,...)都附加一个布尔变量。类似于以下内容:

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

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

4

3 回答 3

0

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

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

于 2012-05-22T22:00:48.783 回答
0

在我看来,这Attribute实际上是一个实体调用ListingPreference,它有一个Id键、2 个属性Score和一个被调用IsImportant的 FK 。UserUserID

Usercurrentley 只有一把Id钥匙。


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

于 2012-05-23T12:21:31.477 回答
-1

如果属性本身不重要,属性的分数是否重要?如果不是,您可以简单地约定一个 NULL 分数意味着该属性不重要。

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

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

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

在此处输入图像描述

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

于 2012-05-23T12:02:11.493 回答