2016-03-21 3 views
0

У меня есть база данных, которая должна работать с 2 странами, IT и RO. У меня есть таблица под названием «Пользователь», которая содержит также место рождения.База данных с несколькими языковыми базами данных

User 
| id | name | surname | birthplace | 

| 1 | Test | Test | New York | 

У меня также есть 2 стола для места рождения, один для IT-единиц и один для RO. Я не могу хранить все города в одной таблице, потому что у ИТ и RO есть другая герархия (регион, провинция, район ...). Так что моя первая мысль была сделать место рождения поле для каждой страны, как это:

User 
    | id | name | surname | birthplaceIT | birthplaceRO | 

Проблема заключается в том, что каждый раз, когда добавляется народ, я должен был бы изменить базу данных и приложения. С другой стороны, я не могу создать таблицу «Место рождения», потому что адреса ИТ и RO несовместимы.

Таким образом, я не могу это сделать:

Birthplace 
| idUser | country | city | 

Потому что я не могу ссылаться «город» и к таблице ИТ городов и тех, RO.

Предложения?

EDIT. В моем приложении PHP я использую Symfony с Doctrine, ORM, поэтому мне нужно ограничение внешнего ключа между User и CityID!

ответ

0

Вместо того чтобы хранить рождения в User таблицы, изменить его назовем его birthplace ID - это может быть просто целым числом, но вы можете сделать что-то более сложное и использовать уникальные коды (самостоятельно или может быть, есть «правильные» географические коды).

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

+0

Итак, в новой таблице «Место рождения» мне нужно было бы создать поле для каждой кухни? Я имею в виду, если мне нужно делать поля «city_IT», «city_RO» и т. Д., Это не так отличается от моей первой мысли! Дело в том, что я не могу ссылаться на ОДИН городской стол, у меня есть таблица города для каждой страны. Но, может быть, я не понял вашего ответа! –

+0

Как я уже сказал, проблема в том, что у меня есть таблица CityIT и таблица CityRO, и я не могу их унифицировать, потому что у них разные поля (из-за их иерархии, например, в итальянском городе есть провинция, а затем a Region, вместо этого город RO имеет либо муниципалитет/oras, он не имеет региона, он исключает Бухарест ecc .. –

+0

Предположим, у вас есть город A в Италии и городе A в Румынии. Оба имеют то же имя. Тогда город в Италии будет иметь уникальный код IT123456 и город а в Румынии будет иметь уникальный код RO987654 Тогда вы будете иметь две таблицы:. 'BirthplaceIT BirthplaceID | BirthplaceName | Страна | Регион | Адрес | Почтовый индекс и т.д. ' ' BirthplaceRO Место рожденияID | Birthpla ceName | Страна | Земля | Графство | Адрес | Почтовый код и т. Д. '' В 'User' у вас есть User1 с местом для рождения IT123456 - так это будет в Италии, и вы можете легко присоединиться к двум или более таблицам на основе идентификатора места рождения, чтобы вы могли получить UserID + birthplaceName – iaforek

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