Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

metoda_2013

.pdf
Скачиваний:
54
Добавлен:
03.05.2015
Размер:
6.36 Mб
Скачать

ПРАКТИЧЕСКАЯ ЧАСТЬ

Повара

ФИО

 

Блюдо

Оценка

 

Примечания

Волкова

 

Чай

5

 

 

Только

и знает,

Е.С.

 

 

 

 

 

 

 

что чаи гонять

Кузнецова

 

Суп

4

 

 

Иногда

 

 

Н.П.

 

овощной

 

 

 

пересаливает

Орлов

 

Каша

5

 

 

Отличный

И.С.

 

гречневая

 

 

 

кашевар

Орлов

 

Суп

3

 

 

А

вот

суповар

И.С.

 

овощной

 

 

 

никудышный

Петрова

 

Суп

5

 

 

Спец по щам

С.Г.

 

овощной

 

 

 

 

 

 

 

Ответственные_лица

 

 

 

 

 

 

 

ФИО

 

 

Сфера_ответственности

 

 

Зыкова А.И.

 

 

Прием продуктов

 

 

 

Зыкова А.И.

 

 

Качество блюд

 

 

 

 

 

Иванов И.И.

 

 

Переговоры с поставщиками

Иванов И.И.

 

 

Эвакуация в аварийных ситуациях

Козлова Л.О.

 

Качество блюд

 

 

 

 

 

Доступ пользователей к таблицам

 

 

 

 

 

Пользователь

Виды доступа

 

Таблицы

 

 

Guest

 

READ

 

 

Меню,

 

 

 

 

 

 

 

 

 

 

Ответственные_лица

 

User

 

READ

 

 

Меню,

Сотрудники,

 

 

 

 

 

 

 

 

Поставщики,

 

 

 

 

 

 

 

 

 

Ответственные_лица

 

Worker

 

READ

 

 

Все таблицы

 

 

Manager

 

READ

 

 

Все таблицы

 

 

 

 

 

WRITE

 

 

Меню,

Продукты,

 

 

 

 

 

 

 

 

Рецепты, Повара

 

Director

 

READ, WRITE

 

Все таблицы

 

 

Admin

 

READ,

WRITE,

 

Все таблицы

 

 

 

 

 

CREATE,

 

 

 

 

 

 

 

 

 

DROP

 

 

 

 

 

 

 

READ – просмотр записей таблицы;

WRITE – добавление, удаление и изменение записей таблицы; CREATE – создание новых таблиц;

DROP – удаление таблиц.

480

ПРАКТИЧЕСКАЯ ЧАСТЬ

SQL - запросы

Запрос к одной таблице.

Выбрать всех сотрудников столовой: SELECT * FROM Сотрудники Из всех блюд выбрать только каши:

SELECT Блюдо FROM Блюда WHERE Тип_блюда=’Каши’ Выбрать сотрудников со стажем>10 лет и сортировать их по возрасту:

SELECT * FROM Сотрудники WHERE Стаж>10 ORDER BY

Возраст

Запрос к нескольким таблицам с внутренними соединениями. Получить номера телефонов поставщиков картофеля: SELECT Поставщики.Поставщик, Телефон, Продукт

FROM Поставщики, Продукты

WHERE (Поставщики.Поставщик=Продукты.Поставщик) AND (Продукт=’Картофель’)

Запрос к нескольким таблицам с внешними соединениями. Получить рецепты с указанием наличия продуктов: SELECT Блюдо, Продукты.Продукт, Наличие

FROM Рецепты, Продукты WHERE (Рецепты.Продукт*=*Продукты.Продукт)

Сгруппированный запрос.

Получить суммарные поставки для каждого продукта: SELECT Продукт, SUM(Объем_поставки) as Itogo FROM Поставки GROUP BY Продукт

Запрос с подзапросами.

Выбрать продукт, который никто не поставляет: SELECT Продукт, Наличие FROM Продукты

WHERE NOT EXIST (SELECT * FROM Поставки

WHERE (Продукты.Продукт=Поставки.Продукт) AND (Объем_поставки>0))

Запрос на изменение групп записей по заданным условиям. Установить порцию для любой каши – 300 г.:

UPDATE Меню SET Порция=300

WHERE Блюдо IN (SELECT Блюдо FROM Блюда

WHERE Тип_блюда=’Каши’)

Транзакции.

481

ПРАКТИЧЕСКАЯ ЧАСТЬ

Удаление сотрудника:

BEGIN TRANSACTION

DELETE FROM Повара WHERE ФИО=’Петрова С.Г.’

DELETE FROM Ответственные_лица WHERE ФИО=’Петрова С.Г.’ DELETE FROM Сотрудники WHERE ФИО=’Петрова С.Г.’

END TRANSACTION

Задание на разработку программного обеспечения для БД

Необходимо создать систему, обеспечивающую управление базой данных «Столовая».

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

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

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

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

Примеры запросов к БД

Приведем примеры запросов, которые могут быть реализованы к данной БД:

к одной таблице select * from sale;

результат:

select count(*) from employees;

результат: 5

select fuel from fuel where Current_price < 10;

482

ПРАКТИЧЕСКАЯ ЧАСТЬ

результат: empty set

к нескольким с внутренними соединениями;

select employees.LastName,employees.FirstName, sale.sale_id from employees, sale where sale.employee_id= employees.employee_id and sale.quantity_sold*sale.sale_price>500;

результат:

 

 

LastName

FirstName

sale_id

Лисицина

Ольга

3

select distinct(fuel.fuel) from fuel, sale where sale.fuel_id=fuel.fuel_id;;

результат fuel

Бензин А-76 Бензин Аи-95 Бензин Аи-98 ДТ

select suppliers.supplier, delivery.quantity_delivered from delivery, suppliers where delivery.supplier_id=suppliers.supplier_id and delivery.quantity_delivered >= 300;

результат:

Supplier

quantity_delivered

Ачинский НПЗ

300

к нескольким с внешними соединениями;

select * from fuel left join sale on fuel.fuel_id=sale.fuel_id;

select * from fuel right join sale on fuel.fuel_id=sale.fuel_id;

select * from fuel full join sale on fuel.fuel_id=sale.fuel_id;

сгруппированные запросы;

select count(fuel_id), fuel_id from sale group by fuel_id;

COUNT

fuel_id

2

1

1

3

1

4

483

FirstName
Ольга

ПРАКТИЧЕСКАЯ ЧАСТЬ

1

5

select sum(quantity_sold), fuel_id from sale group by fuel_id;

SUM

fuel_id

20

1

50

3

10

4

12

5

select avg(quantity_delivered), supplier_id from delivery group by

supplier_id;

 

AVERAGE

supplier_id

100

1

300

2

100

3

100

4

запросы с подзапросами; select * from suppliers where

supplier_id=(select supplier_id from delivery where quantity_delivered=(select max(quantity_delivered) from delivery));

результат

select * from fuel where fuel_id=(select fuel_id from sale where sale_id=(select max(sale_id) from sale));

результат

select LastName, FirstName from employees where employee_id=(select fuel_id from sale where sale_id=(select max(sale_id) from sale));

результат

LastName

Лисицина

запрос на включение

insert into employees(LastName, FirstName,MiddleName) values

(‘Наумов’, ‘Константин’, ‘Леонидович’); запрос на удаление

delete from delivery where fuel_id=5;

запрос на обновление групп записей по заданным условиям; update fuel set current_price=20 where fuel_id=1;

– группы связанных между собой запросов, объединенных в транзакции.

delete from suppliers where supplier_id=3; delete from delivery where supplier_id=3;

484

ПРАКТИЧЕСКАЯ ЧАСТЬ

delete from suppliers where supplier_id=4;

update delivery set supplier_id=5 where supplier_id=4;

insert into employees(LastName, FirstName, MiddleName) values

(‘Михеев’, ‘Сергей’, ‘Сергеевич’);

select max(employe_id) from employees; (результат 5)

insert into sale(Fuel_id, Employ_id, Quantity_sold, Sale_price) values (1,5,50,23.4);

Руководство программисту.

От программиста, обслуживающего данную БД, требуется создать устойчивое к сбоям, масштабируемое программное решение, позволяющее обеспечить удобный пользовательский интерфейс, с учетом предложенной структуры разделения прав и полномочий.

В программном обеспечении к базе должны присутствовать следующие компоненты:

Формы ввода данных в таблицы, с учетом требований целостности и проверкой прав доступа.

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

485

ПРАКТИЧЕСКАЯ ЧАСТЬ

2. UML диаграммы.

Типы диаграмм UML 1.x

•Диаграмма прецедентов

•Диаграмма классов

•Диаграмма компонентов

•Диаграмма размещения

•Диаграмма состояний

•Диаграмма активности

•Диаграмма последовательности

•Диаграмма кооперации

- Диаграмма вариантов использования

(прецедентов) (use case diagram)

- Диаграмма классов (class diagram)

+ Диаграммы поведения (behavior diagrams)

-Диаграмма состояний

(statechart diagram)

-Диаграмма активности (activity diagram)

+Диаграммы

взаимодействия

(interaction diagrams)

-Диаграмма

последовательности

(sequence diagram)

-Диаграмма кооперации

(collaboration diagram)

+Диаграммы реализации

(implementation diagrams)

-Диаграмма компонентов

(component diagram)

-Диаграмма

размещения(развертывания)

(deployment diagram)

Объекты в UML

В UML имеются четыре разновидности

объектов(предметов) :

 

Object

 

структурные предметы;

 

-pos

 

 

+Destroy()

Дизайнер уровней

 

 

+Create()

 

 

Process()

+Process()

 

предметы поведения;

 

 

 

 

 

группирующие предметы;

Static

 

Objects

 

 

Использовать разработанный интрумент ­ поясняющие предметы. редактор уровней. Он дает возможность

создавать игровые уровни ­ редактировать ландфафт и размещать объекты на нем, сохранять уровни, загружать и изменять их.

Эти предметы являются базовыми объектно-ориентированными строительными блоками. Они используются для описания моделей.

486

ПРАКТИЧЕСКАЯ ЧАСТЬ

Отношения в UML

В UML имеются четыре разновидности отношений:

зависимость;

-Заказчик

-Заказ

 

 

ассоциация;

 

 

 

 

 

 

обобщение;

1

*

 

 

реализация.

 

 

 

 

 

 

Эти отношения являются базовыми строительными блоками отношений.

1.Диаграмма прецедентов.

Пример use case diagram

 

 

Трёхмерная Игровая

 

 

Система, игра “Snatch”

 

 

Играть, управлять

 

 

1..*

персонажем

 

 

1

1

 

 

 

 

 

 

1

 

 

 

 

 

Неопытный игрок

 

 

 

 

 

Установка срецэффектов

 

 

 

 

и качества рендеринга

 

 

 

 

1

 

1

 

 

 

 

 

 

*

 

 

 

 

*

 

 

 

 

Установка теней, спецэффектов,

 

 

 

 

дополнительных парметров рендеринга.

 

 

1

1..*

Редактировать

 

 

 

 

 

 

 

 

игровые уровни

 

1

 

 

*

 

 

 

 

 

Опытный игрок

 

Использовать разработанный* интрумент ­

 

 

 

 

редактор уровней. Он дает возможность

 

 

 

 

создавать игровые уровни ­ редактировать

 

 

 

ландфафт и размещать объекты на нем,

 

 

 

 

сохранять уровни, загружать и изменять их.

 

1 11

Дизайнер уровней

487

ПРАКТИЧЕСКАЯ ЧАСТЬ

2. Диаграмма классов.

Статическая структура с

группами классов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3Dobj

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-p_Verteces

 

 

 

 

 

 

 

-p_ObjVert

 

 

 

 

 

 

 

-p_Index

 

 

 

 

 

 

 

-pos

 

 

 

 

 

 

 

-dir

 

 

 

Статические

 

1..*

+Create()

 

 

 

 

 

 

 

 

 

объекты

1

+CreateFromFile()

1..*

 

 

 

 

 

 

 

 

 

 

 

+Move()

 

 

 

 

 

 

 

+Rotate()

 

1..*

 

 

+Scale()

 

 

 

*

 

 

 

 

 

 

 

+Render()

 

Object

 

 

 

Project

 

 

 

 

 

 

 

1

-pos

 

 

 

-objects : Egg

 

 

 

 

 

-foots : Foot

 

+Create()

 

 

 

 

 

 

 

-hero : Hero

 

+Destroy()

 

 

1

 

 

 

-terrain : Terrain

 

+Process()

 

 

 

1

 

 

 

-water : Water

 

 

 

 

 

 

 

 

 

 

 

+Create()

 

 

 

 

 

 

+ProcessInput()

 

 

 

1

 

 

+ProcessObjects()

1

 

 

 

 

 

+ProcessCollision()

 

 

 

 

 

 

 

 

 

 

 

+Transform3D()

 

 

Динамические

 

1

+AudioPlay()

 

 

объекты

 

+Render()

 

 

1..*

 

 

 

 

 

 

+Destroy()

 

 

 

 

 

 

 

1

Классы окружения

1..*

1..*

Классы интерфейса

1

Классы Engine

488

ПРАКТИЧЕСКАЯ ЧАСТЬ

489

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]