Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tipovoy.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
355.75 Кб
Скачать

МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ

(НИУ МЭИ)

Типовой расчёт

по курсу Базы Данных

Учебная модель базы данных

ERWin

Выполнил:

студент группы А-6-09

Зыков М.С.

Проверил:

Бородин Г.А.

Москва, 2011

Целью типового расчета является практическое освоение основ моделирования реляционных баз данных с помощью CASE-средств.  

Область применения моделируемой базы данных.

Моделируемая база данных предназначена для применения в электронных каталогах библиотек. Она предоставляет пользователям полную информацию об издательствах (АСТ, Эксмо и тд.) и книгах, выпущенных этими издательствами. База включает в себя такую информацию об издательствах: название, наличие премии “Букер”, кол-во изданных книг, место в рейтинге издательств, год основания, фамилия основателя издательства, логотип, краткая история предприятия, город. О книгах: название, автор, сумма гонорара, кол-во проданных копий, расход на издание, прибыль, год издания, наличие премии “Букер”, жанр, описание.

Ненормализованная база данных.

На представленной выше модели видно, что данная база будет неудобна для работы с ней. Во-первых, информация будет дублироваться, т.к. в одном издательстве была выпущена не одна книга. В полях жанры и города часто будут одни и те же значения. Такая база данных приведет к избыточности, большому размеру, и, следовательно, к понижению быстродействия. Также может возникнуть проблема с потерей необходимых данных при удалении.

Чтобы избежать подобных проблем, необходимо привести базу данных к третьей нормальной форме.

Нормализация базы данных.

  1. Нормализация до первой нормальной формы.

Для приведения базы данных к первой нормальной форме необходимо произвести ряд действий.

Разобьем исходную базу данных на две сущности и назовем их Publishers, где будет храниться информация об издательствах, и Books, где будет храниться информация о книгах, выпущенных этими издательствами.

Это поможет исключить повторяющиеся сведения об издательствах. В сущности Books установим первичный ключ на атрибут с кодом книги. Установим идентифицирующую связь от сущности Publishers к сущности Books. Сложные атрибуты в данной базе отсутствуют.

Таким образом, полученная база данных будет удовлетворять условиям первой нормальной формы. Перейдем к нормализации до второй нормальной формы.

  1. Нормализация до второй нормальной формы.

Так как выбранный первичный ключ в данном случае не является составным, то база данных удовлетворяет условиям второй нормальной формы. Далее нормализуем базу данных до третьей нормальной формы.

  1. Нормализация до третьей нормальной формы.

Для приведения базы данных к третьей нормальной форме необходимо сделать следующие действия: создадим новую сущность Cities, в которой будут храниться города, в которых располагаются издательства, в качестве первичного ключа для этой сущности выберем код города и установим неидентифицирующую связь с сущностью Publishers. Аналогично создадим сущность Genres с информацией о жанрах книг и установим неидентифирующую связь с сущностью Books по коду жанров. Таким образом, база данных удовлетворяет требованиям третьей нормальной формы.

База данных приведена к третьей нормальной форме, что значительно облегчит поиск и работу с данными в будущем.

Теперь смоделируем базу данных в третьей нормальной форме при помощи CASE-средства ERWin версии 4.0.

В качестве реальной СУБД выберем SQL Server 2005.

Созданная модель с представлением на физическом уровне представлена на схеме:

Представление (Рентабельные книги).

Было создано представление, которое использует информацию из сущностей Publishers и Books. Оно выводит информацию: название издательства, его место в рейтинге, логотип издательства, название книги, имя автора, количество проданных копий, описание, вычисляемое поле по конкретной книге (полученные деньги – гонорар автору – затраты на издание).

Критерии отбора и ограничения отображены в SQL-коде:

CREATE VIEW Profitable (Name, TopList, Logo, BookName, Author, Sale, Discription, Profit) AS

SELECT Publishers.Name, Publishers.TopList, Publishers.Logo, Books.BookName, Books.Author, Books.Sale, Books.Discription, Books.Income-Books.Expense-Books.Fee

FROM Books, Publishers

WHERE Books.Income>(Books.Expense+Books.Fee)

go

Производится выборка книг, сумма полученных денег с продажи которых больше, чем гонорар, выплаченный автору и затраты на производство вместе взятые, т.е. поиск успешных и рентабельных книг.

Сведения о таблицах, полях и ключах.

Ниже приведены сведения о созданных таблицах, полях и ключах

Table

Name

Comment

Publishers

Информация об издательствах

Books

Информация об издаваемых книгах

Cities

Информация о городах

Genres

Информация о жанрах

Column(s) of "Publishers" Table

Name

Datatype

Null Option

Is PK

Is FK

Name

Text(30)

NOT NULL

No

No

Bookers

Yes/No

NOT NULL

No

No

Count

Long Integer

NOT NULL

No

No

TopList

Long Integer

NOT NULL

No

No

Year

Long Integer

NOT NULL

No

No

Creator

Text(30)

NOT NULL

No

No

Logo

OLE Object

NOT NULL

No

No

History

Memo

NOT NULL

No

No

Publisher_id

Replication ID

NOT NULL

Yes

No

City_id

Replication ID

NOT NULL

No

Yes

Column(s) of "Cities" Table

Name

Datatype

Null Option

Is PK

Is FK

City_Id

Replication ID

NOT NULL

Yes

No

City

Text(30)

NOT NULL

No

No

Column(s) of "Books" Table

Name

Datatype

Null Option

Is PK

Is FK

BookName

Text(30)

NOT NULL

No

No

Author

Text(40)

NOT NULL

No

No

Fee

Long Integer

NOT NULL

No

No

Sale

Long Integer

NOT NULL

No

No

Expense

Long Integer

NOT NULL

No

No

Income

Long Integer

NOT NULL

No

No

Imprint_Year

Long Integer

NOT NULL

No

No

Booker

Yes/No

NOT NULL

No

No

Discription

Memo

NOT NULL

No

No

Book_id

Replication ID

NOT NULL

Yes

No

Publisher_id

Replication ID

NOT NULL

Yes

Yes

Genre_id

Replication ID

NOT NULL

Yes

Yes

Column(s) of "Genres" Table

Name

Datatype

Null Option

Is PK

Is FK

Genre_id

Replication ID

NOT NULL

Yes

No

Genre

Text(30)

NOT NULL

No

No

Были созданы альтернативные ключи, которые не вошли в состав первичного.