Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МетУказКурсПр_БД_Изм

.pdf
Скачиваний:
15
Добавлен:
11.05.2015
Размер:
1.26 Mб
Скачать

73

Распечатав диаграмму и отчѐт, Вася выполнил верификацию модели. Прежде всего, в составе атрибутов каждой сущности он попытался обнаружить детерминанты ФЗ, не совпадающие с первичными ключами. Не обнаружил. И не огорчился. Затем он убедился в том, что каждый неключевой атрибут каждой сущности функционально зависит от еѐ первичного ключа. Для полноты следовало бы ещѐ проверить, нет ли в сущностных отношениях многозначных зависимостей. Однако Вася эту проверку не выполнял. Он о ней забыл. И ему повезло. Действительно, нет таких зависимостей. Результаты проверок Васю вполне удовлетворили. Он сделал важный вывод: каждая сущность модели находится, по крайней мере, в 4НФ. А

Вы можете подтвердить это?

Теперь нужно проверить выполнимость транзакций пользователя. Вася добавил к диаграмме и глоссарию следующий текст.

ТРАНЗАКЦИИ ПОЛЬЗОВАТЕЛЯ Транзакция 1. Регистрация заказа.

Вовлекаются КЛИЕНТ, ЗАКАЗ, БЛЮДО_ЗК, БЛЮДО.

Создаются один экземпляр ЗАКАЗа, и несколько экземпляров БЛЮДа_ЗК. Может создаваться или обновляться один экземпляр КЛИЕНТа. БЛЮДО используется только для выборки.

Нет данных о стоимости проката зала и стоимости обслуживания. Добавить (?) атрибут БЛЮДО.цена_Э – оценку стоимости порции.

Транзакция 2. Обновление справочника клиентов.

Вовлекается только КЛИЕНТ. Создание/уничтожение/обновление экземпляров. Уничтожение только при отсутствии потомков.

Выполнимо.

Транзакция 3. Регистрация закупок.

Вовлекаются ПОСТАВЩИК, ЗАКАЗ, ПРОДУКТ – для выборки; ЗАКУПКА, ПОЗИЦИЯ – для обновления.

Выполнимо.

Транзакция 4. Подготовка счѐта.

Транзакция не обновляет данные. Вовлекаются ЗАКАЗ, ЗАКУПКА, БЛЮДО_ЗК, ПОЗИЦИЯ, ИНГРЕДИЕНТ. Нет данных о стоимости проката зала, стоимости обслуживания и стоимости приготовления блюда (15%).

Транзакция 5. Обновление справочника поставщиков.

Вовлекается только ПОСТАВЩИК. Создание/уничтожение/обновление экземпляров. Уничтожение только при отсутствии потомков.

Выполнимо.

74

Транзакция 6. Подготовка плана закупок. (Добавить)

Транзакция не обновляет данные. Вовлекаются ЗАКАЗ, БЛЮДО_ЗК, ИНГРЕДИЕНТ. Результат – перечень продуктов, необходимых для выполнения ЗАКАЗа, с указанием требуемого количества.

Выполнимо.

Обнаружилось, что некоторым данным нет места в проектируемой структуре. Именно, не известно, где хранить текущие значения стоимости проката зала, стоимости обслуживания, стоимости приготовления блюд. Подумав, Вася решил, что этой проблемой он займѐтся на уровне приложения. В его проекте это приемлемое решение. В общем случае возникновение такой ситуации означает, что нужно вернуться к одному из предыдущих этапов анализа и изменить решения о составе сущностей модели, составе атрибутов какой-то сущности, свойствах соединений и т.п.

Вася не стал ничего менять в модели и обсудил еѐ текущее состояние с заказчиком. Тот сначала возражал против атрибутов БЛЮДО.описание и ПОСТАВЩИК.возможности, но в конце концов согласился с полезностью этих сведений. Идею добавления атрибута БЛЮДО.цена_Э одобрил.

Затем Вася написал промежуточный отчѐт и успешно защитил его. Теперь можно приступать к проектированию физической модели. Однако мы на этом с ним расстанемся. То, что он делал дальше, Вам знакомо. Вы это делали, выполняя лабораторные по БД.