Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подскажите, в какую таблицу добавить поле / 9 сообщений из 9, страница 1 из 1
14.07.2011, 11:32
    #37351195
Yaroslav82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, в какую таблицу добавить поле
Доброго времени суток!

Есть следующая структура таблиц


Таблица Countries хранит в себе сведения о странах (код страны, русское и английское название). Таблица Languages хранит сведения о языках (код языка, наименование культуры и признак того, активен ли на сайте данный язык, сейчас их только два: русский и английский). Таблица Countries_Languages ставит в соответствие каждой стране ряд ее языков (например, Бельгия - Немецкий, Французский).

Сейчас логика работы следующая. Когда пользователь заходит на сайт, по коду страны, который хранится в его профиле, выбирается язык, заданный для его страны. Если язык страны неактивен, то по умолчанию устанавливается английский (например, заходит пользователь из Бельгии, ни один из его языков неактивен, устанавливается английский. Заходит пользователь из Казахстана, казахский язык неактивен, русский активен, устанавливается русский и т.д.).

Возникло требование, чтобы можно было задавать язык, который будет устанавливаться в случае, если родной язык пользователя неактивен. Для этого необходимо добавить поле default_lang_id. Вопрос заключается в том, в какую таблицу его лучше добавить. Если добавить в таблицу Countries_Languages, будет дубляж данных, вроде такого
country_id lang_id default_lang_id21 1031 103321 1036 1033
Если добавить в таблицу Languages, дубляжа не будет, но тогда не получится установить связи между языками.
Если же добавить в таблицу Countries, дубляжа опять же не будет, но получится циклическая связь между таблицами.

Подскажите, пожалуйста, куда все-таки лучше добавить поле. Всем заранее спасибо
...
Рейтинг: 0 / 0
14.07.2011, 12:02
    #37351288
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, в какую таблицу добавить поле
а если появится ситуация, что по умолчанию язык неактивен?
...
Рейтинг: 0 / 0
14.07.2011, 12:23
    #37351341
Yaroslav82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, в какую таблицу добавить поле
Naf,

Такая ситуация не возникнет, потому что язык по умолчанию будет выбираться из раскрывающегося списка, а туда заносятся только активные языки
...
Рейтинг: 0 / 0
14.07.2011, 12:35
    #37351384
sergei64_89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, в какую таблицу добавить поле
я б в таблицу страны добавил.null значение думаю не страшно в данном случае.
...
Рейтинг: 0 / 0
14.07.2011, 13:14
    #37351541
Yaroslav82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, в какую таблицу добавить поле
sergei64_89,

NULL там и так не будет, поскольку для каждой страны будет задан язык по умолчанию. Проблема в том, что если добавить default_lang_id в Countries, получится циклическая связь



или в этом ничего страшного нет? или эту связь вообще можно не делать?
...
Рейтинг: 0 / 0
14.07.2011, 13:53
    #37351664
sergei64_89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, в какую таблицу добавить поле
вы видите тут какие то коллизии(при удалении,...)?
p.s таблица язык страны нет первичного ключа!
...
Рейтинг: 0 / 0
14.07.2011, 13:57
    #37351682
Yaroslav82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, в какую таблицу добавить поле
sergei64_89,

В принципе нет, просто такая связь мне немного непривычна.

Первичного ключа и правда нет, просто в такие таблицы я их обычно не добавляю, хотя знаю, что по требованиям надо (кстати, насколько мне известно, так делают многие)
...
Рейтинг: 0 / 0
14.07.2011, 14:03
    #37351694
sergei64_89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, в какую таблицу добавить поле
ну эта связи у тебя в теории реляционных баз данных квалифицируются как.многие ко многим и 1 ко многим(класс сущности многим обязательный).
...
Рейтинг: 0 / 0
14.07.2011, 15:52
    #37351972
Yaroslav82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите, в какую таблицу добавить поле
sergei64_89,

ок, спасибо
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Подскажите, в какую таблицу добавить поле / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]