1

我想知道如何规范化这样的表:

field1|field2|field3
text1 |txt2  | 1,2,5
other1|other2| 1,8,7

field1 将重复多次,field2 是唯一的(不会重复),field 3 - 用户 ID。喜欢的东西。

4

2 回答 2

3

首先,如果字段 2 是唯一的,那么它应该被声明为主键(或者,至少是唯一索引)。

其次,您在 field3 中有多个值的事实告诉您 field3 应该成为一个单独的表,使用某个唯一值(我们刚刚决定为 field2)链接回(相关)到第一个表。

因此,您的数据库创建脚本将如下所示:

CREATE TABLE MainTable (field2 VARCHAR NOT NULL PRIMARY KEY, field1 VARCHAR)

CREATE TABLE OtherTable (field2 VARCHAR REFERENCES MainTable, field3 INTEGER)

您也可以考虑将单独的主键值添加到第二个值或将 field2 和 field3 一起作为主键。

于 2010-11-13T14:56:51.037 回答
2

给这个表一个主键,并用field3+这个键创建一个新的。

表(修改后的你原来的表)

field1 | field2 | fID
...    | ...    | 1
...    | ...    | 2

收藏夹表:

fID | field3
1   | 1
1   | 2
1   | 5
2   | 1
... | ...

选择数据

您可以使用 JOIN 或仅使用 WHERE 来获取结果。比方说

SELECT field3 FROM Favorites WHERE fID = 1

得到

1,2,5

因此,如果我没记错的话,您的问题与主详细信息/父子模式有关。

资源

于 2010-11-13T13:46:37.793 回答