Люди, которые читают «Введение в систему баз данных» К.Дейта или книги подобного уровня, не должны иметь проблем с определением нормализации и денормализации.
Однако память уже не та, что была раньше, и я часто смотрю на какой-то дизайн и говорю, что он не нормализован, хотя я не могу найти, какую из нормальных форм он нарушает.
Фактический пример, который иллюстрирует это:
Если у нас есть отношения
r1 (A, B, C)
и r2 (A, D)
с FD: AB-> C и A-> D
и r1
представляют подробные данные, в то время как r2
является сводкой этих данных (другими словами, каждый экземпляр D является функцией значений в r1. В этом примере пусть это будет промежуточный итог значений C согласно A из r1).
Пример экземпляра
r1 =
A B C
1 1 10
1 2 20
2 1 10
2 2 25
r2 =
A D
1 30
2 35
Итак, хотя я не могу сказать, что он ломается, например, 2NF или 3NF, мне кажется, что я застрял на мысли, что дизайн все еще денормализован в следующем смысле (из Codd, EF "Дальнейшая нормализация базы данных" Реляционная модель », стр. 34, комментируя причины нормализации за пределы 1НФ):
- Чтобы освободить коллекцию отношений от нежелательной вставки,
обновление и удаление зависимостей;
- Для уменьшения необходимости реструктуризации сбора
отношения как новые типы данных
введены, и таким образом увеличить жизнь
диапазон прикладных программ;
- сделать реляционную модель более информативной для пользователей;
- сделать коллекцию отношений нейтральной к запросу
статистика, где эта статистика
может меняться со временем.
Как я могу сказать, что если мы определим D как сумму всех Cs из r1, где A из r1 равно A из r2, то, если мы обновим C в r1 и не обновим D в r2, мы может закончиться нежелательной зависимостью обновления, и данные окажутся в несовместимом состоянии. Я считаю эту причину называть r1 и r2 денормализованными и думать о них как о денормализованных. (На самом деле все r2 является функцией r1 и вносит в модель ноль новых фактов; r2 = f (r1))
Так что вопросы
- можно ли назвать r1 и r2 денормализованными?
- если да, то почему? если нет, то почему? (по какому правилу? или по какому определению?)
Примечание:
Тем, кто находит вопрос (-ы) достаточно интересным, чтобы вставить ответ, я прошу предоставить либо что-то цитируемое, либо представить его в форме конкретных предположений и выводов (или, другими словами, если вы собираетесь поставить Ваше мнение, пожалуйста, следуйте ему с некоторыми рассуждениями).
EDIT
Я принял ответ dportas. Я постараюсь добавить сюда немного:
C.J.Дата может сделать четкое и строгое различие:
Большая часть теории дизайна связана с
сокращение избыточности; нормализация
уменьшает избыточность в пределах relvars,
ортогональность уменьшает его по всей
relvars.
цитата из Подробная база данных: теория отношений для практиков
и на следующей странице
просто как неспособность нормализовать все
путь подразумевает избыточность и может привести к
некоторые аномалии, то же самое может
несоблюдение ортогональности.