Минимальное количество таблиц, которое существует после разложения отношения R в 1NF?

Рассмотрим отношение R(A, B, C, D, E, F, G) со следующими типами атрибутов:

Общее количество ключей = 1 = {A}

Набор простых (или) атомарных (или) однозначных атрибутов = {B, C}

Набор многозначных атрибутов = {D, E}

Набор составных атрибутов = { F, G}

Каким будет минимальное количество таблиц, которое существует после разложения отношения R на 1NF?

(А) 3 (В) 2 (С) 4 (D) 5


Моя попытка:

Нам нужны разные таблицы для каждого многозначного атрибута с заданным ключом (A), всего = 2

Точно так же нам нужны разные таблицы для каждого составного атрибута, всего = 2.

Всего 4 таких атрибута. Я даю 4 таблицы с заданным ключом (A) в каждой (4) таблицах. Мне разрешено вставлять атомарные атрибуты (B,C) в любую из указанных 4 таблиц. Итак, я пришел к выводу, что 4 таблицы достаточно для представления отношения в первой нормальной форме.

Не могли бы вы объяснить формально, пожалуйста?

1 ответ

Решение

Для каждого атрибута, который вы считаете "составным" (с неоднородными частями, такими как кортеж):

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

Для каждого оставшегося компонента: добавьте атрибут к исходному отношению, значение которого в каждой строке является значением компонента. Затем удалите составной атрибут. Это не добавляет никаких отношений.

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

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

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

Итак, окончательные отношения здесь: {A,B,C,F1,...,G1,...}, {A,D} и {A,E}, всего 1 (для оригинала и композитов) + 2 (для многозначного).

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

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

(Нет такой вещи, как "разложение" отношения на 1NF. Первоначальный смысл "нормализовать" означал избавление от атрибутов со значениями отношения. Позднее теория нормализации считает, что каждое отношение находится в 1NF. См. Это 1NF и атомарность. замените отношение атрибутами, которые, по нашему мнению, имеют однородные части (многозначные) или гетерогенные части (составные) одним или несколькими отношениями, которые вместо этого имеют атрибуты для частей. И мы можем преобразовать нереляционный дизайн в реляционный. в реляционном дизайне не будет кандидата / первичного ключа, потому что он определен только для отношений.)