Моделирование потоков данных
Анализ определенных выше объектов и атрибутов позволяет выделить сущности проектируемой базы данных и, приняв решение о создании реляционной базы данных, построить ее инфологическую модель на языке "Таблицы-связи" (рис. 2.1) [3].
К стержневым сущностям можно отнести:
1. Создатели (Код создателя, Создатель).
Эта сущность отводится для хранения сведений об основных людях, принимавших участие в подготовке рукописи издания (авторах, составителях, титульных редакторах, переводчиках и художниках). Такое объединение допустимо, так как данные о разных создателях выбираются из одного домена (фамилия и имена) и исключает дублирование данных (один и тот же человек может играть разные роли в подготовке разных изданий). Например, С.Я.Маршак писал стихи (Сказка о глупом мышонке) и пьесы (Двенадцать месяцев), переводил Дж.Байрона, Р.Бернса, Г.Гейне и составлял сборники стихов.
Так как фамилия и имена (инициалы) создателя могут быть достаточно громоздкими (М.Е. Салтыков-Щедрин, Франсуа Рене де Шатобриан, Остен Жюль Жан-Батист Ипполит и т.п.) и будут многократно встречаться в разных изданиях, то их целесообразно нумеровать и ссылаться на эти номера. Для этого вводится целочисленный атрибут "Код_создателя", который будет автоматически наращиваться на единицу при вводе в базу данных нового автора, переводчика или другого создателя.
Аналогично создаются: Код_издательства, Код_заглавия, Вид_ издания, Код_характера, Код_языка, Номер_билета, Номер_пере- плета, Код_места и Код_издания, замещающие от одного до девяти атрибутов.
2. Издательства (Код_издательства, Название, Город).
3. Заглавия (Код_заглавия, Заглавие).
Выделение этой сущности позволит сократить объем данных и снизить вероятность возникновения противоречивости (исключается необходимость ввода длинных текстовых названий для различных томов собраний сочинений, повторных изданий, учебников и т.п.).
4. Вид_издания (Вид_издания, Название_вида).
5. Характеры (Код_характера, Характер_переиздания).
6. Языки (Код_языка, Язык, Сокращение).
Кроме названия языка хранится его общепринятое сокращение (англ., исп., нем., фр.), если оно существует.
7. Места (Код_места, Номер_комнаты, Номер_стеллажа, Номер_ полки).
Один из кодов этой сущности (например, "-1") отведен для описания обобщенного места, находящегося за стенами хранилища книг (издание выдано читателю, временно передано другой библиотеке или организации).
8. Читатели (Номер_билета, Фамилия, Имя, Отчество, Адрес, Телефон).
Две ключевые сущности, описывающие издание и его конкретные экземпляры, оказываются зависимыми от других сущностей и попадают в класс обозначений:
1. Издание (Код_издания, Код_заглавия, Вид_издания, Номер_тома, Авторский_знак, Библиотечн_шифр, Повторность, Код_издательства, Год_издания, Аннотация) [Заглавия, Вид_издания, Издательства];
2. Переплеты (Номер_переплета, Код_издания, Цена, Дата_приобретения)[Издания];
Стержневые сущности и обозначения связаны между собой ассоциациями:
1. Авторы [Создатели M, Издание N] (Код_создателя, Код_издания).
2. Составители [Создатели M, Издания N] (Код_создателя, Код_издания).
3. Редакторы [Создатели M, Издания N] (Код_создателя, Код_издания).
4. Переводчики [Создатели M, Издания N] (Код_создателя, Код_издания, Язык).
5. Переиздания [Характеры M, Издания N] (Код_характера, Код_издания).
6. Размещение [Места M, Переплеты N] (Код_места, Номер_переплета, Дата_размещения, Дата_изъятия).
7. Выдача [Читатели M, Переплеты N] (Номер_билета, Номер_переплета, Дата_выдачи, Срок, Дата_возврата).
Рисунок 2.1. Инфологическая модель базы данных "Библиотека", построенная с помощью языка "Таблицы-связи"
Проектирование базы данных
Описание структуры данных
Описание таблиц базы данных
Название поля | Тип поля | Ключевое поле |
создатели | ||
Код создателей | Числовой | ü |
Ф И О | Текстовый | |
издательства | ||
Код издательства | Числовой | ü |
Название | Текстовый | |
Город | Текстовый | |
Вид издания | ||
Вид издания | Числовой | ü |
Название вида | Текстовый | |
Языки | ||
Код языка | Числовой | ü |
Язык | Текстовый | |
Сокращение | Текстовый | |
Места | ||
Код места | Числовой | ü |
Номер комнаты | Числовой | |
Номер стелажа | Числовой | |
Номер полки | Числовой | |
Читатели | ||
Номер предмета | Числовой | ü |
Фамилия | Текстовый | |
Имя | Текстовый | |
Отчество | Текстовый | |
Адрес | Текстовый | |
Телефон | Текстовый | |
Издание | ||
Код издания | Числовой | ü |
Код заглавия | Текстовый | |
Вид издания | Текстовый | |
Номер тома | Числовой | |
Авторский знак | Текстовый | |
Библиотечный шифр | Текстовый | |
Повторность | Числовой | |
Код издательства | Числовой | |
Год издания | Числовой | |
Переплеты | ||
Номер переплета | Числовой | ü |
Код издания | Числовой | |
Цена | Денежный | |
Дата приобретения | Дата | |
Переводчики | ||
Код создателя | Числовой | ü |
Код издания | Числовой | |
Размещение | ||
Код места | Числовой | ü |
Номер переплета | Числовой | |
Дата размещения | Дата | |
Дата изъятия | Дата | |
Выдача | ||
Номер билета | Числовой | ü |
Номер переплета | Числовой | |
Дата выдачи | Дата | |
Срок | Числовой | |
Дата возврата | Дата |
· функционально зависит от полного первичного ключа, а не от его части (если ключ составной);
· не имеет функциональной зависимости от другого неключевого поля.
· Сущности Авторы, Составители, Редакторы, Переиздания, не имеющие неключевых полей, безусловно нормализованы. Нормализованы и сущности Создатели, Характеры, Заглавия, Вид_издания, состоящие из несоставного ключа и единственного неключевого поля.
Анализ сущностей Переводчики, Размещение и Выдача, состоящих из составного ключа и неключевых полей, показал, что в них нет функциональных связей между неключевыми полями. Последние же не зависят функционально от какой-либо части составного ключа.
Наконец, анализ сущностей Издания, Переплеты, Места, Читатели и Языки, показал, что единственной "подозрительной" сущностью является стержень Языки, имеющий два функционально связанных неключевых поля: Язык и Сокращение.
Поле Язык стало неключевым из-за ввода цифрового первичного ключа Код_языка, заменяющего текстовый возможный ключ Язык. Это позволило уменьшить объем хранимых данных в таблице Переводчики, затраты труда на ввод множества текстовых значений и возможной противоречивости, которая часто возникает из-за ввода в разные поля ошибочных дубликатов (например, "Английский", "Англиский", "Анлийский", "Англйский" и т.п.). Если мы вспомним рекомендации п. о замене на время нормализации цифровыз заменителей первичных ключей (Код_языка) на исходный ключ (Язык) или воспользуемся формулировкой НФБК, то окажется, что таблица Языки – нормализована.
Для завершения проекта необходимо было бы ввести в описания таблиц дополнительные сведения об ограничениях целостности (выше указан лишь минимальный их набор) и дать описание некоторых таблиц, но ограниченнный объем публикации не позволяет включать эти подробности, не являющиеся принципиальными для иллюстрации процедуры проектирования.
Описание запросов
Эти объекты служат для извлечения данных из таблиц и предоставления их пользователю в удобном виде [4,5]. С помощью запросов выполняют такие операции как отбор данных, их сортировку и фильтрацию. С помощью запросов можно выполнять преобразования данных по заданному алгоритму, создавать новые таблицы, выполнять автоматическое наполнения таблиц данными, импортированными из других источников, выполнять простейшие вычисления в таблицах и многое другое
Рисунок 3.1. Запрос по категории «Авторы»
Рисунок 3.2. Запрос по категории «Издания»
Рисунок 3.3. Запрос по категории «Читатели»
Отчеты
По своим свойствам и структуре отчеты во многом похожи на формы, но предназначены только для вывода данных, причем для вывода не на экран, а на принтер. В связи с этим отчеты отличаются тем, что в них приняты специальные меры для группирования выводимых данных и для вывода специальных элементов оформления, характерных для печатных документов [8].
Рисунок 3.4. Отчет по категории «Издания»
Рисунок 3.5. Отчет по категории «Создатели»