我应该为多值列使用哪个数据库
which database should i use for multi-value column
我对数据库了解不多。我在纸上有一个 table 有 4 或 5(1 个用于 id)列。一个是主要的和单值的,而其他列是次要的并且可以具有多个值。现在我有一些值,我必须在辅助列和 return 最匹配的主列中搜索这些值。即
Id Primary Secondary_1 Secondary_2 Secondary_3
1 ABCD 12,11,9 51,52 77
2 ABCE 9,15,17 12,14,7 71,77
3 ABEF 8,9,14,12 51,7 77,71
4 ABEG 7,9,15 52,14 77,78
辅助列可以是字符串类型。现在假设我必须搜索 (8,9,14,77)
它应该 return ABEF。如果 search(9,51,77) 它应该 return (ABCD,ABEF) 等等。所以我的问题是我如何存储数据库我应该使用哪种模式来解决这类问题。
您应该在主 table 之外另外创建 3 个 table,并使用外键将它们的行连接到主 table:
- 主要table:Id,主要
- 二级table1:ForeignId,值
- 二级table2:ForeignId,值
- 二级table3:ForeignId,值
然后,在所有 "ForeignId" 列上创建外键,与主 table 的 "Id" 列相连。
当然,这些列的名称很糟糕。不要命名它们 "Value",更准确。
目标是在一个字段中有单个值,而不是多个值。使用这样的规范化设计,您可以通过简单的字符串比较来查询辅助 table,同时将主 table 行与匹配的行连接起来。
我对数据库了解不多。我在纸上有一个 table 有 4 或 5(1 个用于 id)列。一个是主要的和单值的,而其他列是次要的并且可以具有多个值。现在我有一些值,我必须在辅助列和 return 最匹配的主列中搜索这些值。即
Id Primary Secondary_1 Secondary_2 Secondary_3
1 ABCD 12,11,9 51,52 77
2 ABCE 9,15,17 12,14,7 71,77
3 ABEF 8,9,14,12 51,7 77,71
4 ABEG 7,9,15 52,14 77,78
辅助列可以是字符串类型。现在假设我必须搜索 (8,9,14,77) 它应该 return ABEF。如果 search(9,51,77) 它应该 return (ABCD,ABEF) 等等。所以我的问题是我如何存储数据库我应该使用哪种模式来解决这类问题。
您应该在主 table 之外另外创建 3 个 table,并使用外键将它们的行连接到主 table:
- 主要table:Id,主要
- 二级table1:ForeignId,值
- 二级table2:ForeignId,值
- 二级table3:ForeignId,值
然后,在所有 "ForeignId" 列上创建外键,与主 table 的 "Id" 列相连。
当然,这些列的名称很糟糕。不要命名它们 "Value",更准确。
目标是在一个字段中有单个值,而不是多个值。使用这样的规范化设计,您可以通过简单的字符串比较来查询辅助 table,同时将主 table 行与匹配的行连接起来。