我想知道如何将表标准化:

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一起作为主键。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top