题
我想知道如何将表标准化:
field1|field2|field3
text1 |txt2 | 1,2,5
other1|other2| 1,8,7
field1会重复多次,field2是唯一的(不会重复),字段3-用户ID。像最喜欢的东西。
解决方案
给出该表的主键,并使用field3+此键创建一个新的键。
掌握 表(修改后的原始表)
field1 | field2 | fID
... | ... | 1
... | ... | 2
最爱 桌子:
fID | field3
1 | 1
1 | 2
1 | 5
2 | 1
... | ...
选择数据
您可以使用加入或仅在哪里获得结果。假设
SELECT field3 FROM Favorites WHERE fID = 1
得到
1,2,5
因此,如果我没有错,您的问题与主猫/亲子模式有关。
资源
其他提示
首先,如果字段2是唯一的,则应将其声明为主要键(或者至少是唯一的索引)。
其次,您在field3中具有多个值的事实告诉您,使用某些唯一值(我们刚刚决定是field2),field3应该成为链接到第一表的单独表(相关)。
因此,您的数据库创建脚本看起来像这样:
CREATE TABLE MainTable (field2 VARCHAR NOT NULL PRIMARY KEY, field1 VARCHAR)
CREATE TABLE OtherTable (field2 VARCHAR REFERENCES MainTable, field3 INTEGER)
您还可以考虑在第二个值中添加单独的主要键值,或者将field2和field3一起作为主键。
不隶属于 StackOverflow