БД «Прокат автомобилей»

Автор работы: Пользователь скрыл имя, 07 Февраля 2014 в 09:02, курсовая работа

Краткое описание

Цель курсовой работы: Создание БД «Прокат автомобилей»
Для достижения цели были поставлены следующие задачи:
Изучить и анализировать литературу.
Ознакомиться с предметной областью
Построить ER – модель.
Охарактеризовать СУБД для реализации БД.
Построить логическую модель БД.
Разработать проект и БД.
Создать объекты (запросы, отчеты, таблицы, формы).
Определить условия целостности.
Создать справку
Создать программную оболочку
Создать инсталляционный пакет.

Содержание

Введение
Глава 1. Анализ БД
1.2 Описание предметной области
1.3 Инфологическая модель БД
1.4 Выбор СУБД
1.5 Логическое пректирование
Вывод к главе 1
Глава 2. Разработка
База данных «Прокат автомобилей»
2.1.1 Создание таблиц и заполнение их информацией
2.1.2 Создание связей между таблицами
2.1.3 Определение условий целостности данных
2.2. Создание форм, отчетов и запросов
Запросы
2.3 Обеспечение защиты от несанкционированного доступа
2.4 Создание меню проекта и программной оболочки
2.5 Создание справочной системы
2.6 Создание инсталляционного пакета
Вывод к главе 2
Список литературы

Вложенные файлы: 1 файл

Прокат автомобилей. База данных БД.docx

— 1.61 Мб (Скачать файл)




(таблица 8)

 

Вторая нормальная форма 2 НФ

Ключом отношения Клиенты (Clients) является комбинация полей (ID, Family, Dyers). Все поля не входящие в состав ключа, зависят только от идентификатора Clients. Поэтому отношение должно быть разбито на два: Клиенты и Клиенты – ФИО – Dyers Отношение Клиенты – ФИО – Dyers приведённое к 2НФ

(таблица 9)

Id

Familiya

Imya

Otchestvo

Dyers

1

Громов

Игорь

Николаевич

2

2

Ближина

Мария

Анатольевна

5

3

Тимохин

Степан

Сергеевич

6




 

 

 

 

Третья нормальная форма (3НФ)

Для отношения Клиенты (Clients)  атрибут Accidents зависит от Result, а не от ключа. Поэтому для приведения отношения к 3НФ нужно выделить из него ещё одно отношение ДТП  (таблица 10)

Id

Accidents

Result

1

0

0%

2

0

0%

3

1

5%

4

0

0%

5

0

0%

6

0

0%

7

0

0%

8

0

0%




 

 

 

 

 

 

 

 

 

 

(таблица 10) 

 

1НФ. Отношения данной БД не нарушают 1НФ, т.к. нет сложных атрибутов.

2НФ. Отношения данной БД примера не нарушают 2НФ, т.к. не ключевые атрибуты всех отношений функционально полно зависят от первичных ключей.

3НФ. Отношения данной БД нарушают 3НФ, т.к. есть транзитивные зависимости:

    1. Вынесем отдельное отношение Марка (Brand), в котором будут содержаться ID марки, название марки, фото и цена.
    2. Вынесем отношение ЦВЕТА (colors), в котором будут содержаться всевозможные цвета автомобилей: ID и название цвета.
    3. Вынесем отношение МОДЕЛИ (colors), в котором будут содержаться всевозможные цвета автомобилей: ID, ID марки (внешний ключ), вместимость и тип кузова.

Автомобили



Клиенты


ДТП


Контракты



 





Модель



 

 

 

 1.4.2. Определение дополнительных ограничений целостности

Перечислим ограничения  целостности, которые не указаны  в таблицах.

  1. Значения всех числовых атрибутов – больше 0 (или null, если атрибут необязателен).
  2. quality в cars и result в accidents не могут превышать 100, т.к. они означают %.
  3. Цвет (color) в cars – элемент списка цветов автомобилей.
  4. Год выпуска (year_of_issue) в cars не может быть меньше 1998 и не может превышать 2050.

 Денормализация

Соотношение КЛИЕНТЫ:

Рейтинг клиента и кол-во аварий лучше хранить как вычисляемые  поля, т.к. это рациональнее с точки  зрения реализации поиска постоянных клиентов и расчета скидки при  заказе.

Соотношение АВТОМОБИЛИ:

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

1.4.3. Описание групп пользователей и прав доступа

Опишем для каждой группы пользователей права доступа  к каждой таблице и к каждому  полю (атрибуту).

  1. Администратор БД: имеет доступ ко всем данным (по записи), может изменять структуру базы данных и связи между отношениями. Устанавливает права доступа для всех остальных групп.
  2. Представители администрации компании: имеют доступ по чтению ко всем данным и доступ по записи к отношениям CARS, CLIENTS, CONTRACTS, ACCIDENTS, BRANDS, MODELS.
  3. Менеджеры: имеет доступ по чтению ко всем данным. Имеют доступ по записи к отношениям CARS, CLIENTS, BRANDS, MODELS, ACCIDENTS, CONTRACTS.
  4. Сотрудники, обслуживающие заказы (могут отсутствовать): имеет доступ по чтению и записи к отношениям CLIENTS, ACCIDENTS, CONTRACTS.
  5. Сотрудники, обслуживающие автомобили: имеют доступ по чтению к CARS и MODELS.

Вывод к главе 1

Выполнив главу 1, я понял что, базы данных это средство для организации  оптимизированного хранения, выборки  и представления информации. Программное  обеспечение, предназначенное для  организации и ведения баз  данных – это Система Управления Базами Данных. Таблицы составляют основу нашей БД. В них храниться  вся необходимая информация. Для  работы оптимальной СУБД является Visual FoxPro 9.0.

 

 

 

 

 

Глава 2. Разработка

Базы Данных «Прокат Автомобилей»

2.1 Проектирование  БД.

При разработке БД «Прокат автомобилей» были созданы следующие таблицы, которые осуществляют информационную поддержку БД «Прокат автомобилей»:

  • Автомобили
  • Клиенты
  • Контракты
  • ДТП
  • Модели

Для начала создания БД «Прокат автомобилей», с помощью СУБД FoxPro

Необходимо  запустьить приложение Microsoft Visual FoxPro. После программы в меню File, нужно кликнуть кнопку NEW. В результате появится окно New, в нем нужно выбрать вкладку Project. Будет предложено два варианта создания проекта: Вручную, либо же с помощью мастера. Выбираем вариант Wizard (с помощью мастера).

Для создания проекта с помощью мастера, требуется  выполнить следующие действия:

В меню File выберите команду New (рис.1)

Рис. 1. Новый  проект

Откроется диалоговое окно New, в котором нужно выбрать опцию Project и нажать кнопку Wizard.

Далее в  поле ввода Project name необходимо задать имя создаваемого проекта, а в поле ввода Project file указать его расположение. Для выбора папки, в которой вы хотите разместить прект, можно использовать кнопку Browse, открывающую диалоговое окно, позволяющее найти на компьютере необходимую папку. При этом ставим флажок Create project directory structure, который позволяет автоматически создать в указанной папке проекта специализированные папки. На данном этапе создается База Данных (рис. 2)

Рси.2 Создание проекта

После определения  имени файла и его расположения нажмите кнопку ОК для создания нового проекта. Мастер переходит к созданию нового проекта, и на экране появляется диалоговое окно построителя приложения Application Builder (рис. 3)

Рис.3. построитель  изображения

Диалоговое  окно содержит следующие вкладки:

General – основные параметры создаваемого проекта

Credits – информация об авторах проекта.

Data – Параметры создания баз данных и таблиц.

Form – информация о формах, входящих в проект.

Reports -  информация об отчетах, входящих в проект.

Advanced – параметры создания справочной системы, меню проекта.

2.1.1 Создание таблиц и заполнение  их информацией.

Следующим этапом проектирования базы данных является создание таблиц. Для того чтобы  создать таблицы  необходимо в  окне Projet Manager выбрать вкладку Data, которая содержит ветви для работы с источниками данных, внеё входят базы данных, таблицы, свободные таблицы и запросы.

Ввыбрав вкладку New Table, создаем новую таблицу.  Таблица может находиться в двух режимах:

    • В режиме Modify, где указывается название полей их типы и размеры, а также определяется тип индекса. (Рис. 4)
    • В режиме Drowse, предназначенный для заполнения таблицы  текстовой информацией. Для того чтобы ввести в таблицу данные нужно воспользоваться сочетанием клавиш CTRL+Y.

Следующим шагом  станет создание таблиц в базе данных «Прокат автомобилей» Таблицы эти  уже продуманны на этапе «логического проектирования» и нам остается только перенести их в созданную  базу данных. Начнем с сущности «Автомобили». Для этого создадим пустую таблицу  и присвоим ей поля соответсвующии атрибутам сущности «Автомобили».

      • номер машины в базе
      • номер модели в базе
      • цвет автомобиля
      • статус
      • регистрационный номер авто

 Рис.4. Поля  таблицы Автомобили

Как видно по рисунку 4, каждому полю, мы присваиваем тип хранимых в нем данных (колонка Type) и размер его поля (Width).

Для полей, которые  будут связывать наши таблицы, необходимо задать индексы (ключи) (рис.5). В таблице  автомобили (cars) такими полями будут:

    • ID (номер машины в базе) – первичный ключ. Это поле основное в таблице, по индексу которого таблица «Автомобили», будет связанна с таблицей «Контракты»
    • Model id (номер модели в базе) – вторичный ключ. Используется для связи с сущностью «Модели».

Рис.5. индексы таблицы «Автомобили».

 

Далее заполняем  текстовой информацией таблицу  «Автомобили» (рис. 6).

Рис. 6. Заполнение текстовой информацией таблицы  «Автомобили»

Те же действия проделали с оставшимися сущностями.

Создадим  таблицу «Клиенты» и заполним её полями(установив в них необходимые  типы данных) (Рис. 7)

Рис.7. Поля таблицы  «Клиенты»

Рис.8. Индексы  таблицы «Клиенты»

 

Заполним  таблицу «Клиенты» записями (рис.9)

Рис.9. Заполнение таблицы  «Клиенты»

Следующей создадим таблицу «Контракты»  » и заполним её полями(установив  в них необходимые типы данных) (Рис. 10)

  • номер контракта  - первичный ключ. Это поле основное в таблице
  • ДАТА ЗАКЛЮЧЕНИЯ КОНТРАКТА
  • ДАТАТ ОКОНЧАНИЯ КОНТРАКТА
  • номер клиента в базе - вторичный ключ. Используется для связи с сущностью «Клиенты».

 

  • номер машины - вторичный ключ. Используется для связи с сущностью «Автомобили».
  • Длительность аренды
  • Цена аренды/сутки

Рис.10. Поля таблицы «Контракты»

Рис.11. Индексы  таблицы «Контракты»

Рис.12. Заполнение таблицы  «Контракты»

Следующей создадим таблицу «ДТП»  » и заполним её полями(установив  в них необходимые типы данных) (Рис. 13)

 

Рис.13. Поля таблицы «ДТП»

Рис.14. Индексы таблицы «ДТП»

Рис.15. Заполнение таблицы  «ДТП»

В результате мы получаем пять таблиц (рис. 16)

Рис.16. БД»Прокат автомобилей».

2.1.2. Создание связей между таблицами.

Связать таблицы на FoxPro очень просто, но такая возможность должна быть заранее предусмотрена. Созданые нами таблицы, хотя и находяться в одной базе данных, по сути, ни как не связанны друг с другом и могут предоставить информацию, содержащуюся только в каждой по отдельности. Однако этого не доставточно для дальнейшей разработки базы данных и правильной работы формы, отчетов и запросов. Сначала следует соединить созданные таблицы, посредством связи (Рис.17).

Между таблицами  «Клиент» и «Контракты» создаем  связь один ко мноким, ткак как один клиент может заключить несколько контрактов.

Между таблицами «Контракты» и «ДТП» создаем связь один ко многим, т.к по одному контраку может быть несколько ДТП.

Между таблицами  «Автомобили» и «Модели» создаем  связь многие к одному, т.к много машин может быть одной модели.

В таблице  «Контракты» и «Автомобили» связь  многие к одному т.к много контрактов может быть на одну машину .

Рис.17. БД «Прокат автомобилей» со связями.

Установленные отношения между  таблицами могут быть использованы для создания целостности данных.

2.1.3. Определение условий целостности  данных.

Целостность данных является одним из самых важных требований, предъявляемых к базам  данных.

Целостность (от англ. Integrity – нетронутость, неприкосновенность, сохранность, цеостность) – понимается как правильность данных в любой момент веремени.

Для каждого  действия (обновления, удаления и вставки) отведена отдельная вкладка, на которй перечисленнны доступные варианты поведения. При обновлении ключевого значения в родительской таблице можно применить следующие правила поведения.

    • Cascade (Последовательно выполнить). При выборе этой опции обновляются все дочерние записи в соответствии с новыми значениями ключа в родительской таблице, если у них совпадало старое значение «родительского ключа».
    • Restrict (Ограничить). Если в дочерней таблице есть связанные записи (т.е существуют записи с текущим значением родительского ключа), то FoxPro запрещает обновление родительского ключа.
    • Ignore (Игнорировать). При выборе данной опции система прекращает следить за соблюдением правил ссылочной целостности и разрешает обновление родительского ключа независимо от наличия связанных записей в дочерних таблицах.

При оформлении целостности данных в БД «прокат  автомобилей» использовались свойства «Cascade»  и «Restrict», т.к вся информация  в базе данных тесно связанна между собой и необходимо её хранение после удаления значений. Например, если клиент был удален, то информация о нем должна оставаться. (рис.18)

Информация о работе БД «Прокат автомобилей»