Нормализация базы данных - это самый простой способ минимизировать избыточность данных. Для этого существуют определенные формы нормализации.
Первая нормальная форма может быть обобщена как:
- нет повторяющихся групп в отдельных таблицах.
- отдельные таблицы для соответствующей информации.
- все элементы таблицы, связанные с первичным ключом.
Вторая нормальная форма добавляет еще одно ограничение: в основном, каждый столбец, не являющийся частью ключа-кандидата, должен зависеть от каждого ключа-кандидата (ключ-кандидат определяется как минимальный набор столбцов, которые нельзя дублировать в стол).
И третья нормальная форма идет немного дальше: каждый столбец, не являющийся частью ключа-кандидата, не должен зависеть от любого другого столбца, не являющегося ключом-кандидатом. Другими словами, он может зависеть только для ключей-кандидатов. Это говорит о том, что 3NF зависит от ключа, всего ключа и ничего, кроме ключа, поэтому помогите мне Codd 1 .
Обратите внимание, что приведенные выше объяснения направлены на ваш вопрос, а не на теоретиков баз данных, поэтому описания обязательно упрощаются (и я использовал такие фразы, как "обобщенный как" и "в основном").
Область теории баз данных является сложной, и, если вы действительно хотите ее понять, вам в конечном итоге придется обратиться к науке, стоящей за ней. Но, с точки зрения вашего вопроса, надеюсь, этого будет достаточно.
Нормализация является ценным инструментом, гарантирующим отсутствие избыточных данных (что становится реальной проблемой, если две избыточные области не синхронизированы). Обычно это не увеличивает производительность.
Фактически, хотя вся база данных должна начинаться с 3NF, иногда допустимо снижение до 2NF для повышения производительности, если вы знаете о потенциальных проблемах и смягчаете их.
И имейте в виду, что существуют также "более высокие" уровни нормализации, такие как (очевидно) четвертый, пятый и шестой, но также Бойс-Кодд и некоторые другие, которые я не могу вспомнить, не говоря уже о моей голове. В подавляющем большинстве случаев 3NF должно быть более чем достаточно.
1 Если вы не знаете, кто такой Эдгар Кодд (или Кристофер Дэйт, если на то пошло), вы, вероятно, должны исследовать их, они - отцы реляционной базы данных теория.