Цитата(obscure @ 30 Ноября, 2017, 11:07)
с чего Вы это взяли, что если понадобилась разовая выборка - дело обязательно в архитектуре?
Разве это не очевидно? Поля ФИО - это отдельная сущность, описывающая человека, она должна быть вынесена в отдельную таблицу! Таблица связей тут не обязательна, достаточно добавить связующее поле, например person_id, ссылающееся на первичный ключ соответствующей таблицы.
Цитата(obscure @ 30 Ноября, 2017, 11:07)
или на 9к строк завести 4 справочника по по 3к строк каждый + кросс-таблицы - 9к * Nсправочников для [де]нормализации.
И это всё ради того, чтоб не писать скрипт в жалких 6 строчечек...
Совершенно верно и количество строчек в запросе тут не причём, я вообще не понимаю, почему нужно искать оправдание нормализации? Оправдывать как раз таки нужно денормализацию, в отдельных случаях она необходима для улучшения производительности, но в данном случае она возникла от незнания ТС основ, о чём ему вы почему то не сочли нужным сказать,
И что вас так напугало в дополнительных таблицах? Объём места на диске? А как насчёт дублежа данных, и лишних полях?
Цитата(obscure @ 30 Ноября, 2017, 11:07)
вот - тривиальная задача, описанная в книжке, которая была популярна в начале 90-х, переведена на русский и напечатана издательством "Диалектика"(Киев) в 1997 году
раз уж читаете умные книжки, то должны знать, что все SQL субд являются
реляционными базами данных, а не просто свалками из таблиц. И о НФ в той книжке наверно тоже написано
Цитата(obscure @ 30 Ноября, 2017, 11:07)
а вот задача от ТопикСтартера
Цитата(parolex @ 21 Ноября, 2017, 17:08)
суть в том, как корректно дёрнуть всё по 3-м повторяющимся столбцам
например:фамилия, имя, отчество
ничего не напоминает?
напоминает, что автор хочет сделать выборку по людям, и вот тут есть ещё подводный камень, ФИО нельзя использовать как идентификатор отдельно взятого человека, так как эти атрибуты не являются ни уникальными, ни константными. Под одним ФИО может быть несколько разных человек, и если он например сменит фамилию, то его старые записи уже не будут с ним связаны, из-за денормализации (мы ведь храним данные о человеке прямо в таблице с другой сущностью), если же решим эти записи проапдейтить, то можем поломать записи другого человека с тем же ФИО (мы ведь их никак не различаем), ну и о не корректности выборки я уже молчу.