创建具有一对多关系的表或仅具有单列的表

时间:2016-04-05 02:38:06

标签: sql sql-server azure

如果我在Azure Blob存储中有多个键值对,例如:

  -/files/key1
  -/files/key2
  -/files/key3

并且每个密钥都是由用户上传的,但是用户可以上传多个密钥,我的SQL数据库中最好的表设计是什么来引用哪些密钥与哪个用户相关联?

A)具有单列的表 - 每次我向BLOB存储添加一个文件时,我使用用户名和相关的键值将一行添加到单个列表中,即:

 AssociationColumn
 -User1+key1
 -User2+key2
 -User1+key3

如果我查询使用某种正则表达式,那么查找User1的所有键是否会很慢?将User列为一列并将键作为另一列的这两列会影响性能吗?我怎样才能实现这种一对多的关系?

使用1-2-n等标识符存储密钥也不好?有关如何创建适合varchar(MAX)空间的唯一标识符的任何建议吗?

1 个答案:

答案 0 :(得分:0)

关系数据库中的正确方法是使用联结表。这将至少有两列:

  • $.each(labels, function (index, item) { myData.push({ label: item, value: chartData[index] }); });
  • User

你不会把它们放在一个列中 - 我甚至不认为在Azure中。