vovan1409
10.02.2013 - 12:06
Есть 4 таблицы:
1) Континент(id, назв. континента)
2) Страна(id, назв. страны)
3) Город(id, назв. города)
4) Человек(id, имя, фамилия, место рождения,..)
Поле Место рождения в табл. "Человек" заполняется за счет зависимых списков Континент->Страна->Город(из соответствующих таблиц).
Вопрос: Стоит ли в табл. "человек"(порядка 100 тыс. записей) добавить поля id_континента, id_страны и id_города, или просто заносить id_города, а данные относительно страны и континента брать при необходимости из соответствующих табл.(Главный интерес представляет, как будет быстрее получить выборку из табл.)
Поиск человека по континенту, предположительно будет осуществляться очень редко, а вот по стране и городу почти каждый раз.
killer8080
10.02.2013 - 12:18
vovan1409
храни только id города/населенного пункта.
Цитата (vovan1409 @ 10.02.2013 - 10:06) |
(Главный интерес представляет, как будет быстрее получить выборку из табл. |
джойн по первичным ключам работает достаточно быстро.
PS континент есть, а региона нет
Valick
10.02.2013 - 12:48
Цитата |
Стоит ли в табл. "человек"(порядка 100 тыс. записей) добавить поля id_континента, id_страны и id_города |
да, и id улицы и номер дома и номер квартиры если таковые имеются, все это нужно хранить
Цитата |
или просто заносить id_города, а данные относительно страны и континента брать при необходимости из соответствующих табл |
killer8080
10.02.2013 - 12:54
Цитата (Valick @ 10.02.2013 - 10:48) |
да, и id улицы и номер дома и номер квартиры если таковые имеются, все это нужно хранить |
я думаю это не тот случай, где денормализация уместна
Valick
10.02.2013 - 13:21
killer8080, причем тут денормализация? это как раз очень нормализация, я согдасен, что можно вынести местоположение в отдельную таблицу и это уже будет если не ошибаюсь 4-тая нормальная форма или выше, но как правило первых трех достаточно, да и чем выше нормализация, тем сложнее запрос.
_____________
Стимулятор ~yoomoney - 41001303250491
killer8080
10.02.2013 - 13:25
Цитата (Valick @ 10.02.2013 - 11:21) |
я согдасен, что можно вынести местоположение в отдельную таблицу |
не об этом речь, это как раз совершенно ни к чему. В таблице юзера достаточно хранить только id города, он ведь уникален, хранить id страны и континента в этой же таблице нет смысла, они могут быть получены через связи.
Valick
10.02.2013 - 13:32
а, вы об этом)) а ничего что названия городов иногда повторяются? такую инфу как соответствие одного другому все равно придется где-то хранить, поэтому я и написал так
_____________
Стимулятор ~yoomoney - 41001303250491
killer8080
10.02.2013 - 13:37
Цитата (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
10.02.2013 - 13:49
killer8080, я прекрасно понимаю о чем вы говорите
я слегка ошибся, это действительно денормализация, но лично я бы все таки применил бы её
_____________
Стимулятор ~yoomoney - 41001303250491
killer8080
10.02.2013 - 13:56
Цитата (Valick @ 10.02.2013 - 11:49) |
но лично я бы все таки применил бы её |
а есть ли смысл?
Valick
10.02.2013 - 15:01
зависит от запросов, просто скажем так интуиция
_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.