2009-08-21 4 views
2

2つのテーブルに正規化したい重複した行があるテーブルがあります。2つの正規化されたテーブルに重複テーブルを分割しますか?

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

これを2つのテーブル(userとurl_keyword)に正規化することから始めます。これを正規化するために実行できるクエリがありますか、またはテーブルを構築するためにスクリプトを使用してテーブルをループする必要がありますか?

+0

など、外部キー制約を作成し、古いユーザー列を削除することができますそれはどうですか? –

+0

彼はユーザテーブルを作成し、FK – zalew

+0

でそれを参照したいと思っています。達成したいこと、つまり何を得たいかを示すのに役立ちます。 –

答えて

4

私はいくつかのクエリでそれを行うことができますが、私はpostgreSQLについてよく知らないです。 ID列を持つ表のユーザーを最初に作成します。また、既存のテーブルに列のユーザーIDを追加します。

次に、これらの線に沿って何か:

INSERT INTO users (userName) 
    SELECT DISTINCT user FROM url_keyword 

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

次にあなたがと間違って何

関連する問題