Проектирование реляционной базы данных средствами СУБД Access, страница 2

Машина (гос номер, код марки, код цвета, год выпуска, номер кузова, номер шасси, номер двигателя, информация о угоне, код автолюбителя, номер статьи, код инспектора, номер протокола, дата протокола, сумма штрафа);

Марка (код марки, марка);

Статья (номер статьи, название статьи);

Цвет (код цвета, цвет);

Инспектор (код инспектора, ФИО инспектора);

 


В третьем проектном наборе, как и во втором, были выделены отдельные таблицы «списки» (марки, статьи, инспекторы) и таблица Автолюбитель, плюс добавилась таблица цвет (при частых повторениях цвета ведет к уменьшению объема базы данных) Существенный недостаток данной реализации заключается в том, что в таблице, содержащей информацию о машинах содержится информация и о правонарушениях, следовательно нет возможности указания нескольких правонарушений для одной машины, без повторения данных о всей машине, что приведёт к недопустимому избыточному дублированию данных в таблице в полях: год выпуска, номер кузова, номер двигателя, номер шасси, информация о угоне, код цвета, код марки, код автолюбителя,  а это значит, что при изменении данных о машине, например информация об угоне, значение придётся менять не один раз, а для каждого зафиксировано правонарушений за данной машиной.

Из вышесказанного следует, что второй набор, выполненный методом «сущность - связь» является самым оптимальным, так как не обладает недостатками, присущими первому и третьему наборам, а также, наиболее полно отражает связи между объектами.

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

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

При проектировании баз данных средствами Access, сперва строится универсальное отношение, содержащая все атрибуты объектов, затем создается таблица на основе этого отношения и производится её нормализация средствами Access. Этот метод неоптимальный, часто получаются ни совсем логичные отношения. А также заполнение таблицы на основе универсального отношения очень неудобно. Нормализацию средствами Access следует применять, над готовыми и заполненными базами данных. 

Построение запросов

Запрос 1.  изменить цвет определенной машины.

PARAMETERS [введите гос № машины] Text ( 255 ), [введите цвет] Text ( 255 );

UPDATE avto SET avto.cv = [введите цвет]

WHERE (((avto.cv)<>[введите цвет]) AND ((avto.gn)=[введите гос № машины]));

Запрос 2. изменить отметку об угоне для определенной машины.

PARAMETERS [введите гос № машины] Text ( 255 );

UPDATE avto SET avto.iu = -1-[iu]

WHERE (((avto.gn)=[введите гос № машины]));

Запрос 3. создать архив правонарушений за прошедший год.

SELECT protokol.nr, protokol.gn, protokol.ki, protokol.nsya, protokol.dp, protokol.ssh INTO protokolarh

FROM protokol

WHERE (((Year([protokol]![dp]))=Year(Date())-1));

Запрос 4. удалить информацию по правонарушениям прошедшего года.

DELETE protokol.*, Year(protokol!dp) AS Выражение1, Year([protokol]![dp])

FROM protokol

WHERE (((Year([protokol]![dp]))=Year(Date())-1));

Запрос 5. добавить правонарушение для определенной машины, по определенной статье, зафиксированное определенным инспектором.

PARAMETERS [Введите гос №] Text ( 255 ), [Введите номер статьи] Short, [Введите код инспектора] Short, [Введите № протокола] Short, [Ведите дату протокола] DateTime, [Введите сумму штрафа] Currency;

INSERT INTO protokol ( nr, gn, ki, nsya, dp, ssh )

SELECT [Введите № протокола] AS Выражение1, avto.gn, inspektor.ki, statya.nsya, [Ведите дату протокола] AS Выражение2, [Введите сумму штрафа] AS Выражение3

FROM inspektor, statya, avto

WHERE (((avto.gn)=[Введите гос №]) AND ((inspektor.ki)=[Введите код инспектора]) AND ((statya.nsya)=[Введите номер статьи]));

Запрос 6. Перекрестный запрос.

TRANSFORM Count(protokol.nr) AS [Count-nr]

SELECT inspektor.fi, Count(protokol.nr) AS Количество

FROM inspektor INNER JOIN protokol ON inspektor.ki = protokol.ki

GROUP BY inspektor.fi

PIVOT MonthName(Month(protokol!dp));

Список литературы

1. Горев а., Ахаян Р., Макашарипов С. Эффективная работа с СУБД. – СПб.: Питер, 19997. – 704 с.

2. Дейт К. Дж. Введение в системы баз данных, 6-е издание: Пер. с англ. – К.; М.; СПб.: Издательский дом «Вильямс», 2000. – 848 с.

3. Джексон Г. Проектирование реляционных баз данных для использования с микроЭВМ: Пер. с англ. – М.: Мир, 1991. – 252 с.

4. Диго С.М. Проектирование и использование баз данных: Учебник. – М.: Финансы и статистика, 1995. – 208 с.

5. Коннолли Т., Бегг К., Страчан А. Базы данных: проектирование, реализация и сопровождение. Теория и практика, 2-е изд.: Пер. с англ.: Уч. пос. – М.: Издательский дом «Вильямс», 2000. – 1120 с.

6. Мейер Д.  Теория  реляционных  баз  данных: Пер. с англ. – М.: Мир, 1987. – 608 с.

7. Хансен Г., Хансен Д. Базы данных: разработка и управление: Пер. с англ. – М.:ЗАО «Издательство БИНОМ», 1999. – 704 с.

8. Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведений / Под ред. Проф. А.Д. Хомоненко. – СПб.: КОРОНА принт, 2000. – 416 с.

9. Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных: Учебник для высших учебных заведений / Под ред. Проф. А.Д. Хомоненко. – Издание второе, дополненное и переработанное – СПб.: КОРОНА принт, 2002. – 672 с.