Разделить таблицу с дубликатами на 2 нормализованных таблицы? - PullRequest
2 голосов
/ 21 августа 2009

У меня есть таблица с несколькими дублирующимися строками, которые я хочу нормализовать в 2 таблицы.

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

Я бы хотел начать с нормализации этой таблицы на две таблицы (user и url_keyword). Можно ли выполнить запрос, чтобы нормализовать это, или мне нужно перебрать таблицу с помощью скрипта для создания таблиц?

1 Ответ

4 голосов
/ 21 августа 2009

Вы можете сделать это с помощью нескольких запросов, но я не знаком с postgreSQL. Сначала создайте таблицу пользователей с идентификатором столбца. Также добавьте столбец userID в существующую таблицу:

Тогда что-то вроде этого:

INSERT INTO users (userName)
    SELECT DISTINCT user FROM url_keyword

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

Затем вы можете удалить старый пользовательский столбец, создать ограничение внешнего ключа и т. Д.

...