- •1. Цель работы и задачи
- •2. Проектирование базы данных
- •2.1 Описание предметной области
- •2.2 Выделение информационных объектов
- •2.3 Концептуальная модель
- •3. Реализация базы данных
- •3.1 Создание базы «База меломана»
- •3.2 Создание таблиц
- •3.3 Создание форм
- •3.4 Создание запросов
- •3.5 Создание отчетов
- •3.6 Меню
2.3 Концептуальная модель
Ниже на рисунке (рис. 1) представлена концептуальная модель решаемой задачи.
Рис.1 схема базы данных
Таблица 1.2. Связи между информационными объектами.
Главный объект |
Подчиненный объект |
Тип связи |
код_альбома |
код_альбома |
1:М |
код_исполнителя |
код_исполнителя |
1:М |
код_стиля |
код_стиля |
1:М |
код_хранилища |
код_хранилища |
1:М |
3. Реализация базы данных
3.1 Создание базы «База меломана»
Все элементы базы данных: таблицы, запросы, формы и другие хранятся в отдельных файлах и имеют различные расширения. При создании приложения используется проект, в котором хранится информация об используемых файлах, а также подключенных модулях и библиотеках. Посредством этой информации файл проекта объединяет элементы приложения Visual FoxPro и группирует их по типам в менеджере проекта, используя при этом их расширение. Информация о проекте хранится в специальной таблице, которая, в отличие от обычных таблиц Visual FoxPro, имеет расширение *.pjx. Memo-поля таблицы содержат наименование элемента проекта, его описание и другие текстовые атрибуты. Файл с Memo-полями таблицы имеет расширение PJT. Использование файла проекта значительно облегчает работу с проектом и упрощает разработку приложения.
В таблице 1.3. указаны основные элементы базы данных, а также их расширения и назначение.
Таблица 1.3. Элементы базы
Объект |
Имя и разрешение |
Назначение |
Проект |
Muzbd.pjx |
Файл проекта |
База |
Music.dbc |
База данных «База меломана» |
Альбом |
код_альбома |
Код альбома |
название |
Название |
|
код_исполнителя |
Код исполнителя |
|
код_стиля |
Код стиля |
|
студия |
Студия |
|
год |
Год |
|
формат |
Формат |
|
количество_треков |
Количество треков |
|
код_хранилища |
Код хранилища |
|
Треки |
код_трека |
Код трека |
номер_трека |
Номер трека |
|
название |
Название |
|
длительность |
Длительность |
|
код_альбома |
Код альбома |
|
Стиль |
код_стиля |
Код стиля |
название |
Название |
|
Артист |
код_исполнителя |
Код исполнителя |
имя |
Имя |
|
страна |
Страна |
|
дата_рождения |
Дата Рождения |
|
Хранилище |
код_хранилища |
Код хранилища |
номер_стелажа |
Номер стелажа |
|
номер_полки |
Номер полки |
|
другое |
Другое |
3.2 Создание таблиц
Таблицы являются основной частью базы данных. Они содержат всю необходимую информацию об информационных объектах и их реквизитах. При дальнейшей работе с базой данных данные будут добавляться в таблицы, удаляться из них и редактироваться по мере необходимости. Все эти действия можно осуществлять при помощи специально созданных форм. Информация, содержащаяся в таблицах, также может быть использована для составления отчетов.
Таблица состоит из столбцов и строк, в которых хранится информация одного типа.
В Visual FoxPro таблицы можно создавать двумя способами, при помощи конструктора таблиц и при помощи мастера, выбирая в окне создания таблицы «New Table» кнопки «Table Wizard» (мастер таблиц) и «New Table» (конструктор таблиц) соответственно.
В базе данных «База меломана» все таблицы были созданы при помощи конструктора таблиц (рис 3.1). На вкладке «Fields» задаём свойства полей таблицы: имя, тип, размер, индексное поле.
Рис. 3.1 Окно конструктора для создания таблицы «albums»
На вкладке «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», т.е. запрещается добавление записи к дочерней таблице, если в родительской таблице отсутствует запись, значение первичного ключа или ключа-кандидата которой не совпадает со значением внешнего ключа добавляемой записи.