Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР БД.docx
Скачиваний:
9
Добавлен:
14.11.2019
Размер:
1.85 Mб
Скачать

2.3 Концептуальная модель

Ниже на рисунке (рис. 1) представлена концептуальная модель решаемой задачи.

Рис.1 схема базы данных

3. Реализация базы данных

3.1 Создание базы «Меню кафе»

Все элементы базы данных: таблицы, запросы, формы и другие хранятся в отдельных файлах и имеют различные расширения. При создании приложения используется проект, в котором хранится информация об используемых файлах, а также подключенных модулях и библиотеках. Посредством этой информации файл проекта объединяет элементы приложения FoxPro и группирует их по типам в менеджере проекта, используя при этом их расширение. Информация о проекте хранится в специальной таблице, которая, в отличие от обычных таблиц FoxPro, имеет расширение *.pjx. Memo-поля таблицы содержат наименование элемента проекта, его описание и другие текстовые атрибуты. Файл с Memo-полями таблицы имеет расширение PJT. Использование файла проекта значительно облегчает работу с проектом и упрощает разработку приложения.

3.2 Создание таблиц

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

Таблица состоит из столбцов и строк, в которых хранится информация одного типа.

В Visual FoxPro таблицы можно создавать двумя способами, при помощи конструктора таблиц и при помощи мастера, выбирая в окне создания таблицы «New Table» кнопки «Table Wizard» (мастер таблиц) и «New Table» (конструктор таблиц) соответственно.

В базе данных «Меню кафе» все таблицы были созданы при помощи конструктора таблиц (рис 3.1). На вкладке «Fields» задаём свойства полей таблицы: имя, тип, размер, индексное поле.

На вкладке «Index» определяем тип индексных полей (Рис.3.1.). Связь «Primary» позволяет создает уникальный индекс, который используется для связывания таблиц и определения условий целостности данных. Поля, входящие в первичный ключ, не должны допускать ввода пустых или повторяющихся значений

Связь «Regular» создает индекс, в котором для каждой записи таблицы хранится значение индексного выражения. Если несколько записей имеют одинаковое значение индексного выражения, то каждое значение хранится отдельно и содержит ссылку на связанную с ней запись.

Для всех главных таблиц определяем первичные ключи по полям которое будет однозначно определять таблицы, такими полями будут поля со словом “cod”. Для связи главной и дочерних таблиц в дочерних таблицах установим внешний ключ типы «Regular». В таком случае у нас есть одна главная (albums) и три подчиненных (artists, styles и tracks) таблицы (рис 3.2).

Рис. 3.2 Схема связей

В обоих случаях у нас будет осуществляться отношение «один-ко-многим», т.е. одной записи родительской таблицы могут соответствовать несколько записей из дочерней.

Необходимо обеспечить ссылочную целостность. Главное требование ссылочной целостности заключается в том, чтобы записи дочерних таблиц имели ссылки на записи в родительской таблице. Для этого кликом по связи вызываем диалоговое окно «Referential Integrity» (рис.3.2), где устанавливаем правила на добавление, удаление и изменение записи в дочерней таблице. В окне «Referential Integrity» справа указаны имена главной и дочерней таблиц, слева – поля по которым они связанны.

На вкладках «Update» и «Delete» выбираем «Cascade», что означает, что при изменении/удалении значений полей первичного ключа или ключа-кандидата в родительской таблице автоматически осуществляется изменение/удаление всех соответствующих значений в дочерней таблице — каскадное изменение/удаление. Вкладка «Insert» содержит правила для добавления записей применимых со стороны дочерней таблицы, здесь выбираем «Restrict», т.е. запрещается добавление записи к дочерней таблице, если в родительской таблице отсутствует запись, значение первичного ключа или ключа-кандидата которой не совпадает со значением внешнего ключа добавляемой записи.