- •Введение
- •1. Описание предметной области
- •2. Проектирование базы данных
- •2.1. Этап концептуального проектирования
- •2.1.1. Описание сущностей
- •2.1.2. Описание связей
- •2.1.3. Концептуальная модель данных в стандарте Чена
- •2.2. Этап логического проектирования
- •2.3 Этап физического проектирования
- •3. Запросы к бд
- •Заключение
- •Список литературы
2.2. Этап логического проектирования
2.2.1. ER-диаграмма в среде ERwin
Когда концептуальное проектирование завершено, необходимо выполнить переход к следующему шагу, учитывая наработки, произведенные в предыдущих пунктах. Таким шагом, является создание логической модели данных.
Для создания логический моделей существует множество средств. Мой выбор пал на Case-средство Erwin, так как он обеспечивает быстрое, удобное, а главное, эффективное создание логической модели.
Erwin - CASE-средство для проектирования и документирования баз данных, которое позволяет создавать, документировать и сопровождать базы данных, хранилища и витрины данных. Модели данных помогают визуализировать структуру данных, обеспечивая эффективный процесс организации, управления и администрирования таких аспектов деятельности предприятия, как уровень сложности данных, технологий баз данных и среды развертывания.
После построения, согласно концептуальной модели, логическая модели принимает вид:
Анализ ER-диаграммы.
1. Составные атрибуты – нет
2. Многозначные атрибуты – нет
3. Производные атрибуты –
Накладная(сумма)
4. Связь 1:1 - нет
5. Рекурсивная связь – нет.
6. Избыточные связи:
1.мастер обслуживает клиента
2.мастер выполняет работу
3.мастер ремонтирует мотоцикл
4.мастер использует материалы
5.клиент принадлежит мотоцикл
6.клиент приобретает материалы
7.услуга применяется к мотоцикл
8.в накладной указываются материалы
9.мотоцикл использует материалы
7. Связь M:M – нет
Итоговый вариант логической диаграммы выглядит так:
2.3 Этап физического проектирования
Схема данных в среде выбранной СУБД
В качестве СУБД мной была выбрана СУБД Microsoft Access 2010. Приложение Microsoft Access 2010 исключительно удобно в использовании благодаря готовым шаблонам и эффективным средствам, которые сохраняют свою важность по мере увеличения объема данных.
Access 2010 позволяет эффективно работать с данными даже пользователям, не являющимся специалистами по базам данных. Кроме того, новые веб-базы данных расширяют возможности приложения Access, упрощая отслеживание сведений, их совместное использование и составление отчетов.
С помощью СУБД Microsoft Access 2010 мной была разработана следующая физическая модель базы данных:
Как мы видим, физическая модель построена в соответствии с ранее разработанной логической моделью. Сохранены все логические связи и параметры, заданные в концептуальных и логических моделях.
3. Запросы к бд
1. Запрос, какие мотоциклы присутствуют у клиентов.
SQL-текст:
SELECT Клиенты.Код_клиента, Клиенты.Фамилия, Клиенты.Имя, Мотоциклы.Код_мотоцика, Мотоциклы.Марка, Мотоциклы.Модель
FROM Клиенты INNER JOIN Мотоциклы ON Клиенты.Код_клиента = Мотоциклы.Код_клиента;
Результат:
2. Запрос, какие работы заказали клиенты.
SQL-текст:
SELECT Клиенты.Код_клиента, Клиенты.Фамилия, Клиенты.Имя, Работа.Код_работы, Работа.Наименование
FROM Работа INNER JOIN ((Клиенты INNER JOIN Мотоциклы ON Клиенты.Код_клиента = Мотоциклы.Код_клиента) INNER JOIN Накладная ON Мотоциклы.Код_мотоцика = Накладная.Код_мотоцикла) ON Работа.Код_работы = Накладная.Код_работы;
Результат:
3. Запрос, работы мастера «Звягинцев».
SQL-текст:
SELECT Мастера.Код_мастера, Мастера.Фамилия, Мастера.Имя, Работа.Код_работы, Работа.Наименование
FROM Работа INNER JOIN (Мастера INNER JOIN Накладная ON Мастера.Код_мастера = Накладная.Код_мастера) ON Работа.Код_работы = Накладная.Код_работы
WHERE (((Мастера.Фамилия)='Звягинцев'));
Результат:
4. Запрос, с кем из клиентов работал каждый мастер.
SQL-текст:
SELECT Клиенты.Код_клиента, Клиенты.Фамилия, Клиенты.Имя, Мастера.Код_мастера, Мастера.Фамилия, Мастера.Имя
FROM Клиенты INNER JOIN (Мотоциклы INNER JOIN (Мастера INNER JOIN Накладная ON Мастера.Код_мастера = Накладная.Код_мастера) ON Мотоциклы.Код_мотоцика = Накладная.Код_мотоцикла) ON Клиенты.Код_клиента = Мотоциклы.Код_клиента;
Результат:
5. Запрос, сумма дохода по клиентам.
SQL-текст:
SELECT Клиенты.Код_клиента, Клиенты.Фамилия, Клиенты.Имя, Sum(Накладная.Сумма) AS [Sum-Сумма]
FROM (Клиенты INNER JOIN Мотоциклы ON Клиенты.Код_клиента = Мотоциклы.Код_клиента) INNER JOIN Накладная ON Мотоциклы.Код_мотоцика = Накладная.Код_мотоцикла
GROUP BY Клиенты.Код_клиента, Клиенты.Фамилия, Клиенты.Имя;
Результат:
6. Запрос, телефонный справочкик.
SQL-текст:
SELECT
Фамилия, Имя, Отчество, Телефон, "Клиент" as Тип_персоны
FROM Клиенты
UNION
SELECT Фамилия, Имя, Отчество, Телефон, "Мастер" as Тип_персоны
FROM Мастера;
Результат:
