Нормализация в MYSQL - PullRequest
       30

Нормализация в MYSQL

37 голосов
/ 11 августа 2009

Может ли кто-нибудь помочь мне узнать, что такое нормализация в MySQL и в каком случае и как мы должны ее использовать ..

Заранее спасибо.

Ответы [ 6 ]

78 голосов
/ 11 августа 2009

Я пытаюсь объяснить здесь нормализацию в терминах непрофессионала. Во-первых, это то, что относится к реляционной базе данных (Oracle, Access, MySQL), так что это не только для MySQL.

Нормализация означает, что каждая таблица имеет единственные минимальные поля и избавлена ​​от зависимостей. Представьте, что у вас есть запись о сотруднике, и каждый сотрудник принадлежит к отделу. Если вы храните отдел как поле вместе с другими данными сотрудника, у вас возникает проблема - что произойдет, если отдел будет удален? Вы должны обновить все поля отдела, и есть вероятность ошибки. А что если у некоторых сотрудников нет отдела (возможно, недавно назначенного?). Теперь будут нулевые значения.

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

Вот простой процесс нормализации.

EMPLOYEE ( < employee_id >, name, social_security, department_name)

Это не нормализовано, как объяснено. Нормализованная форма может выглядеть как

EMPLOYEE ( < employee_id >, name, social_security)

Здесь таблица Employee отвечает только за один набор данных. Так, где мы храним, к какому отделу принадлежит сотрудник? В другой таблице

EMPLOYEE_DEPARTMENT ( < employee_id >, department_name )

Это не оптимально. Что если название отдела изменится? (это происходит в правительстве США все время). Следовательно, лучше сделать это

EMPLOYEE_DEPARTMENT ( < employee_id >, department_id )
DEPARTMENT ( < department_id >, department_name )

Есть первая нормальная форма, вторая нормальная форма и третья нормальная форма. Но если вы не изучаете курс по БД, я обычно просто выбираю наиболее нормализованную форму, какую только могу понять.

Надеюсь, это поможет.

13 голосов
/ 11 августа 2009

Нормализация не только для MYSql. Это общая концепция базы данных.

Нормализация - это процесс эффективно организовать данные в база данных. Есть две цели процесс нормализации: устранение избыточные данные (например, хранение одни и те же данные в более чем одной таблице) и обеспечение зависимости данных сделать смысл (только хранение связанных данных в Таблица). Оба они достойные цели поскольку они уменьшают количество пространства база данных потребляет и гарантирует, что данные логически хранится.

Нормальные формы в SQL приведены ниже.

Первая нормальная форма (1NF): отношение говорят, что в 1NF, если он имеет только однозначные атрибуты, ни повторение и массивы не допускаются.

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

Третья нормальная форма (3NF): Мы говорим, что отношение в 3NF, если оно в 2NF и не имеет транзитивных зависимостей.

Нормальная форма Бойса-Кодда (BCNF): A Отношение называется BCNF, если и только если каждый определитель в отношение - это ключ-кандидат.

Четвертая нормальная форма (4NF): отношение Говорят, что в 4NF, если это в BCNF и не содержит многозначных зависимостей.

Пятая нормальная форма (5NF): отношение Говорят, что в 5NF, если и только если каждый зависимость соединения в отношении подразумевается ключами-кандидатами отношения.

Нормальная форма ключа домена (DKNF): мы говорим что отношение находится в DKNF, если оно без каких-либо модификаций аномалий. Вставка, удаление и обновление аномалии поддаются модификации аномалии

Seel также

Основы нормализации базы данных

3 голосов
/ 11 августа 2009

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

См. Статью в Википедии Нормализация базы данных .

(Это общий метод для реляционных баз данных, а не только для MySQL.)

2 голосов
/ 11 августа 2009

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

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

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

  1. Для отношений один-к-одному (например, A Студент имеет уникальный рейтинг в класс), та же таблица может быть использована для хранить столбцы (из обеих таблиц).
  2. Для отношений один-ко-многим (например, Семестр может иметь несколько курсы), внешний ключ в настоящее время создано в родительской таблице.
  3. Для отношений «многие ко многим» (например, Профессор обслуживает многих студентов и наоборот) третья таблица должна быть создан (с первичным ключом от обе таблицы в качестве составного ключа), и связанные данные обеих таблиц храниться.

Как только вы приступите ко всем этим сценариям, ваша db-схема будет нормализована до 4NF.

2 голосов
/ 11 августа 2009

проверка эта запись содержит полезные предложения

Учебник Барри по пониманию схемы базы данных

http://www.youtube.com/watch?v=KqvIGYjcLQ4 
0 голосов
/ 11 августа 2009

В области реляционной базы данных дизайн, нормализация является систематическим способ обеспечения того, чтобы база данных структура подходит для общие запросы и без определенное нежелательное характеристики - вставка, обновление и аномалии делеции - это может привести к потеря целостности данных. [1] Е.Ф. Кодд, изобретатель реляционных модель, представила понятие нормализация и что мы теперь знаем, как первая нормальная форма в 1970 году. [2] Codd продолжал определять второй и третий нормальные формы в 1971 году, [3] и Кодд и Раймонд Ф. Бойс определил Бойс-Кодд нормальной формы в 1974 году. [4] Высшие нормальные формы были определены другие теоретики в последующие годы, самый последний из них является шестым нормальным форма, представленная Крисом Дейтом, Хью Дарвен и Никос Лоренцос в 2002. [5]

Неофициально, реляционная база данных стол (компьютеризированное представление отношения) часто описывается как «нормализуется», если он находится в третьем нормальная форма (3НФ). [6] Большинство 3NF столов свободны от вставки, обновления и аномалии делеции, т.е. в большинстве случаев Таблицы 3NF соответствуют стандартам BCNF, 4NF и 5NF (но обычно не 6NF).

Стандартный элемент дизайна базы данных руководство заключается в том, что дизайнер должен создать полностью нормализованный дизайн; избирательная денормализация может впоследствии будет выполнен для причины производительности. [7] Тем не менее, некоторые дисциплины моделирования, такие как многомерное моделирование подхода к данным дизайн склада, явно рекомендую ненормализованные конструкции, то есть конструкции что по большей части не придерживаются 3NF. [8]

Редактировать: Источник: http://en.wikipedia.org/wiki/Database_normalization

...