(De) Нормализация двух соотношений

Люди, которые читают C.J.Date Введение в систему баз данных или книги аналогичного уровня, не должны иметь проблем с определением нормализации и денормализации.

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

Фактический пример, иллюстрирующий это:

Если мы имеем отношения

r1 (A, B, C) и r2 (A, D)

с FDs: AB- > C и A- > D

и r1 представляют собой подробные данные, а r2 - сводка этих данных (другими словами, каждый экземпляр D является функцией значений в r1. В этом примере пусть это будет промежуточным значением значений C в соответствии с A из г1).

Пример экземпляра

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, комментируя причины нормализации за пределами 1NF):

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

Как я могу сказать, если мы определим D как сумму всех Cs из r1, где A из r1 равно A из r2, то, если мы обновим C в r1, и мы не обновим D в r2, мы может закончиться нежелательной зависимостью от обновления, а данные заканчиваются в несогласованном состоянии. Я нахожу эту причину, чтобы вызвать r1 и r2 денормализованными и думать о них как денормализованные. (На самом деле целое r2 является функцией от r1 и возвращает нулю новые факты в модель: r2 = f (r1))

Итак, вопросы:

  • можно ли назвать r1 и r2 денормализованным?
  • если да, то почему? если нет, то почему? (в соответствии с которым правило? или согласно определению?)

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

ИЗМЕНИТЬ Я принял ответ dportas. Я попытаюсь немного добавить сюда: C.J.Date может делать четкое и четкое различие:

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

цитируется Глубина базы данных: теория реляционных отношений для практиков

и на следующей странице

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

Ответ 1

Предполагая, что AB является ключом в r1, а A является ключом в r2, тогда кажется, что схема находится в 6NF. Словарь реляционной базы данных (Date) определяет денормализацию как:

Замена набора relvars R1, R2,.,., Rn их объединением R, такие, что для все я проекция R на атрибуты Ri гарантированы равный Ri (i = 1, 2,..., n).

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

Ответ 2

Ваше определение столбца D в r2 означает, что сумма всех Cs из r1, где A из r1 равна A из r2 ", является ограничением на D. Более формально, где Σ является суммированием, π - проекция и σ выбор,

(a,d) ∈ r2 ⇔ (a, d) = (a, Σ c), a ∈ πA(r1), c ∈ πCA=a(r1))

Поскольку это ограничение не является ни ограничением домена, ни ключевым ограничением, r2 не находится в "Нормальная форма домена/ключа" (DKNF).

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

Ответ 3

так что r2 является функцией от r1, которая означает, что r2 является <сильным > материализованным представлением этой функции от r1

и в этом примере это будет представление select A, sum(C) from r1 group by A

Представления

не рассматриваются в работе codd по нормализации, но я думаю, что он писал о них

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

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

Ответ 4

Я думаю, что пара отношений нарушает пятую нормальную форму.


R2 - проекция R1. Некоторые утверждают, что СУМ выходит за рамки реляционной модели. В этом случае SUM является тривиальным расширением COUNT, которое находится в рамках реляционной модели.