Как вы учите нормализации базы данных? - PullRequest
6 голосов
/ 27 января 2011

Каковы ваши шаги и рекомендации по нормализации базы данных?Если вам дана группа людей с хорошими компьютерными и логическими навыками, как вы объясните им, как нормализовать структуру базы данных?Каков ваш мыслительный процесс для взятия списка атрибутов (полей) и превращения этого списка в базу данных в 1NF?2НФ?3NF

Ответы [ 9 ]

4 голосов
/ 27 января 2011

Ознакомьтесь с некоторыми из этих ресурсов:

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

Проектирование баз данных для простых смертных (R): практическое руководство по проектированию реляционных баз данных (2-е)Издание) Майк Эрнандес

enter image description here

2 голосов
/ 27 января 2011
1 голос
/ 28 января 2011

Я преподавал эту штуку программистам еще в 1980-х годах.Многие из них даже никогда не использовали базу данных, хотя они программировали на COBOL, BASIC или C в течение десяти и более лет.

Сначала я преподавал программирование баз данных, с некоторыми подробностями, прежде чем когда-либо занимался проектированием баз данных.,И я раньше преподавал концептуальное моделирование данных, используя ER, прежде чем занялся дизайном базы данных.Затем при обучении составлению таблицы нормализация возникла довольно естественно.Я преподавал только 1NF, 2NF и 3NF, хотя, если бы я мог вернуться и сделать это снова, я бы, вероятно, включил BCNF.

Ров важно, не учите, как будто это какая-то религия.Обучите тому, что происходит, когда вы не следуете правилам нормализации, и дайте им представление о ситуациях, когда нарушение нормализации может иметь смысл.Слишком многих начинающих учат этому, что нарушение - это своего рода смертный грех.Это не так.

1 голос
/ 27 января 2011

Предполагая, что они уже знают о фундаментальных понятиях (отношения, ключи-кандидаты и функциональные зависимости), затем начнем с BCNF. BCNF, безусловно, проще всего объяснить и гораздо важнее, чем 2NF, 3NF, которые лучше всего полностью игнорировать на данном этапе. Затем объясните зависимость от соединения и 5NF.

0 голосов
/ 27 января 2011

Я считаю, что гораздо важнее научить правильному дизайну (при необходимости использовать таблицы соединений, знать, когда использовать NULL, когда использовать суррогатные ключи, ...) и когда эта концепция ясна, скажите им: что вы сделали, так этона самом деле 1,2,3, ... NF из-за ...

Таким образом, теория не блокирует вас, и вы можете хорошо спроектировать базы данных и позже узнать, какой это был NF.

0 голосов
/ 27 января 2011

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

0 голосов
/ 27 января 2011

Один из первых уроков - и один из самых важных - заключается в том, что обычные формы применяются к отдельным таблицам, а не к базам данных.Имеет смысл сказать: «Таблица wibble» находится в BCNF », но не имеет смысла говорить« Эта база данных находится в 3NF ».

Я часто вижу две большие проблемы в работе с разработчиками баз данных.

  1. Попытка нормализовать таблицу на основе имен столбцов, а не репрезентативных данных выборки.
  2. Непонимание функциональных зависимостей.

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

0 голосов
/ 27 января 2011

То, как меня учили, строилось из 1NF, 2NF, 3NF BCNF и т. Д., Как своего рода учебное путешествие типа урока истории.

Это действительно зависит от вашей аудитории, переход к 3NF может быть немного скачком.

0 голосов
/ 27 января 2011

Просто зайдите на 3nf и сосредоточьтесь на избыточных данных, и все будет гораздо проще.Или вы можете пойти по совершенно неверному пути и использовать диаграммы E / R, чтобы просто запутать их!

...