2011-10-22 26 views
2

我正在設計一張表,只是保留了當前美國參議員的名單和一些相關信息(其中大部分來自於令人敬畏的紐約時報大會API)。爲代表創建表格很容易,因爲我剛創建了PRIMARY KEY,其statedistrict number。但是,這讓我很難過。MySQL中美國參議員名單的數據庫設計

我需要每晚更新此表中的信息,並且會做一個INSERT...ON DUPLICATE KEY UPDATE

關於如何去設計這個的任何想法?

+2

爲什麼使用INSERT更新現有信息?這就是更新的目的。 –

+0

呃,好問題,對此我沒有很好的答案。 –

回答

0

使用UPDATE而不是插入,首先檢查記錄是否通過查詢組合鍵值來檢查。

你沒有說你正在使用什麼數據庫,但SQL Server 2008有一個MERGE語句,可以很容易地完成此操作。

+0

我遇到的真正問題是我不確定甚至爲參議員創建什麼主要關鍵。每個州有兩名參議員,並且由於關於他們的每個其他數據領域都可以改變,所以我老實說不知道用什麼來區分兩位參議員。 –

+0

爲什麼不使用他們的名字?或者是姓氏+州的組合。 – kprobst

0

如果問題是主鍵的用法,爲什麼不在主名,姓氏和狀態上設置主鍵?該公約可以用於參議員和代表。

0

不要使用INSERT來更新現有數據,使用UPDATE和你的PK。

你在別處說你在選擇PK時遇到困難,因爲每個州都有兩名參議員,你不知道如何區分他們。美國參議員分爲three classes,並且沒有一個州的兩名參議員屬於同一個班級,所以你的PK可能是州和班級。