ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ

АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

При проектировании базы данных решаются две основные проблемы:

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.