Как оформить таблицы "Кантри", "Провинция" и "Город"? - PullRequest
1 голос
/ 31 декабря 2010

ПРИМЕР 1:

xTable: xTableID, CountryName, PovinceName, CityName
  • OR

ПРИМЕР 2:

Country: CountryID, CountryName
Province: ProvinceID, ProvinceName
City: CityID, CityName

Вопрос:

  1. Рекомендуете ли вы заполнять списки стран, провинций и городов на уровне приложений, а затем использовать пример 1? или я должен заполнить его на уровне БД, как в примере 2?

  2. Город будет отображаться в зависимости от выбранной провинции (если есть) или названия страны. Провинция (если есть) будет отображаться в зависимости от выбранной страны. Провинция будет только для одной страны, а город будет только для одной провинции / страны. Отношения не один / многие ко многим, поэтому я разработал это как показано ниже

ПРИМЕЧАНИЕ: у каждой страны будет свой город, но не у каждой страны будет название провинции.

Country: CountryID (PK), CountryName
Province: CountryID (PK - FK), ProvinceName
City: CountryID (PK - FK), CityName

Ответы [ 3 ]

2 голосов
/ 31 декабря 2010

Вам нужны прямые отношения из города в страну, из провинции в страну и из города в провинцию.Все провинции находятся в стране, поэтому для таблицы провинций необходимо указать идентификатор страны в качестве FK.Точно так же все города находятся в стране, так же там.Поскольку не во всех странах есть регионы, которые можно назвать провинциями, их нельзя использовать для навигации из города в страну.Код провинции должен быть в таблице «Город», но допускается нулевое значение.

В качестве альтернативы вы можете установить виртуальные провинции (например, название провинции = «Нет провинции») для стран без провинций и использовать их для привязки города к стране.Это также сработало бы, если бы был город, который находился в стране, в которой есть провинции, но не находился в самой провинции (если такая вещь существует, возможно, провинция является городом).

0 голосов
/ 31 декабря 2010

Я предлагаю вам добавить ProvinceId и CityId в таблицы Province и City. В провинции может быть много городов, так же как в стране может быть много провинций. Не нужно указывать страну в городе, провинция будет достаточно, так как она будет вызываться провинцией, а не страной.

0 голосов
/ 31 декабря 2010

Я изменил и использовал это с некоторым успехом:
http://www.endswithsaurus.com/2009/07/lesson-in-address-storage.html

Человек, написавший статью, является очень активным пользователем SO:
BenAlabaster

...