将重复的表拆分为2个规范化表?

时间:2009-08-21 04:35:18

标签: postgresql duplicates normalization

我有一个包含一些重复行的表,我想将其规范化为2个表。

user | url | keyword
-----|-----|--------
fred | foo | kw1
fred | bar | kw1
sam  | blah| kw2

我想首先将其规范化为两个表(user和url_keyword)。是否有我可以运行的查询来规范化这个,或者我是否需要使用脚本遍历表来构建表?

1 个答案:

答案 0 :(得分:4)

您可以通过一些查询来完成,但我不熟悉postgreSQL。首先使用标识列创建表用户。还要将列userID添加到现有表中:

然后就是这样的话:

INSERT INTO users (userName)
    SELECT DISTINCT user FROM url_keyword

UPDATE url_keyword
    SET userID=(SELECT ID FROM users WHERE userName=user)

然后您可以删除旧用户列,创建外键约束等