МетУказКурсПр_БД_Изм
.pdf73
Распечатав диаграмму и отчѐт, Вася выполнил верификацию модели. Прежде всего, в составе атрибутов каждой сущности он попытался обнаружить детерминанты ФЗ, не совпадающие с первичными ключами. Не обнаружил. И не огорчился. Затем он убедился в том, что каждый неключевой атрибут каждой сущности функционально зависит от еѐ первичного ключа. Для полноты следовало бы ещѐ проверить, нет ли в сущностных отношениях многозначных зависимостей. Однако Вася эту проверку не выполнял. Он о ней забыл. И ему повезло. Действительно, нет таких зависимостей. Результаты проверок Васю вполне удовлетворили. Он сделал важный вывод: каждая сущность модели находится, по крайней мере, в 4НФ. А
Вы можете подтвердить это?
Теперь нужно проверить выполнимость транзакций пользователя. Вася добавил к диаграмме и глоссарию следующий текст.
ТРАНЗАКЦИИ ПОЛЬЗОВАТЕЛЯ Транзакция 1. Регистрация заказа.
Вовлекаются КЛИЕНТ, ЗАКАЗ, БЛЮДО_ЗК, БЛЮДО.
Создаются один экземпляр ЗАКАЗа, и несколько экземпляров БЛЮДа_ЗК. Может создаваться или обновляться один экземпляр КЛИЕНТа. БЛЮДО используется только для выборки.
Нет данных о стоимости проката зала и стоимости обслуживания. Добавить (?) атрибут БЛЮДО.цена_Э – оценку стоимости порции.
Транзакция 2. Обновление справочника клиентов.
Вовлекается только КЛИЕНТ. Создание/уничтожение/обновление экземпляров. Уничтожение только при отсутствии потомков.
Выполнимо.
Транзакция 3. Регистрация закупок.
Вовлекаются ПОСТАВЩИК, ЗАКАЗ, ПРОДУКТ – для выборки; ЗАКУПКА, ПОЗИЦИЯ – для обновления.
Выполнимо.
Транзакция 4. Подготовка счѐта.
Транзакция не обновляет данные. Вовлекаются ЗАКАЗ, ЗАКУПКА, БЛЮДО_ЗК, ПОЗИЦИЯ, ИНГРЕДИЕНТ. Нет данных о стоимости проката зала, стоимости обслуживания и стоимости приготовления блюда (15%).
Транзакция 5. Обновление справочника поставщиков.
Вовлекается только ПОСТАВЩИК. Создание/уничтожение/обновление экземпляров. Уничтожение только при отсутствии потомков.
Выполнимо.
74
Транзакция 6. Подготовка плана закупок. (Добавить)
Транзакция не обновляет данные. Вовлекаются ЗАКАЗ, БЛЮДО_ЗК, ИНГРЕДИЕНТ. Результат – перечень продуктов, необходимых для выполнения ЗАКАЗа, с указанием требуемого количества.
Выполнимо.
Обнаружилось, что некоторым данным нет места в проектируемой структуре. Именно, не известно, где хранить текущие значения стоимости проката зала, стоимости обслуживания, стоимости приготовления блюд. Подумав, Вася решил, что этой проблемой он займѐтся на уровне приложения. В его проекте это приемлемое решение. В общем случае возникновение такой ситуации означает, что нужно вернуться к одному из предыдущих этапов анализа и изменить решения о составе сущностей модели, составе атрибутов какой-то сущности, свойствах соединений и т.п.
Вася не стал ничего менять в модели и обсудил еѐ текущее состояние с заказчиком. Тот сначала возражал против атрибутов БЛЮДО.описание и ПОСТАВЩИК.возможности, но в конце концов согласился с полезностью этих сведений. Идею добавления атрибута БЛЮДО.цена_Э одобрил.
Затем Вася написал промежуточный отчѐт и успешно защитил его. Теперь можно приступать к проектированию физической модели. Однако мы на этом с ним расстанемся. То, что он делал дальше, Вам знакомо. Вы это делали, выполняя лабораторные по БД.