Проектирование базы данных
АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
При проектировании базы данных решаются две основные проблемы:
1.Отображение объектов предметной области в абстрактные объекты модели данных таким образом, чтобы это отображение не противоречило семантике предметной области, и было по возможности лучшим (эффективным, удобным и т.д.). Часто эту проблему называют проблемой логического проектирования баз данных;
2.Обеспечение эффективного выполнения запросов к базе данных, т.е. рациональное расположение данных во внешней памяти, создание полезных дополнительных структур (например, индексов) с учетом особенностей конкретной СУБД. Эту проблему называют проблемой физического проектирования баз данных.
Проблема проектирования реляционной базы данных состоит в обоснованном принятии решений о том, из каких отношений (таблиц) должна состоять БД и какие атрибуты (характеристики и свойства) должны быть у этих отношений.
Классическим является подход, при котором весь процесс проектирования производится в терминах реляционной модели данных методом последовательных приближений к удовлетворительному набору схем отношений.
Исходной точкой является представление предметной области в виде одного или нескольких отношений, и на каждом шаге проектирования производится некоторый набор схем отношений, обладающих лучшими свойствами. Процесс проектирования представляет собой процесс нормализации схем отношений, причем каждая следующая нормальная форма обладает свойствами лучшими, чем предыдущая.
В ходе анализа предметной области необходимо:уяснить и указать назначение базы данных; определить и выделить первоначальный набор сущностей и атрибутов предметной области.
ПОРЯДОК ЗАЩИТЫ РАБОТЫ
Устранить отмеченные преподавателем недостатки.
К защите обязательно представить электронную версию работы.
Работа защищается с использованием компьютера (студент демонстрирует полученные знания и практические навыки работы на компьютере).
По результатам защиты выставляется оценка.
Пример создания базы данных "Библиотека" в СУБД MS Access 2000
Рассмотрим пример проектирования базы данных предметной области "Библиотека"
1. Назначение и предметная область
База данных предназначена для хранения данных о приобретенных библиотекой изданиях (монографиях, справочниках, сборниках статей и т.п.), информации о местонахождении отдельных экземпляров (переплетов) каждого издания и сведений о читателях.
В основу анализа взята аннотированная каталожная карточка.
ПОСТАНОВКА ЗАДАЧИ
1.1. Разработать базу данных (БД) «Библиотека», позволяющую вести:
· учет имеющегося книжного фонда
· учет читателей
· учет выданной литературы
1.2. Основные требования к БД по функциональному набору:
1.2.1. Требования по учету книжного фонда
· Пополнение базы данных книжного фонда в связи с поступлением новой литературы
· Удаление из базы данных списанных книг
· Учет книг, выданных читателям на дом.
· Поиск необходимой книги в БД по автору, по наименованию, по коду
1.2.2. Требования по учету читателей
· Пополнение базы данных читателей – «Новый читатель»
· Удаление из базы данных читателей.
· Составление отчета по «должникам»
· Поиск читателя
Структура базы данных
2.1. Для решения поставленной задачи принята схема базы данных, представленная на рис.1.
Рис.1.Схема данных.
Составляющими базу данных являются три таблицы:
· «Читатели»
· «Книги»
· «Выданные книги»
2.2. Таблица «Читатели» предназначена для учета читателей, пользующихся библиотекой. Структура таблицы представлена на рис.2.
Рис.2.Структура таблицы «Читатели»
В качестве ключевого определено поле «СоцНомер», содержащий реквизит «Социальный номер», являющимся уникальным в рамках России. По всем другим полям совпадения допускаются. На рис. 2-4 в столбце «Описание» указана длина поля.
2.3. Таблица «Книги» предназначена для учета имеющегося книжного фонда. Структура таблицы «Книги» представлена на рис.3.
Рис.3.
В связи с тем, что любые собственные реквизиты книги могут быть не уникальными, в качестве ключевого определено поле «КодКниги» с типом «Счетчик».
2.4. Таблица «ВыданныеКниги» предназначена для учета имеющегося книжного фонда. Структура таблицы «ВыданныеКниги» представлена на рис.4.
Рис.4.
В качестве ключевого определено поле «ПорНомер» с типом «Счетчик».
2.5. В качестве связей между таблицами определены связи (см. рис.1.) «один-ко-многим»:
· «Читатели.СоцНомер» -> «ВыданныеКниги.СоцНомер» (у одного читателя может быть на руках несколько книг)
· «Книги.КодКниги» -> «ВыданныеКниги.Код.Книги» (на руках у читателей может быть несколько экземпляров одной и той же книги).
Данные связи позволяют вести учет выданных книг и вести так называемый формуляр читателя.
ФормЫ
3.1. Для реализации интерфейса созданы формы.
Главная кнопочная форма (рис. 5.)
Рис. 5.
Формы для регистрации и удаления из базы книг и читателей (рис. 6-7).
Рис. 6.
Рис. 7.
Подчиненная форма для реализации функций: «выдача/возврат книг», «просмотр формуляра читателя» (рис. 9). В этих формах запрещено изменение, добавление записей в таблицы «Книги» и «Читатели».
Рис. 8.
ЗапросЫ
4.1. Для реализации необходимых функции по ведению базы данных были созданы запросы:
· «ФормулярЧитателя»
· «ЗапросНаВыдачу»
· «ПросроченныеКниги»
4.2. Запрос «ФормулярЧитателя» построен с использованием трех таблиц. Тип запроса – выборка. Запрос предназначен для вывода на экран всех книг у читателя. В качестве условия для отбора записей определено выражение: ([Forms]![Форма1]![ПоискЧитателя]![СоцНомер]) - для текущей записи в форме, предназначенной для поиска читателей. Форма для ввода данных показана на рис. 9.
Рис. 9.
4.3. Запрос «ПросроченныеКниги» построен с использованием трех таблиц. Тип запроса – выборка. На его основе формируется таблица, показанная на рис. 10.
Рис. 10.
Запрос предназначен для вывода в отчет данных по читателям, просрочившим возврат книги. В качестве условия для отбора записей определено выражение: [ВыданныеКниги]![ДатаВозврата]< DATE() – все выданные книги, для которых дата возврата меньше текущей календарной.
4.4. Запрос «ЗапросНаВыдачу» построен в режиме SQL конструктора запросов с использованием инструкции INSERT INTO …VALUES. Запрос предназначен для регистрации выдаваемой книги в таблице «ВыданныеКниги». В качестве значений записываемых в поля добавляемой записи используются:
· данные по текущим записям в активных формах «ПоискКниги», «ПоискЧитателя» - для полей «КодКниги», «СоцНомер»;
· Текущая календарная дата – для поля «Датавыдачи»;
· Значение текущая календарная дата+15 дней – для поля «ДатаВозврата».
ОтчетЫ
5.1. Для определения должников сформирован отчет «ПросроченныеКниги», позволяющий на основании запроса вывести отчет по читателям, не возвратившим книги в библиотеку своевременно (рис. 11).
Рис. 11.