Проектирование базы данных

Задание

 

· В соответствии с вариантом спроектируйте базу данных любым методом проектирования на основе описания предметной области.

1. В СУБД InterBase 6.0/Firebird 1.5 реализуйте серверную часть спроектированной ранее базы данных, которая должна содержать:

1) таблицы с определением первичного ключа

2) триггеры, реализующие каскадное обновление и каскадное удаление связанных полей

3) триггеры, присваивающие уникальное значение генератора в поле первичного ключа

4) триггеры, обеспечивающие журнализацию изменений определенной таблицы

5) не менее трех различных хранимых процедур

2. В ИСР Delphi создайте клиентское приложение, используя любую технологию доступа к данным (BDE, IBX, ADO и др.) с возможностью поиска и фильтрации данных, а также вывода отчета.

1) У каждой книги в библиотеке свой идентификационный номер.

2) Каждая книга может быть издана в одном издательстве.

3) В одном и том же издательстве издается несколько книг.

4) Каждая книга имеет определенное количество страниц, тип переплета, величину тиража.

5) Каждая книга в конкретный момент может находиться или в библиотеке или на руках только у одного читателя.

6) Каждый читатель может взять из библиотеки несколько книг.

7) Каждый читатель имеет уникальный номер абонемента.

8) Имя читателя не уникально. Название издательства не уникально.

9) Читатель имеет ФИО, телефон, адрес. Издательство – название, город.



Проектирование базы данных

 

Приведём ER-диаграмму в соответствии с описанием предметной области:

 

Рис.1. ER-диаграмма

 

Так как каждая книга в конкретный момент времени может находиться на руках только у одного читателя, то мы можем связать сущности «Книга» и «Читатели» по полю «ID Абонента» связью типа Многие к одному так как в этом поле, являющемся внешним ключом для атрибута «Книги», могут повторяться записи, ибо один и тот же читатель может взять сразу несколько книг. Если это поле содержит значение NULL, то значит, что данная книга ни находится на руках у читателя, а находится в библиотеке. Добавим для сущности «Книга» дополнительное свойство «Дата выдачи». Значения этого поля должны равняться NULL если значение поля «ID Абонента» так же равняется NULL.

Приведём базу данных к третьей нормальной форме. Свойство «Издательство» сущности «Книги» имеет дополнительные свойства не зависящие от ключевых. Поэтому сделаем свойство «Издательство» самостоятельной сущностью и введём для него дополнительное свойство «ID Издательства» и сделаем его ключевым.

 

Рис.2. ER-диаграмма

 

Опишем структуру каждой таблицы.

 

Таблица «Книги» (Books)

Наименование поля Тип данных Ограничения
ID Книги (ID_Books) Целое число NOT NULL Первичный ключ Значение уникально
Наименование (Name) Строка (30) NOT NULL
ID Издательства (ID_Publishers) Целое число NOT NULL Внешний ключ
Количество страниц (K_pages) Целое число NOT NULL
Тип переплёта (Cover) Строка (15) NOT NULL
Тираж (Tiraz) Целое число NOT NULL
ID Абонента (ID_abonent) Целое число Внешний ключ
Дата выдачи (Date_issue) Дата  

 

Таблица «Издательства» (Publishers)

Наименование поля Тип данных Ограничения
ID Издательства (ID_Publishers) Целое число NOT NULL Первичный ключ Значение уникально
Название (Name) Строка (20) NOT NULL
Город (City) Строка (20)  

 

Таблица «Читатели» (Readers)

Наименование поля Тип данных Ограничения
ID Абонента (ID_ abonent) Целое число NOT NULL Первичный ключ Значение уникально
ФИО (FIO) Строка (30) NOT NULL
Телефон (Telephone) Строка (10)  
Адрес (Address) Строка (20) NOT NULL

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: