2012-02-24 61 views
0

我正在與不同國家的不同聯繫人在一個網站上工作&城市。顯示每個國家和城市的聯繫人

我想實現的是當訪問者訪問一個關於法國 - 巴黎信息的頁面時,腳本將搜索數據庫中的聯繫人並在頁面上顯示信息。

問題是一個聯繫人可以有多個國家/城市負責。

我已經有一個國家和城市的表。我不想更改或添加任何內容到這些表中。

所以,我能想到的唯一的事情就是:

contact_persons(表)

contact_persons_id

contact_persons_name

與其他信息...

接觸(表)

contact_persons_id

國家

城市

因此,例如:

夜光杯 - 法國 - 巴黎

夜光杯 - 法國 - 馬賽

其他用戶 - 荷蘭 - 烏得勒支

但是這樣可以嗎?還是有其他方法可以解決這個問題嗎?

在此先感謝。

頁數:語言是PHP和MySql。

回答

2

您可以按照如下所述的方式對數據進行規範化。您有聯繫人,城市和國家作爲單獨的數據區域以避免重複。然後你有一張桌子可以將聯繫人映射到一對多關係中的城市(一個聯繫人=許多城市)。

[table_contacts] 
    - id 
    - name 

[table_cities] 
    - id 
    - name 
    - country_id 

[table_countries] 
    - id 
    - name 

[table_contacts_cities] 
    - id 
    - contact_id 
    - city_id 

[編輯]簡化由於評論如下。

+0

我認爲你已經在這裏過了一點兒。一個城市幾乎只能在一個國家定義,但有一些例外主要集中在一個國家。應該不需要有多對多的關係。 – Ben 2012-02-24 12:20:53

+0

+1,但同意本的評論,即與城市和國家的多對多是沒有必要的。 – davidethell 2012-02-24 12:24:07

+0

非常感謝。說得通。 :) – moonwalker 2012-02-27 14:09:55