2012-02-24 2 views
0

Я работаю на веб-сайте с различными контактными лицами из разных стран & города.Показать контактное лицо по стране и городу

То, что я хотел бы получить, - это когда посетитель посещает страницу с информацией о Франции - Париже, сценарий будет искать контактного лица в базе данных и показывать информацию на странице.

Проблема в том, что контактное лицо может иметь несколько стран/городов под его ответственность.

У меня уже есть таблица стран и городов. Я не хочу ничего менять или добавлять к этим таблицам.

Так что единственное, что я могу думать:

contact_persons (таблица)

contact_persons_id

contact_persons_name

и другая информация ...

контакт (таблица)

contact_persons_id

страна

город

Так, например:

луноход - Франция - Париж

луноход - Франция - Марсель

otheruser - Нидерланды - Утрехт

Но это нормально? Или есть какой-то другой способ решить это?

Заранее спасибо.

p.s .: Языки - это 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 

[EDIT] Упрощенная благодаря комментарий ниже.

+0

Я думаю, что вы немного перешли сюда. Город, по определению, только в одной стране, хотя и за некоторыми исключениями, которые в основном находятся в одной стране. Не должно быть необходимости иметь много-много отношений. – Ben

+0

+1, но соглашаясь с комментарием Бена, что многие из многих с городами и странами не нужны. – davidethell

+0

Большое спасибо за циллоз. Имеет смысл. :) – moonwalker

Смежные вопросы