Нежелательные ФЗ
Некоторые функциональные зависимости, входящие в неприводимое множество ФЗ отношения, являются нежелательными, так как приводят к дублированию информации, что, в свою очередь, создает проблемы обновления данных и представляет угрозу целостности БД.
Например, добавим в отношение Сотрудники дополнительный атрибут возрастная_категория, который может принимать значения «несовершеннолетний», «пенсионер» и NULL для остальных сотрудников. Добавление этого атрибута внесет новую ФЗ в неприводимое множество ФЗ:
(дата_рождения, пол) ® возрастная_категория
(граница пенсионного возраста зависит от пола, поэтому в общем случае возрастную категорию определяют два атрибута)
Данную ФЗ отнесем к нежелательным по двум причинам. Во-первых, новый столбец возрастная_категория будет содержать очень много дублирующихся значений. Во-вторых, для поддержки актуального состояния этого атрибута придется каждый день выполнять пересчет его значений. Если хотя бы один день не будет выполнено такое обновление, база данных окажется в противоречивом состоянии. При любых законодательных изменениях возрастных границ снова придется обновлять атрибут возрастная_категория для всех сотрудников.
Правильным решением будет создание отдельного отношения, содержащего всю информацию, необходимую для определения возрастной категории по известной дате рождения и полу сотрудника. Можно предложить, например, такую схему отношения:
Возрастные_категории (код_категории, название, пол, возрастная граница)
В отношении будет всего три кортежа (по одному на каждую возрастную категорию), поэтому никакого дублирования информации не будет. Любые изменения возрастных границ достаточно обновить в одном месте.
Приведенный пример пока не дает ответа на вопрос, каким образом удобнее выявлять нежелательные ФЗ, однако указывает путь их устранения – вынесение нежелательных ФЗ в отдельные отношения.
Этот процесс называется декомпозицией (разбиением) имеющихся отношений. В процессе декомпозиции количество отношений в базе данных увеличивается, но общее количество хранимых данных, как правило, сокращается за счет устранения дублирования данных.
Дата добавления: 2015-08-26; просмотров: 1161;