Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
наиболее эффективная структура таблиц
 
Есть таблица users в ней есть поля country и city, и вот возник вопрос - что более оптимально с точки зрения производительности, хранить в полях country и city непосредственно названия стран и городов ИЛИ создать две дополнительные таблицы countries и cities и хранить в них id и название страны и города соответственно, а в таблице users хранить только id страны и города.
Предполагается, что пользователей будет много больше чем стран и городов.
 
зависит от того какие запросы будут использоваться.
Если логика простая то лучше держать в одной таблицы.
 
Выборка будет производиться по этим полям? Если да, но нужна отдельаня таблица, если нет - то все равно, хотя я бы все таки вынес эти данные в отдельные таблицы.
 
с точки зрения производительности в одной таблице проиндексированной по обоим полям, однако придется пожертвовать памятью
 
Я думаю что лучше вынести в отдельные таблицы.
 
Лучше вынести в отдельные таблицы.
Одна из причин - гибкость БД. рано или поздно настанут времена, когда нужно будет сделать эту систему многоязычной. Или, к примеру, будет обнаружена синтаксическая ошибка в названии страны/города.
Если будут коды, изменить название города или добавить новое поле названия на английском, займёт считанные секунды.
 
У пользователя должен быть только id города, привязка города к стране у пользователя не должна присутствовать, (это если по правилам проектирования, что бы было гибкое управление и расширяемость). На практике же зачастую всё делается по-другому, но это если человек знает что, почему и для чего он делает.
Изменено: Stierus - 15.12.2008 17:56:03
 
Цитата
Stierus пишет:
У пользователя должен быть только id города, привязка города к стране у пользователя не должна присутствовать,

Есть вероятность, что в этом случае будут к одним и тем же наименованиям привязаны разные населенные пункты. :(

Да, данные cities и country для каждого пользователя - избыточны. Достаточно одного понятия "город", а в таблице городов уже прописать страну: для любителей выбрать "все города для данной страны" - быстрее будет работать. Хотя, "выбрать всех жителей страны" будет работать дольше, чем если бы int страны был в таблице пользователей.
Изменено: Andrey Y. Ostanovsky - 17.12.2008 23:13:24
Страницы: 1
Читают тему