2011-11-08 4 views
0

私はちょうどいくつかのデータベースの変更を完了しました。そして、新しいデザインに合わせてデータを移行する必要があります。この新しいデザインに合わせてデータベースを変更するにはどうすればよいですか?

私たちは分類欄を備えた車両のテーブルを持っていました。分類列は、誰かがフィールドに入力した文字列でした。それは外国のキー列ではありませんでした。

車両が複数の分類(はい、ビジネスルールでこれを可能にする)を許可するように設計を変更し、分類をルックアップテーブルに移動しました。分類表は車両テーブルから削除され、M:M結合テーブルに置き換えられ、車両要件ごとに複数のカテゴリが有効になります。分類表は、車両表の分類列の固有の値を使用して作成されています。

ご不明な点がありましたら、どのように私はM:Mテーブルを構築するのですか?これを行うSQLは何ですか?

私の考えでは、車両テーブルの各行について、新しい分類表の分類文字列を検索します。c)分類IDと車両IDをVehiclesClassificationsテーブルに挿入します。次に、データを確認した後、車のテーブルから分類欄を手動で削除します。

ありがとうございました!

編集1:私はテーブルを作成しました。私はちょうどSQLステートメント上でつまずいています。

+0

プロセスや実装方法について質問していますか?あなたはそこに正しいプロセスを持っています。それはそれがどのように行われるべきかです。 – Oded

答えて

0

M:Mテーブルの構築方法は?一部のデータ型、カラム名を推測

など

create table vehicle_classifications (
    vehicle_id integer not null references vehicles (vehicle_id), 
    classification_id integer not null references classifications (classification_id), 
    primary key (vehicle_id, classification_id) 
); 

次に何かその後

insert into vehicle_classifications (vehicle_id, classification_id) 
select t1.vehicle_id, t2.classification_id 
from vehicles t1 
inner join classifications t2 on t1.classification = t2.classification 

のように、データをチェックした後、私は手動で分類を削除したいです 車のテーブルの列。

新しい結合テーブルに外部キー制約が設定されていることを確認してください。

関連する問題