2009-08-21 15 views
2

J'ai une table avec quelques lignes dupliquées que je veux normaliser en 2 tables. Je voudrais commencer par normaliser cela en deux tables (utilisateur, et mot-clé). Y a-t-il une requête que je peux exécuter pour normaliser ceci, ou dois-je faire une boucle dans la table avec un script pour construire les tables?Diviser la table avec des doublons en 2 tables normalisées?

+0

Quel est le problème avec comment c'est? –

+0

il veut créer une table d'utilisateur et la référencer avec FK – zalew

+0

Cela aiderait à montrer ce que vous voulez réaliser - c'est-à-dire ce que vous voulez obtenir. –

Répondre

4

Vous pouvez le faire avec quelques requêtes, mais je ne suis pas familier avec postgreSQL. Créez d'abord un utilisateur de table, avec une colonne d'identité. Ajoutez également une colonne userID à la table existante:

Puis quelque chose le long de ces lignes:

INSERT INTO users (userName) 
    SELECT DISTINCT user FROM url_keyword 

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

Ensuite, vous pouvez déposer l'ancienne colonne de l'utilisateur, créer la contrainte de clé étrangère, etc.