Pull to refresh

Comments 21

Спасибо за статью, созданием баз занимался в школе и колледже(сами понимаете как это преподносят). Подскажите что можно почитать, от базы до более широкого понимания?

В мире нет какой-то одной книжки, чтоб вот только её прочитал - и всё сразу понял. Читай всё, до чего дотянешься, но - читай вдумчиво и разборчиво, уделяя больше внимания тем авторам и книгам, от которых почерпнул новые знания. Ты по сути в начале пути, "копай" и вглубь, и в ширь - потом найдёшь свою специализацию и будешь "копать" уже преимущественно в ту сторону.

И самое главное - обязательно применяй (и проверяй) полученные знания на практике. Не столь важно количество прочитанных книг, сколько количество понятых. Не столь важно количество понятых книг, сколько количество применённых на практике.

открыл очередную статью, ожидая увидеть упорядоченное повествование с внятными определениями этих ваших форм.

штош. будем дальше подождать.

  1. 1НФ — устраняет повторяющиеся группы

  2. 2НФ — убирает зависимости от части ключа

  3. 3НФ — устраняет косвенные зависимости между данными

смотрите сразу BCNF, 4НФ и 5НФ там действительно интересно, но имхо в первых двух человечество хранит 99% всей своей информации, и ничего.. пока шевелятся байтики

спасибо. разумеется, я в курсе всего этого.

заодно, глянул, что там на википедии, на эту тему - с тех пор, как смотрел это дело, последний раз, в статьях многое поменялось. местами, в лучшую сторону. но, не смотря на то, что я категорически против физисеских, да и каких-либо наказаний вообще, за большинство объяснений, к моему глубочайшему сожалению, всё ещё, хочется сильно бить.

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

то зачем он вообще нужен?

это очень хороший вопрос, но у каждого будет свой ответ. кто скажет, что при переходе с 1нф на 3нф он сэкономил для компании несколько десятков инстансоы в кластере, а кто то скажет, что он сделал даунгред с 3нф на 2нф, тем самым осчастливил колег и руководство, а кто-то деньги зарабатывает, вбивая в неокрепшие умы эти патерны.

Поздравляю, вы почти изобрели таблицу фактов из схемы "звезда". Продолжайте ваши исследования и откроете для себя новые типы схем, в том числе не являющиеся деревьями.

К сожалению большинство преподавателей чисто теоретики, поэтому не только не преподают актуальную теорию, но зачастую из-за этого не владеют профессиональной терминологией в достаточной мере.

К сожалению большинство преподавателей чисто теоретики, поэтому не только не преподают актуальную теорию, но зачастую из-за этого не владеют профессиональной терминологией в достаточной мере.

По поводу актуальной теории, я бы больше жалел, что в преподавание не идут практики, хотя... это тоже не панацея - 99,9% классных специалистов всё сделают правильно, учтут кучу нюансов, но всё их объяснение закончится на втором, максимум на третьем предложении, потому как не привыкли рассказывать, и лишь один из тысячи практиков сможет внятно рассказать всё, что нужно знать студенту и что сам хотел бы узнать, будучи студентом, но... вы сами прекрасно понимаете, почему он не пойдёт преподавать.

Если под владением профессиональной терминологией понимать умение жонглировать умными, но зачастую совершенно непонятными ученику словами, то зачем такое умение? В 90-е годы ходила шутка, что существует порядка пяти тысяч определений слова "маркетинг". Подозреваю, что сегодня существует примерно такое же количество определений 1-2-3 нормальной формы, а что толку-то? Вопрос не в том, чтобы придумать ещё одно, а в том, чтобы попробовать найти что-то важное, такое, что поможет разобраться со всем остальным, какое-то правило, что ли... в одном из комментариев ниже есть упоминание про то, чтобы отталкиваться от бизнес-процессов (я в программирование пришёл из бизнес-планирования, то есть как раз из планирования и анализ этих самых бизнес-процессов), и я действительно учу студентов видеть за цифрами реальные процессы, обслуживаемые ими. Я не прав?

Не важно кто откуда и куда перешел. Я вон из программирования в финансовую часть переклассифицировался, так я прошел доп. обучение и сдал не один экзамен. И кстати нам про одну из целей обучения озвучивали, что спецы общаются на одном языке используя общую терминологию. А навык преподавания вообще отдельный и далеко не такой простой, как многим кажется. То, что пытаетесь разжевать для других это похвально, только было бы не плохо учить правильно сразу. Профессиональная терминология, эта та, что люди используют в своей профессии, а жонглирование терминологией в профессиональной среде не практикуется, этим занимаются только преподы, ну и возможно на собесах. В частности я не помню точных определений нормальных форм, но помню их суть, в очень короткой форме, которая собственно есть выше у тов. pingo. И собственно на практике суть и есть самое важное.

Под владением профессиональной терминологией подразумевалось использование общепринятой терминологии, а не изобретение собственной, в данном случае про таблицы "справочники" и "факты". Т.е. когда один коллега скажет другому, что в таблица находится в 3й НФ, то можно больше дальше ничего не объяснять, если второй коллега владеет своей профессиональной терминологий. Точно так же, если скажет что "эта таблица справочник, а эта таблица фактов", то тоже уже многое сказали. А если начнете говорить что "это таблица событий", то придется уточнять, что имеется ввиду.

И кстати тенденция в преподавании меняется понемногу: ездил в этом году с дитем по вузам, и там бигтеховские компании не только пасутся, хантя дешевую рабочую силу, но и преподают. У меня такое ощущение, что быстроменяющиеся области лучше преподавать практикующим и чаще это молодежь, а у мало меняющихся базовых областей преимущество у более взрослых (в разумных пределах) преподов, потому что анекдот про "тупых студентов, которым три раза объяснил, сам понял" на самом деле правда в части "сам понял" после многократного объяснения. И вполне допуская, что готовя эту статью, Вы узнали что-то новое для себя.

А как вы обычно подходите к проектированию БД: сначала рисуете ER-диаграмму или сразу думаете в терминах таблиц? И ещё: как часто вам приходилось сознательно денормализовать структуру ради производительности?

Наверное кто как, к тому же в зависимости от роли в проекте.

Лично для меня ER-диаграмма, это уже больше документирование. Собственно первоначально разбить на таблицы не такая уж и рокет-сайенс наука, немного практики это как-то естественно происходит, а вот дальше уже оптимизация, индексы, (де)нормализация, и т.п. в зависимости от задач, нагрузок и других факторов.

Имхо такой подход только запутает учащихся. Вы предлагаете выискивать истории и справочники. А в жизни есть сущности их свойства и связи. А "истории" это одна из связей.

Вы сами пишите в начале, что "Берут в охапку весь набор предоставленных в задаче или обнаруженных самостоятельно сущностей и пытаются сгруппировать их параметры в таблицы. "

Такой подход естественен. То, что вы предлагаете отдает искусственностью, потому вряд ли будет принято и понятно.

По сути то все просто. Все эти нормализации служат практической цели, уменьшить повторяющиеся данные в базе данных и облегчить поиск по этим данным. Все, что повторяется выносится в отдельный справочник, таблицу. Мне кажется такого объяснения вполне достаточно. Кмк чем абстрактнее идея, тем труднее ее принять и понять.

Правильный подход - от бизнес-процессов. Для начинающих - очень даже полезно. Автор, продолжай!

Очень хорошая аналогия с событиями и справочниками! Когда я проходил курс БД, нас грузили только признаками и как прийти к 3НФ. Самое интересное, что всегда требовали начинать с 1НФ, хотя если ты мыслишь объектами, то в 90% случаев ты уже построил 2НФ.

Если ты мыслишь объектами, то у тебя вообще граф получается, а не множество табличек.

Таблицы в любом случае будут зависеть друг от друга в той или иной степени. Не совсем понял, какие в вашем понимании отличия между "у тебя вообще граф получается" и "множество табличек"?

Куча табиц, при этом связей в самом хранилище нет.
Куча табиц, при этом связей в самом хранилище нет.
Иерархия прикладных сущностей отражённая в хранилище.
Иерархия прикладных сущностей отражённая в хранилище.

Извиняюсь, конечно, но серое на сером как-то плохо читается. Можете прикрепить схему ещё раз, но в читаемой расцветке? И дополните, пожалуйста, эту схему комментарием - что за база данных, для чего разрабатывалась и, возможно, как планировалось её использовать.

Что-то про 3НФ ни слова, зато сам материал - просто педагогический шедевр! 😍

Чётко, понятно, с привязкой к реальным задачам, с реальными примерами без ненужных сущностей, без воды - но с нужным количеством объяснений для понимания материала.

Спасибо, продолжайте писать!😎

Sign up to leave a comment.

Articles