c0d*_*0da 1 sql database database-design relational-database
当广泛引用关系数据库中的多值属性时,它的概念有多好?
让我举个例子来说明我的意思.假设我有下表:
UserID Attribute1
User1 a,b,c
User2 x,y,z
User3 a,x,y
User4 c,b,z
[a,b,c,x,y,z are to be strings]
Run Code Online (Sandbox Code Playgroud)
还有另一个用户User5,我必须根据他是否Attribute1匹配其他4个用户中的任何一个来对其他用户提出一些建议.
[在图形数据库中,任务本来可以更容易,因为我可以使用相同的关系从相应的用户创建多个节点.
现在,这个表只是对实际数据库外观的微观抽象.如果不是数百万,表中的行数可能会达到数十万.此外,多个值实际上可能远远超过3.除此之外,数据库可能负载很重,在这种情况下,可能存在一些问题.
那么,在这种情况下,多值属性是否有用?或者有更好的方法做同样的事情吗?我能想到的一个显而易见的方法是将其存储为:
UserID Attribute1
User1 a
User1 b
User1 c
User2 x
User2 y
User2 z
User3 a
User3 x
User3 y
User4 c
User4 b
User4 z
Run Code Online (Sandbox Code Playgroud)
在数据库中处理这种情况的任何更快的方法?或者是否有现代数据库的内置功能可以利用?
在字段中具有多个值仅在数据在数据库中是自重时才有用,即,如果您只读取数据库中的字段并在之后处理它.
只要您想在查询中使用字段中的值,就必须通过解析值来比较它,从而获得巨大的性能损失.如果您将值放在单独的记录中,如第二个示例所示,以便您可以在其上添加索引,那么查询将快10 000倍并不是不现实的.
在表中有一百万条记录不是问题.我们有一些表中有超过1亿条记录.
| 归档时间: |
|
| 查看次数: |
11799 次 |
| 最近记录: |