2011-10-22 5 views
2

私は現在の米国上院議員といくつかの関連情報のリストを保持しているテーブルを設計しています(その大部分は素晴らしいNY Times Congress APIから得ています)。 Representativesのテーブルを作成するのは、statedistrict numberPRIMARY KEYを作成したので簡単でした。しかし、これは私を困らせました。MySQLの上院議員のリストのためのデータベースデザイン

夜間にこの表の情報を更新する必要があり、INSERT...ON DUPLICATE KEY UPDATEを実行しています。

これをどう設計するかについてのご意見はありますか?

+2

なぜ既存の情報を更新するためにINSERTを使用していますか?これがUPDATEの目的です。 –

+0

ええ、良い質問ですが、私は良い答えがありません。 –

答えて

0

挿入物ではなくUPDATEを使用して、複合キー値を照会してレコードが存在するかどうかを最初に確認します。

あなたはどのデータベースを使用しているのかはわかりませんが、SQL Server 2008にはこれを非常に簡単に実行する文がMERGEとなっています。

+0

私が実際に抱えている問題は、上院議員のためにどのような主キーを作成するかわからないということです。州ごとに2人の上院議員がいて、他のすべてのデータフィールドが変わる可能性があるので、2人の上院議員を区別するために何を使用するのか正直にはわかりません。 –

+0

名前を使わないのはなぜですか?または姓+州の組み合わせ。 – kprobst

0

プライマリキーに何を使用するのかという問題がある場合は、プライマリキーを姓、名字、州名に設定しないでください。その慣例は、上院議員と代表者の両方に利用できる。

0

既存のデータを更新するためにINSERTを使用しないでください。そのためにUPDATEとPKを使用してください。

各州には2人の上院議員がいて、それらを差別化する方法がわからないため、PKを選択する際に問題があるとします。米国の上院議員はthree classesにグループ化されており、単一の州の2人の上院議員は同じクラスにはいないので、あなたのPKは州とクラスである可能性があります。

関連する問題