2017-09-08 60 views
-2

我正在學習postgresql,我正在掙扎,同時在父表和子表之間建立關係。任何幫助,將不勝感激。如何使Postgresql中的父表和子表之間的關係

這是我的父表。

表名國家

c_id state No_of_cities Total Population 
1  state1 30    60 
2  state2 40    70 
3  state3 50    80 

這裏是我的孩子的桌子詳情 -

表名狀態1

s_id cities population 
1  city1 234 
2  city2 345 

表名狀態2

s_id cities population 
1  city3 544 
2  city4 765 

表名狀態3

s_id cities population 
1  city1 543 
2  city5 987 

請幫我弄清楚,如何使表之間的關係,所以,我可以同時查詢得到準確的數據。

+1

你不能這樣做,因爲你不應該爲每一行都有一個表格,你應該有一個表格,爲國家,州和城市。搜索關於「數據庫表規範化」的信息,以便了解如何正確設計表及其關係。 –

回答

1

您需要爲所有國家的城市只有一個表:

例如:

表名稱指出

state no_of_cities population 
state1 20    60 
state2 30    70 
state3 40    80 

表名城市

state  cities population 
state1  city1 234 
state1  city2 345 
state2  city3 544 
state2  city4 765 
state3  city1 543 
state3  city5 987 

那麼你可以添加主鍵

ALTER TABLE states ADD PRIMARY KEY (state) 

或外鍵

ALTER TABLE cities ADD FOREIGN KEY (state) REFERENCES states (state); 

但是首先你必須設置狀態(如果你想有一個整數id作爲PK)加一個唯一的密鑰:

ALTER TABLE states ADD UNIQUE (state)