2017-07-27 92 views
0

我目前正在嘗試設計一個組成數據庫的表結構。該數據庫將有三個單獨的表格並追蹤10年的城市人口。每年之後,將爲數據庫中的每個城市添加人口數字。下面是我已經做好了這三個表至今:在數據庫中爲這個MySQL表創建uniqueID是否有意義?

城市(city_id,CITY_NAME,city_abbrv)

年(year_id,年)

統計(year_id,city_id,人口)

我很擔心我的統計表中沒有唯一的標識符。在10個城市中,10個參賽項目的年份數據將相同。一旦我輸入了多年的數據,city_id將被重複使用。在我對這個網站的研究中,我讀到了每個表都有一個唯一的ID是不需要的,但是我用來學習數據庫設計的書(儘管簡短)從未提及過這個問題。我想知道設計一個數據庫的最佳方法,該數據庫按照每日/每週/每月/每年時間表接收同一組內容的數據條目。我應該添加一個unique_id列到我的統計表嗎?或者這會是一個浪費的專欄?謝謝您的幫助!

+0

爲什麼不使用'(year_id,city_id)'作爲主鍵?順便說一句:'Year'表中的'year_id'是一個浪費的列。你可以使用'year'作爲主鍵。 –

+0

我擔心Stats表中沒有唯一的標識符。如果我使用year_id和city_id作爲主鍵,則Stats表中不會包含唯一標識符。 – mizDawg

+0

您可以使用兩個(或更多)列的組合作爲「唯一標識符」(複合主鍵)。 –

回答

2

首先,您需要每個表的列ID都爲primary key

主鍵用於唯一標識表格行。主鍵不能爲NULL,因爲NULL不是一個值。所以基本上這些列將是唯一的。

問題:爲什麼你需要表中的主鍵?

答:

  • 如果您想選擇不同的表,你都選擇加入數據,所以你需要按鍵使用該連接。
  • 如果你想讓你的 表成簇,你需要某種主鍵。

側注意:您可能需要熟悉索引列,請參見advantages of indexing


Cities (id, city_name, city_abbrv) //with id as primary key 

Year (id, year) //with id as primary key 

Stats (id, year_id, city_id, population) //with id as primary key 
//And year_id and city_id as foregin key connected by their respective ids 

如果你還在用MYSQL初學者看到W3school tutorial for SQL primary keys

+0

是的,這是完全合理的。我在想,city_id和year_id將成爲我的Cities and Year表中的主鍵。當我爲Stats表創建一個主鍵時,我有點迷失。我不確定如何製作它,所以我可以在我的統計表中唯一標識一個表格行。我應該簡單地創建另一個名爲unique_id的列,並讓它在每個條目中自動遞增? – mizDawg

+0

我現在編輯我的答案,並盡我所能解釋問題的正確結構。 –

+0

完成後,請重新檢查我的答案。 –

相關問題