ジム・Wは良いスタートを持っていますが、別々にあなたの冗長アドレス要素を作り、さらに正規化しますテーブルも同様です。
住所データが繰り返されるテーブルを作成します(国、州など)。データテーブルが作成されたら、StateID、CountryIDなどの列をAddressテーブルに追加します。
既存のデータを修正するためのオプションが追加されました。素早く汚れていて、Updateステートメントを使って、新しく作成されたすべてのIDフィールドを正しいデータテーブルを指すように設定できます。あなたはかなり迅速にバッチ.sqlファイルとしてこれを行うことができますが、私はアドレステーブルを介してロールと新しいエントリに現在の「状態」を一致させようと多くのプログラム的なソリューションをお勧めします
UPDATE Addresses SET StateID=1 WHERE STATE='AL'
状態テーブル。見つかった場合、AddressテーブルのStateIDは、States内の対応する行のIDで更新されます。
これでアドレステーブルから古い状態フィールドを削除できます。これは、別の状態テーブルにうまく正規化されているためです。
このプロセスは、すべての冗長データ要素に対して繰り返すことができます。しかし、IMO dbの正規化はをとらえることができます。たとえば、正規化後に達成するために10回のジョインが必要な一般的なクエリがある場合、パフォーマンスが低下することがあります。私はあなたが正しい道にいると思うので、これはここには現れていないようです。
上記のコメントから:@ Lance私はそれに似た何かが欲しかったが、私は生のデータが単一のテーブルの形で来ていると私は精緻化し、それを2つのテーブルに送信する必要があるテーブル2にaddress_idを挿入する方法を教えてください。
新しく作成したIDを@@ IDENTITYを使用してアドレステーブルから取得し、address_IDをこの値で更新することができます。
これはまさに私がやったことですが、peoblemは表1に新しい行を追加するときにどのようにアドレスidを挿入するのですか? – SweetGangster
Accessにフォームを作成して、ユーザーが既存の住所を選択するか、新しい住所を入力させることができます。 1対多の関係を定義してフォームを作成するだけで済みます。 –
最初に、表2のアドレスを追加します(またはそれがある場合はそれを探します)。その後、address_idをプルして残りのデータとともに表1に挿入します。 –