我正在做一个数据库,并有一个表结构如下处理属性本身具有属性的标准方法?
Att1 Att2 Att3 ....
User1
User2
User3
....
,我想每一个属性(ATT1,ATT2,ATT3,...)中有一个布尔变量连接到它。像下面这样:
Att1 No
Att2 No
Att3 Yes
... ...
每个属性是来自用户的数值分数(上市首选项),但我想它是否真正重要与否来标记每个属性。有没有处理这种类型的依赖的标准方法?谢谢!
我正在做一个数据库,并有一个表结构如下处理属性本身具有属性的标准方法?
Att1 Att2 Att3 ....
User1
User2
User3
....
,我想每一个属性(ATT1,ATT2,ATT3,...)中有一个布尔变量连接到它。像下面这样:
Att1 No
Att2 No
Att3 Yes
... ...
每个属性是来自用户的数值分数(上市首选项),但我想它是否真正重要与否来标记每个属性。有没有处理这种类型的依赖的标准方法?谢谢!
噢,如果我们可以在表格中嵌入记录,这将是很好的。但是,标准SQL和大多数数据库不支持这一点(虽然有例外)。
我会使用一致的命名约定,发明诸如“IsImportantAtt1”和“IsImportantAtt2”等字段。当我这样做时,我也有一个约定,即所有的“Is”变量只取“Y”或“N”的值。如果我想在输出中看到“是”和“否”,那么我使用该转换的视图或在应用程序层中进行。
如果您使用的是MS SQL,那么'Bit'类型对于标志是理想的 – Jodrell
如果属性本身不属性,属性的得分很重要吗?如果没有,你可以简单地有一个约定,即NULL分数意味着属性不重要。
否则,你可以为每个属性栏添加一个(布尔)柱:
Att1 Important1 Att2 Important2 Att3 Important3 ....
User1
User2
User3
....
顺便说一句,在属性固定的吗?即你是否总是具有完全相同的一组属性?如果没有,你可以更好地通过EAV model服务(尽管某些缺点EAVS通常有):
一个不重要的属性可以简单地从USER_ATTRIBUTE表省略(假设“不”的答案是我的问题在顶部)。
这听起来对我来说,Attribute
实际上是一个实体的呼叫ListingPreference
它有一个Id
键,2个属性,Score
和IsImportant
和FK到User
称为UserID
。
User
currentley只有一个Id
键。
总之,属性没有属性,这意味着你的模型是错误的。
你说得对。我认为处理这种情况的标准方式是从来没有进入过。我完全理解你在这里的意思,如果我从头开始,这将是一个更好的方式,但在我回到原点之前,我想我会按照@Gordon的建议重新命名这些字段。 – mstobb
你有没有具体的例子ow什么Att1,2和3实际上会被调用? – Jodrell
我认为这对我的问题并不重要,但要澄清一些属性可能是“Coffee”,“Tea”和“Creamer”,其中分数是每个用户的偏好(从0到10)他们有库存/可用。我想要做的就是回到事实之后 - 并且标记我们真正愿意参与的重要事件。 – mstobb