【问题标题】:Split table with duplicates into 2 normalized tables?将具有重复项的表拆分为 2 个规范化表?
【发布时间】:2010-11-21 13:25:33
【问题描述】:

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

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

我想首先将其规范化为两个表(用户和 url_keyword)。有没有我可以运行的查询来规范化它,还是我需要使用脚本循环遍历表来构建表?

【问题讨论】:

  • 他想制作一个用户表并用FK引用它
  • 这将有助于展示您想要实现的目标 - 即您想要获得什么。

标签: postgresql duplicates normalization


【解决方案1】:

您可以通过几个查询来完成,但我不熟悉 postgreSQL。首先创建一个表 users,其中包含一个标识列。还要在现有表中添加一列 userID:

然后是这样的:

INSERT INTO users (userName)
    SELECT DISTINCT user FROM url_keyword

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2019-07-29
    • 1970-01-01
    • 2012-08-17
    • 2016-06-23
    • 1970-01-01
    • 2015-11-08
    相关资源
    最近更新 更多