[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сохранение информации о "Месте рождения" в БД
vovan1409
Есть 4 таблицы:
1) Континент(id, назв. континента)
2) Страна(id, назв. страны)
3) Город(id, назв. города)
4) Человек(id, имя, фамилия, место рождения,..)

Поле Место рождения в табл. "Человек" заполняется за счет зависимых списков Континент->Страна->Город(из соответствующих таблиц).
Вопрос: Стоит ли в табл. "человек"(порядка 100 тыс. записей) добавить поля id_континента, id_страны и id_города, или просто заносить id_города, а данные относительно страны и континента брать при необходимости из соответствующих табл.(Главный интерес представляет, как будет быстрее получить выборку из табл.)
Поиск человека по континенту, предположительно будет осуществляться очень редко, а вот по стране и городу почти каждый раз.
killer8080
vovan1409
храни только id города/населенного пункта.
Цитата (vovan1409 @ 10.02.2013 - 10:06)
(Главный интерес представляет, как будет быстрее получить выборку из табл.

джойн по первичным ключам работает достаточно быстро.

PS континент есть, а региона нет rolleyes.gif
Valick
Цитата
Стоит ли в табл. "человек"(порядка 100 тыс. записей) добавить поля id_континента, id_страны и id_города

да, и id улицы и номер дома и номер квартиры если таковые имеются, все это нужно хранить
Цитата
или просто заносить id_города, а данные относительно страны и континента брать при необходимости из соответствующих табл
killer8080
Цитата (Valick @ 10.02.2013 - 10:48)
да, и id улицы и номер дома и номер квартиры если таковые имеются, все это нужно хранить

я думаю это не тот случай, где денормализация уместна
Valick
killer8080, причем тут денормализация? это как раз очень нормализация, я согдасен, что можно вынести местоположение в отдельную таблицу и это уже будет если не ошибаюсь 4-тая нормальная форма или выше, но как правило первых трех достаточно, да и чем выше нормализация, тем сложнее запрос.


_____________
Стимулятор ~yoomoney - 41001303250491
killer8080
Цитата (Valick @ 10.02.2013 - 11:21)
я согдасен, что можно вынести местоположение в отдельную таблицу

не об этом речь, это как раз совершенно ни к чему. В таблице юзера достаточно хранить только id города, он ведь уникален, хранить id страны и континента в этой же таблице нет смысла, они могут быть получены через связи.
Valick
а, вы об этом)) а ничего что названия городов иногда повторяются? такую инфу как соответствие одного другому все равно придется где-то хранить, поэтому я и написал так

_____________
Стимулятор ~yoomoney - 41001303250491
killer8080
Цитата (Valick @ 10.02.2013 - 11:32)
а ничего что названия городов иногда повторяются?

вот поэтому нужно хранить id, а не название города
например так
user
id|name|...|city_id

city
id|name|region_id

region
id|name|country_id

country
id|name


Valick
killer8080, я прекрасно понимаю о чем вы говорите
я слегка ошибся, это действительно денормализация, но лично я бы все таки применил бы её smile.gif

_____________
Стимулятор ~yoomoney - 41001303250491
killer8080
Цитата (Valick @ 10.02.2013 - 11:49)
но лично я бы все таки применил бы её

а есть ли смысл? smile.gif
Valick
Цитата
а есть ли смысл?

зависит от запросов, просто скажем так интуиция

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.