Курсовая работа: Информационная система "Книга рецептов"
1) о продуктах:
1.1) наименование продукта;
1.2) код продукта (он будет однозначно характеризовать продукт (для каждого продукта код уникален) и короче, чем наименование, – по нему легче ориентироваться);
1.3) цена за единицу продукта – дает возможность подсчитать стоимость продуктов необходимых для приготовления блюда;
2) о блюдах:
2.1) код блюда (также однозначно характеризует блюда и удобен в использовании);
2.2) наименование блюда;
2.3) время приготовления, сколько времени оно займет;
2.4) вид блюда (горячее, десерт и т.п.)
3) о рецептах: какие продукты и в каком количестве необходимы для приготовления одной порции данного блюда. То есть для каждого рецепта
будем указывать код продуктов и код блюда. Естественно, для приготовления блюда необходимо много продуктов (для каждого – свое количество), все они должны быть указаны в рецепте. А вот каждому блюду может соответствовать один и только один рецепт – разночтений по поводу рецептов к одному и тому же блюду быть не должно.
Логическая модель БД
Физическая модель БД:
Построенная таким образом база данных имеет третью нормальную форму.
Поддержание целостности системы.
В системе должны поддерживаться следующие правила:
а) Для продукта : при попытке удаления записи таблицы продукты ИС проверяет, есть ли в БД данные о рецептах, содержащих этот продукт. Если такие рецепты находятся, то система выдает сообщение: «Такое удаление невозможно, так как есть рецепты, для осуществления которых необходим этот продукт». И действительно, если мы удалим данные об этом продукте, рецепты, ссылающиеся на него, станут бесполезными.
При изменении записи о продуктах необходимо помнить, что изменять коды продуктов нельзя - это уникальный атрибут каждого продукта. Если изменим код, то, по сути, мы удалим данные об одном продукте и заменим их данными о другом. Поэтому если пользователь попробует изменить код продукта, то система выдаст ему сообщение вида: «Код продукта менять нельзя; он должен совпадать с кодом продукта в каталоге продуктов». Но нулевых кодов у продукта также не может быть. Поэтому если пользователь захочет изменить код, который был введен нулевым, то система позволит ему это сделать.
Если пользователь не изменит нулевой код в ходе обновления записи, то система запретит такое обновление: «Код продукта не может быть нулевым».
б) Для блюда : записей в таблице рецепты без соответствующих записей в таблице блюда быть не должно, так как рецепт пишется именно для блюда. Поэтому если пользователь захочет удалить из БД данные о блюде, ИС попросит его сначала удалить соответствующие данные из таблицы рецепты: «В БД хранятся рецепт для этого блюда. Данные о блюде могут быть удалены только после удаления соответствующего рецепта».
Как и в случае с продуктами, коды блюд нельзя изменять. Поэтому пользователь, делая изменения в таблице блюда, не должен менять код – иначе это будет совершенно новое блюдо. ИС выдаст ошибку с объяснением: «Код блюда менять нельзя; он должен совпадать с кодом блюда в каталоге блюд». Но аналогично ситуации с продуктом замена нулевого кода позволяется, но оставить нулевой код нулевым нельзя.
в) Для рецепта : При внесении измененной информации в таблицу рецепты возможны две проблемы. Первое – в состав рецепта включили продукт, о котором нет информации в БД. В таком случае система предложит пользователю следующее: «Данных о таком продукте нет в БД. Внесите, пожалуйста, сначала информацию в таблицу продукты». Второе – пользователь отнес измененный рецепт к блюду, о котором нет данных в системе. ИС поступит аналогично предыдущему случаю: «Данных о таком блюде нет в БД. Внесите, пожалуйста, сначала информацию в таблицу блюда».
Приложения
1) Для продуктов:
а) Триггер на удаление записи таблицы продукты.
TRIGGER PROCEDURE FOR DELETE OF Product.
IF CAN-FIND(FIRST Recipe WHERE