2010-03-19 46 views
0

我如何在mysql中組織國家數據(國家,州和城市等)?如何組織國家數據?

導致每個國家都有3個表格:國家,州和城市。

我應該將每個國家放在單獨的一組表格中嗎?或者我應該將它們全部放在這三張表格中嗎?如果我把它們全部放在同一張表中,恐怕行數會很大,因爲我傾向於擁有很多國家!

這是什麼最佳實踐?

+0

記住要允許(和測試),極端案例:並不是所有國家都有狀態。如盧森堡。並非所有國家都有城市。例如梵蒂岡城 – 2010-03-19 04:30:54

回答

1
countryTable(countryId(PK),countryName) 

stateTable(stateId(PK),stateName,belongCountryId(FK)) 

cityTable(cityId(PK),cityTable,belongStateId(FK)) 

您可以使用「級聯查詢」或創建「查看」從這3個表中獲取信息。

+0

所以你指的是在這3個表中的所有國家與你在括號中的列?如果你有很多行需要搜索,它會不會越來越慢?例如爲了得到一個城市,它必須通過所有國家的行來解析,而不是隻有一個? – 2010-03-19 03:52:56

+0

您可以使用這3個表格將地球上的所有國家,州和城市放入您的數據庫中。 – oyishi 2010-03-19 03:58:32

+0

如果「有很多行必須搜索」,則可以創建「查看」以提高查詢效率 – oyishi 2010-03-19 04:01:24

2

這裏有一種方法:

country: 
country_id (INT) | country_name (VARCHAR) 

state: 
state_id (INT) | country_id (INT) | state_name (VARCHAR) 

city: 
city_id (INT) | country_id (INT) | state_id (INT) | city_name (VARCHAR)