我正在設計一張表,只是保留了當前美國參議員的名單和一些相關信息(其中大部分來自於令人敬畏的紐約時報大會API)。爲代表創建表格很容易,因爲我剛創建了PRIMARY KEY
,其state
和district number
。但是,這讓我很難過。MySQL中美國參議員名單的數據庫設計
我需要每晚更新此表中的信息,並且會做一個INSERT...ON DUPLICATE KEY UPDATE
。
關於如何去設計這個的任何想法?
我正在設計一張表,只是保留了當前美國參議員的名單和一些相關信息(其中大部分來自於令人敬畏的紐約時報大會API)。爲代表創建表格很容易,因爲我剛創建了PRIMARY KEY
,其state
和district number
。但是,這讓我很難過。MySQL中美國參議員名單的數據庫設計
我需要每晚更新此表中的信息,並且會做一個INSERT...ON DUPLICATE KEY UPDATE
。
關於如何去設計這個的任何想法?
使用UPDATE
而不是插入,首先檢查記錄是否通過查詢組合鍵值來檢查。
你沒有說你正在使用什麼數據庫,但SQL Server 2008有一個MERGE
語句,可以很容易地完成此操作。
我遇到的真正問題是我不確定甚至爲參議員創建什麼主要關鍵。每個州有兩名參議員,並且由於關於他們的每個其他數據領域都可以改變,所以我老實說不知道用什麼來區分兩位參議員。 –
爲什麼不使用他們的名字?或者是姓氏+州的組合。 – kprobst
如果問題是主鍵的用法,爲什麼不在主名,姓氏和狀態上設置主鍵?該公約可以用於參議員和代表。
不要使用INSERT來更新現有數據,使用UPDATE和你的PK。
你在別處說你在選擇PK時遇到困難,因爲每個州都有兩名參議員,你不知道如何區分他們。美國參議員分爲three classes,並且沒有一個州的兩名參議員屬於同一個班級,所以你的PK可能是州和班級。
爲什麼使用INSERT更新現有信息?這就是更新的目的。 –
呃,好問題,對此我沒有很好的答案。 –