bill_id
(int)
|
bill_tickets
(int)
|
member_id
(int)
|
employee_id
(int)
|
bill_time
(timestamp)
|
PK
|
|
|
|
|
bill_tips
(int)
|
bill_total
(int)
|
bill_status
(varchar)
|
bill_method
(varchar)
|
2.3
Проектирование диаграммы "сущность-связь" в Enterprise Architect
Для наглядности предметной области была спроектирована
диаграмма БД "сущность-связь" с применением графических средств
отображения модели. Очень важным свойством модели "сущность-связь"
является то, что она может быть представлена в виде графической схемы. Это
значительно облегчает анализ предметной области.
В качестве средства визуализации был использован программный
продукт EA 12. Сначала были созданы таблицы проектируемой БД. Затем были
добавлены атрибуты с выделением первичных ключей и присвоением ограничения
"NOT NULL" для некоторых атрибутов. Напоследок средствами EA была проведена
визуализация полученной базы данных с последующим нанесением связей между
таблицами. На рисунке 3 наглядно показан процесс проектирования таблиц с
помощью встроенного инструмента Database Builder. В приложении A.1 показана итоговая
физическая схема БД.
Рисунок 3 - проектирование таблиц базы данных в EA
2.4
Подготовка диаграммы "сущность-связь" в Enterprise Architect к
переносу на целевую СУБД
В процессе подготовки диаграммы БД "сущность-связь"
к переносу на целевую СУБД MySQL был автоматически сгенерирован SQL-код. Во встроенном
инструменте EA Database Builder в опциях главного элемента MySQL (открытие меню правой
кнопкой мыши) был выбран пункт "Generate DDL". Затем в меню
сохранения схемы в формате SQL были выбраны все таблицы БД и путь к сохранению
файла. При нажатии кнопки "Generate" сгенерированный SQL-код сохранился на
компьютере. Таки образом диаграмма сущность-связь была подготовлена к переносу
на целевую СУБД.
2.5 Создание
базы данных в MySQL. Перенос схемы из Enterprise Architect
Целевой СУБД, предназначенной для реализации базы данных
системы OpenPOS является реляционная СУБД MySQL 5.1.73. Основным
преимуществом MySQL является простота отладки работы существующей структуры данных со
сторонним программным продуктом, что является наиболее важным пунктом в
успешной реализации информационных систем.
Операционной системой, на которой расположен MySQL является CentOS 6 - дистрибутив
семейства Linux. Основное преимущество CentOS - широкий спектр возможностей и способность быть
компонентом реализации отказоустойчивых систем, что очень важно с точки зрения
выбора программной платформы для разрабатываемой ИС.
База данных на основе SQL кода была создана с
помощью командной оболочки bash. Стоит отметить команды выбора кодировки данных
по умолчанию. Одной из проблем баз данных программного обеспечения является
распознавание данных на русском языке. В MySQL по умолчанию стоит
кодировка latin1, не распознающая кириллицу. Поэтому сразу после создания базы
тип кодировки был изменен на UTF-8.
cd /opt- u root - pDATABASE openposCHARACTER SET
utf8COLLATE utf8_general_ci;openpos- u root - p openpos < database. sql
Листинг 1 - создание базы данных в MySQL
2.6 Начальное
заполнение базы данных
После создания БД с последующим добавлением таблиц РСУБД MySQL появилась совокупность
структурированных и связанных между собой таблиц, но данные до сих пор
отсутствуют Следующей задачей является заполнение созданной БД значениями.
Существуют несколько способов добавления записей в таблицы. В
данной задаче наиболее целесообразным выглядит загрузка записей из текстового
файла (команда LOAD DATA LOCAL INFILE). Для этого для каждой таблицы необходимо
создать отдельный текстовый файл, записать в него данные в специальном формате
и загрузить данные из файла в таблицу при помощи командной строки MySQL. Для добавления записи о
модуле достаточно выполнения команды INSERT.
Для начального заполнения базы данных были созданы 11
текстовых файлов, содержащих информацию для таблиц, соответствующую текстовым
файлам. Затем был создан SQL-скрипт, состоящий из нескольких команд
добавления данных из файла в таблицы. В листинге 2 указан скрипт,
использованный для заполнения БД.
USE openpos;
Листинг 2 - SQL-скрипт заполнения БД
На рисунке показан результат работы одной из команд. В общей
комплексности в каждую таблицу было добавлено 10 записей.
Рисунок 4 - результат работы команды LOAD DATA в таблице employee_address
2.7 Создание
диаграммы средствами phpMyAdmin
Для проверки эффективности реализованной модели предметной
области необходимо проверить ее графическое отображение. Таким образом мы можем
убедиться, что спроектированная БД не имеет ошибок. Графическое представление
данных - это наиболее наглядное изображение полученного распределения
результатов исследования. Оно дает возможность с одного взгляда определить
структуру и состав изучаемой совокупности, структурные сдвиги, тенденции
изменений при переходе от одних значений переменных к другим и т.д.
Для графического отображения реализованной базы данных нужно
повторно построить диаграмму "сущность-связь". Для этой цели в MySQL используется Web-приложение
администрирования БД phpMyAdmin. В данной курсовой работе приложение phpMyAdmin запускается через
локальный хост, имеющий доступ ко всем БД в MySQL.
Для запуска интерфейса phpMyAdmin
необходимо зайти на адрес <#"872041.files/image005.gif">
Рисунок 5 - интерфейс управления БД в phpMyAdmin
В приложении А.2 представлена диаграмма спроектированной БД openpos.
2.8 Выводы по
разделу
Основной целью данного раздела являлось моделирование
предметной области и её внедрение в рабочий процесс. Были описаны общие
сведения о моделировании предметной области, этапы моделирования области.
Разработана схема БД, описаны сущности, атрибуты, первичные и внешние ключи, а
также связи между таблицами. Посредством инструмента графической визуализации EA была спроектирована
диаграмма "сущность-связь", на основании которой автоматически
сгенерирован SQL-код создания таблиц. С помощью данного кода схема БД была
перенесена из EA в РСУБД MySQL, находящуюся в Linux-дистрибутиве CentOS 6. Таблицы созданной БД
были заполнены данными из текстовых файлов. Отредактированная БД была повторно
визуализирована в виде диаграммы с помощью phpMyAdmin.
Основные навыки, полученные в данном разделе курсовой работы:
) формирование знаний, необходимых для моделирования
предметной области, в частности, понимание, в каких случаях применяется
моделирование предметной области;
2) умение описывать требования к разрабатываемой системе
на основе модели с использованием UML;
) понимание основ построения реляционных баз данных;
) умение проектировать структуры данных на основе
модели предметной области.
3. Создание и
запуск базовых запросов SQL
3.1 Общие
сведения о базовых запросах SQL
В процессе выполнения данного раздела к
разработанной БД информационной системы "Библиотека.ru" были
применены базовые запросы языка SQL.
Для этого на компьютере с установленным
MySQL необходимо запустить клиента mysql, в окне которого можно вводить команды
SQL. Команды SQL не чувствительны к регистру, но традиционно они набираются
прописными буквами.
Структурированный язык запросов (Structured Query Language) -
стандарт коммуникации с базой данных, который поддержан ANSI. Самая последняя
версия - SQL-99, хотя новый стандарт SQL-200n уже находится в разработке.
Большинство баз данных твердо придерживается стандарта ANSI-92. Было много
обсуждений по поводу введения более современных стандартов, но изготовители
коммерческих баз данных отклоняются от этого, развивая свои новые концепции
манипуляции хранимыми данными. Почти каждая отдельная база данных использует
некоторый уникальный набор синтаксиса, хоть и очень сильно подобного стандарту
ANSI. В большинстве случаев, этот синтаксис является расширением базового
стандарта, хотя бывают случаи, когда такой синтаксис приводит к различным результатам
для разных баз данных. Всегда неплохой идеей будет просмотр документации к базе
данных, особенно, если получаются неожиданные результаты.
В общих терминах, "SQL база данных" является общим
названием для реляционной системы управления базами данных (РСУБД). Для
некоторых систем, "база данных" также относится к группе таблиц,
данных, конфигурационной информации, которые являются неотъемлемо отдельной
частью от других, подобных конструкций. В этом случае, каждая инсталляция SQL
базы данных может состоять из нескольких баз данных. В других системах, они
упомянуты как таблицы.
Есть четыре основных типа запросов данных в SQL, которые
относятся к так называемому языку манипулирования данными (Data Manipulation
Language или DML): SELECT - выбрать строки из таблиц; INSERT - добавить строки
в таблицу; UPDATE - изменить строки в таблице; DELETE - удалить строки в
таблице.
3.2 Выборка
данных
Для извлечения записей из таблиц в SQL определен оператор
SELECT. С помощью этой команды осуществляется не только операция реляционной
алгебры "выборка" (горизонтальное подмножество), но и предварительное
соединение (join) двух и более таблиц, которое рассмотрено в 4 главе данной
курсовой работы.
Для операции выборки в БД openpos можно использовать любую
таблицу, т.к. ни одна из таблиц не является пустой. Например, отсортируем
список сотрудников в таблице employee_info по дате рождения.
SELECT * FROM employee_info ORDER BY
employee_birthday DESC;
Листинг 3 - сортированная выборка записей
Одним из предполагаемых SELECT-запросов к базе будет
выявление неоплаченных счетов за услуги предприятия. Результат выполнения команды показан на рисунке 6.bill_id,
member_id, employee_id, bill_total, bill_time FROM bills_info WHERE
bill_status=’doesn`t paid’;
Листинг 4 - выборка по условию
Рисунок 6 - результат выполнения команды SELECT в БД openpos
Также можно выбрать статистику сотрудников, имеющих статус
военнообязанных на территории РФ.
SELECT * FROM employee_military WHERE
employee_mil_status IS NOT NULL;
Листинг 5 - выборка значений по внешнему ключу
3.3
Добавление данных
Оператор INSERT применяется для добавления информации в базу
данных. Более часто запросы на добавление записей в БД openpos будут направляться
таблицу tickets, так как происходит постоянное обслуживания клиентов путем
генерации итогового счета на основе ценников в меню ресторана. Предполагается
автоматизация расчета клиентов. На рисунке 7 показан результат работы команды INSERT.
INSERT INTO tickets VALUES (932, 1, 1, 50);
Листинг 7 - добавление информации о новом акте выдачи книги в
таблицу rent
Рисунок 7 - результат добавления записи в таблицу tickets.
Также присутствует необходимость в добавлении новых
владельцев дисконтных карт. Запрос будет заключаться в добавлении персональных
данных о пользователе командой INSERT.
INSERT INTO membership VALUES (11, Shilyn,
Kirill, 0.1, active);
Листинг 7 - добавление нового пользователя в таблицу
3.4
Обновление справочных данных
Оператор UPDATE применяется для обновления информации в базу
данных. Обычно обновление справочных данных применяется для изменения группы
записей, объединенных конкретным условием. БД openpos имеет справочные данные
в таблице employee_paperwork, где хранятся идентификаторы документов, требуемых трудовым
законодательством РФ. Например, один из сотрудников сменил паспорт и теперь
нужно изменить номер паспорта в базе. Результат выполнения команды показан на
рисунке 8.
UPDATE employee_paperwork SET employee_passport=5609911911 WHERE employee_id=5;
Листинг 8 - обновление данных о книжном издательстве
Рисунок 8 - результат обновления записей.
3.5 Удаление
данных
Оператор DELETE применяется для удаления информации из базы
данных. Обычно удаление данных применяется либо для освобождения памяти под
свежие записи (динамические записи), либо в том случае, если какая-либо
информация больше не является актуальной (статические данные). В БД openpos нужно стереть запись об
аккаунте работника, уволившегося из организации. На рисунке 9 показан результат
выполнения команды.
DELETE FROM employee_info WHERE employee_lname=’Novikov’;
Листинг 9 - удаление записи о работнике/пользователе системы
Рисунок 9 - результат удаления записей из БД openpos.
3.6
Применение табличных функций SQL
Встроенные табличные функции языка SQL служат для получения
более точных результатов выборки команды SELECT. В данном разделе
показано применение таких табличных функций, как CONCAT (объединение значений),
и CASE (добавление значений в
зависимости от выполнения условия).
В БД openpos можно с помощью функции CASE охарактеризовать
состояние банковских карт сотрудников по сроку истечения и выделить из них те,
которые необходимо заменить в скором времени. На рисунке 10 показаны результаты работы запроса.employee_id,
employee_card_exp, (CASE employee_card_exp WHEN employee_card_exp <
'2017-01-01' THEN 'expiring' ELSE 'non-expiring' END) AS 'state' FROM
employee_account ORDER BY 3 DESC;
Листинг 10 - применение оператора CASE
Рисунок 10 - результат выполнения функции CASE.
Можно более наглядно показать данные о сотрудниках
организации, объединив их имена, отчества и фамилии в одну строку функцией CONCAT, а также вывести полную.
На рисунке 18 показаны результаты работы запроса.CONCAT (employee_fname,
‘ ‘, employee_mname, ‘ ’, employee_lname) AS ‘Full name’, employee_position
FROM employee_info;
Листинг 11 - применение функции CONCAT
Рисунок 11 - результат выполнения функции CONCAT.
3.7
Применение скалярных функций SQL
Скалярные функции SQL предназначены для подсчета максимальных,
минимальных, средних значений атрибутов, количества значений по определенному
параметру и суммы их значений. Особенность скалярных функций в том, что они
всегда возвращают только одно значение. В данном разделе показано применение
функций MAX (максимальное значение) и COUNT (подсчет среднего
значения).
В БД openpos функцию COUNT можно применить для
подсчета в таблице books количества заказов (tickets) на один счет. На рисунке 12 показаны результаты работы запроса.bill_id,
COUNT (ticket_id) AS ‘Tickets’ FROM bills_components GROUP BY bill_id;
Листинг 12 - применение скалярной функции COUNT
Рисунок 12 - результат выполнения функции COUNT.
Также в БД openpos можно использовать функцию MAX для просмотра величины
самого дорогого счета. На рисунке 13 показаны результаты работы запроса.
SELECT MAX (bill_price) AS Bill record' FROM bills_info;
Листинг 13 - применение функции MAX
Рисунок 13 - результат выполнения функции MAX.
3.8 Выводы по
разделу
Основной задачей данного раздела курсовой работы являлось
анализ сущности базовых запросов языка SQL, освоение и применение
базовых запросов языка SQL, направленных на работу с одной таблицей. В
разделе показаны как DML-команды (выборка данных из таблицы,
использование табличных и скалярных функций), так и DDL-команды (добавление
записей в таблицу, удаление записей из таблицы, обновление отдельных значений в
записях таблицы). В приложении Б.2 находится скрипт базовых запросов SQL, выполненный в БД openpos.
4. Создание и
запуск комплексных запросов SQL
4.1 Общие
сведения о комплексных запросах SQL
Под комплексными запросами языка SQL подразумеваются запросы,
которые могут обрабатывать несколько элементов данных одновременно, а именно:
соединение, группировка, агрегация из разных таблиц в одну сводную структуру
данных. Комплексные запросы нужны для создания более масштабных операций,
манипулирующих значениями БД. В данном разделе рассматриваются такие запросы,
как выборка из таблиц-объединений, подзапросы команды SELECT, а также работа с
таблицей как с атомарной структурой: создание дополнительных таблиц, изменение
формата таблиц и удаление целых таблиц из БД. Также описываются понятие
индексации и принципы работы с индексами.
Например, можно выполнить запрос с использованием внутреннего
объединения, результатом которого будет соотношение личных данных владельцев
дисконтных карт заведения общественного питания (имя, фамилия) к сделанным
заказам. На рисунке 14 показан результат запроса.
SELECT bi. bill_id, m. member_fname, m. member_lname, menu. item_name, bi. bill_status;
FROM bill_info biJOIN membership m ON bi.
member_id=m. member_idJOIN bills_components bc ON bc. bill_id=bi. bill_idJOIN
tickets t ON t. ticket_id=bc. ticket_idJOIN menu_items menu ON menu. item_id=t.
item_idBY m. member_id;
Листинг 14 - создание объединений таблиц для выборки
Рисунок 14 - результаты запроса из нескольких таблиц.
4.3
Применение подзапросов
Запрос находящийся внутри другого запроса называется
подзапросом. Подзапрос возвращает значение, которое будет использоваться в
основном запросе. Использования подзапросов, есть использования по очереди двух
запросов, сперва получаем данные из подзапроса, а затем используем эти данные в
качестве данных основного запроса.
В БД openpos подзапрос можно применить в таблице bills_info. Например, можно
отобразить информацию о счетах, включающих более 1 заказа. На рисунке 15 показаны результаты работы запроса.bill_id,
bill_time, bill_total, bill_status, bill_method FROM bills_info WHERE bill_id
IN (SELECT bill_id FROM bills_components, COUNT (ticket_id) AS ‘quantity’ WHERE
quantity > 1 GROUP BY bill_id);
Листинг 15 - подзапрос
Рисунок 15 - результаты использования подзапроса.
4.4 Создание
таблиц в базе данных
Процесс создания новых таблиц в базе данных является очень
важным в процессе улучшения проекта или, проще говоря, работы над ошибками,
когда нужно учесть дополнительную информацию при работе реализуемого проекта. В
SQL таблицы создаются с
помощью команды CREATE TABLE. Обязательным элементом команды CREATE TABLE
является только сам оператор CREATE TABLE и имя таблицы, но обычно помимо этого
определяются также некоторые поля или другие аспекты таблицы.
В рамках данного подраздела в БД openpos создана дополнительная
таблица menu_ingredients, позволяющая вести учет ингридиентов, необходимых для
приготовления описанных в меню блюд. Атрибутами данной таблицы являются ID блюда (item_id), играющий роль внешнего
ключа, связывающего таблицу с другой таблицей menu_items, ID ингредиента (ingredient_id) как первичный ключ, его
имя и итоговая цена (ingredient_name, ingredient_price). На рисунке 16 показана структура созданной
таблицы.
CREATE TABLE menu_ingredients
(
item_id INT NOT NULL,_id INT NOT NULL,_name
VARCHAR (20),_price INT NOT NULL,KEY (ingredient_id),KEY (item_id) REFERENCES
menu_items (item_id)
);
Листинг 16 - создание таблицы
Рисунок 16 - структура таблицы, созданной в БД openpos
4.5 Изменение
формата таблиц в базе данных
Как бы тщательно не планировалась структура таблицы, иногда
возникает необходимость внести в нее некоторые изменения. Специальная команда
ALTER TABLE предназначена для модификации структуры таблицы. С ее помощью модно
изменять свойства существующих столбцов, удалять или добавлять в таблицу
столбцы, а также управлять ограничением целостности как на уровне столбца, так
и на уровне таблицы.
В БД openpos в соответствии с добавленной таблицей menu_ingredients, хранящей сведения об
ингредиентах меню, добавляется атрибут ingredient_quantity, описывающий количество
единиц ингредиента, необходимых для приготовления блюда. Данная информация
может быть использована в качестве памятки поварам, работающим в заведении
общественного питания. На рисунке 17 показана структура отредактированной
таблицы.
ALTER TABLE menu_ingredients ADD COLUMN ingredient_quantity INT;
Листинг 17 - добавление нового атрибута в таблицу
Рисунок 17 - структура отредактированной таблицы call_status
4.6 Удаление
таблиц из базы данных
Обычно с таблицей в базе данных помимо самой информации,
хранящейся в базе, связано несколько объектов, например, индекс, создаваемый
первичным ключом, или ограничение, налагаемое на столбцы таблицы. При удалении
таблицы РСУБД автоматически удаляет и любой связанный с ней индекс. Для
удаления таблицы из БД необходимо выполнить команду DROP TABLEВ БД openpos удалена таблица menu_ingredients, созданная в данном
разделе.
DROP TABLE menu_ingredients;
Листинг 18 - удаление таблицы
4.7
Применение индексов в базе данных
Индекс используется для быстрого доступа к определенному
содержимому таблицы базы данных. Индекс представляет собой структуру, в которой
упорядочены значения одного или нескольких столбцов таблицы базы данных.
В SQL индексы создаются командой CREATE INDEX. Для создания индексов
атрибутов, каждое значение которых уникально, можно воспользоваться командой CREATE UNIQUE INDEX. При создании
уникального индекса атрибута СУБД запретит добавлять повторяющиеся значения в
индексируемый атрибут.
В данной БД наиболее предпочтительным выглядит использование
индексов в таблице employee_info для поиска работника в общей базе по его фамилии, а также в
таблице menu_items, где предполагается поиск определенного блюда по его названию.
CREATE INDEX ind_employee ON employee_info
(employee_lname);INDEX ind_dish ON menu_items (item_name);
Листинг 19 - создание индексов
Удаление индексов выполняется с помощью команды DROP INDEX. Данная операция была
применена для всех индексов, созданных в ходе написания данного раздела.
ALTER TABLE employee_info DROP INDEX
ind_employee;TABLE menu_items DROP INDEX ind_dish;
Листинг 20 - удаление индексов из таблиц
4.8 Выводы по
разделу
Основной задачей данного раздела являлось ознакомление с
комплексными SQL-запросами к предметной области. В данном разделе рассмотрены
несколько комплексных запросов: выборка из таблиц-объединений, подзапросы,
создание, редактирование и удаление дополнительных таблиц. Также описаны
понятие индексации, принципы работы с индексами. В приложении Б.3 находится SQL-скрипт, в котором
собраны комплексные запросы к разработанной БД openpos.
5. Создание и
использование представлений
5.1 Общие
сведения о представлениях
Представления (view) - это одно из мощных средств языка SQL,
предназначенное для реализации механизм подсхем пользователей базы данных.
Представления позволяют скрыть от пользователей схему базы данных. Они представляют
собой хранимые в базе данных запросы, выраженные операторами SELECT. На базе
одних представлений могут быть созданы новые представления, которые наследуют
все свойства базовых представлений. Формировать представления могут
пользователи с привилегиями SELECT для используемых в представлениях таблиц
(базовых таблиц).
В данном разделе рассматривается создание представлений,
процесс манипуляции данными из представлений (выборка данных), а также удаление
представлений из базы данных.
5.2 Создание
представлений в базе данных
Представления создаются с помощью команды CREATE VIEW. Структура и хранимые
сущности БД openpos позволяют создать несколько представлений для конечного
отображения в пользовательском интерфейсе информационной системы OpenPOS. Например, можно создать
представление, в котором будут ФИО сотрудников и их адрес. Данное представление
покажет наглядную информацию о местах проживания каждого сотрудника
организации. На рисунке 18 показана структура созданного представления.
CREATE VIEW employee_place AS
SELECT ei. employee_id, CONCAT (ei.
employee_fname, ‘ ’, ei. employee_mname, ‘ ’, ei. employee_lname) AS
‘Employee’, CONCAT (ea. city, ‘ ‘, ea. street, ‘ ‘, ea. home, ‘ ‘, ea. apt) AS
‘Address’employee_info ei INNER JOIN employee_address ea ON ea. employee_id=ei.
employee_id ORDER BY ei. employee_id;
Листинг 21 - создание представления данных из нескольких
таблиц
Рисунок 18 - структура представления, созданного в БД openpos.
Также можно создать представление в виде сводной таблицы о
персонале предприятия общественного питания и соответствующим им счетам.
CREATE VIEW employee_activity ASb. bill_id, e.
employee_fname, e. employee_lname, b. bill_time, b. bill_tips, b. bill_total,
b. bill_status, b. bill_methodbills_info bJOIN employee_info e ON e.
employee_id=b. employee_idBY e. employee_id;
Листинг 22 - создание представления с использованием
скалярной функции
5.3 Операции
с представлениями базы данных
Данные из представлений считываются точно так же, как и
данные из базовых таблиц - с помощью команды SELECT. Из представления,
созданного в БД openpos, можно выделить статистику по определенному каналу call-центра. На рисунке 28
показана структура созданного подзапроса.
SELECT * FROM employee_place WHERE employee_id<5;
Листинг 23 - выборка данных из представления
Рисунок 19 - выборка представления, созданного в БД openpos.
Представления удаляются с помощью команды DROP VIEW. Ниже наглядно показан
процесс удаления представления из базы данных.
DROP VIEW employee_place;VIEW employee_activity;
Листинг 20 - удаление представлений
5.4 Выводы по
разделу
Основной целью данного раздела было формирование SQL-представлений в
моделируемой предметной области, а также проведение операций с представлениями.
В разделе описаны общие сведения о представлениях, их актуальность и области
применения, создание представлений на основе данных анализируемой и
разработанной БД, манипуляции с данными представлений и процесс удаления
представлений из БД. В приложении Б.4 находится скрипт создания и
манипулирования SQL-представлениями, выполненный в БД openpos, включающий в
себя все операции, описанные в разделе.
Заключение
В рамках данной курсовой работы были выполнены задачи,
направленные на формирование распределенной структуры хранения данных на базе
РСУБД и поставленные в рамках данной курсовой работы:
) проанализирована предметная область проектируемой
ИС;
2) по итогам анализа создан план по реализации БД,
хранящей информацию, необходимую для функционирования субъекта предметной
области;
) создана схема БД с её последующей реализацией и
внедрением в СУБД;
) реализовано моделирование рабочих процессов БД
посредством передачи в БД SQL-запросов создания, изменения, удаления хранимых
данных, а также манипуляции данными посредством выборки из таблиц.
В ходе выполнения курсовой работы:
) проанализирована предметная область;
2) разработана структура распределенной системы хранения
данных, обеспечивающей корректное функционирование проектируемой ИС;
) спроектирована диаграмма сущность-связь БД
информационной POS-системы OpenPOS посредством визуального моделирования схемы в EA;
) создана БД в РСУБД MySQL посредством переноса
структурированной схемы из EA с последующим заполнением данных из текстового
файла;
) визуализирована диаграмма отредактированной БД с
помощью утилиты моделирования БД phpMyAdmin;
) созданы базовые SQL-запросы (выборка,
добавление/изменение/удаление строк) к СУБД с их последующим применением на
практике;
) созданы представления данных с их последующим
применением на практике.
В рамках дальнейшей работы над проектом планируется:
) более углубленное изучение и анализ предметной
области, выявление её специфик, известных только участниками деятельности в
предметной области;
2) разработка информационной системы OpenPOS (продумывание алгоритма
работы ИС, написание исходного кода, отладка работы программы, тестирование ИС
на целевом аппаратном комплексе);
) автоматизация работы информационной системы с БД,
реализованной в рамках данной курсовой работы;
) презентация разработанного проекта и дальнейшее
внедрение в структуру предприятий общественного питания;
) дальнейшая модификация ИС посредством добавления
программных модулей, решающих те или иные проблемы предметной области,
улучшение пользовательского интерфейса и т.д.
Список
литературы
Основная
литература
. Андрей
Кондрашин. Ресторанный бизнес в малых городах. Секреты успешного открытия и
эффективного управления. - Ресторанные ведомости, 2015
2. Виолетта
Гвоздовская Управление рестораном, который любит гостей. - Ресторанные
ведомости, 2013
. Кевин
Янк. PHP и MySQL. От новичка к профессионалу. - Эксмо, 2013
. Бэрон
Шварц, Вадим Ткаченко. MySQL. Оптимизация производительности - Символ-плюс,
2010г.
. Алекс
Кригель, Борис Трухнов. SQL. Библия пользователя - Вильямс, 2010г.
Дополнительная
литература
. Стефан
Фаро. Рефакторинг SQL-приложений - Символ, 2009 г.
7. Алан
Бьюли. Изучаем SQL. - Символ, 2007г.
. Мартин
Грабер. SQL - Лори, 2007г.
. Д.
Крёнке. Теория и практика построения баз данных. - Питер, 2005 г.
. Крис
Фиайли. SQL. Руководство по изучению языка - ДМК Пресс, 2004 г.
Интернет
ресурсы
11. Database Engineering with Enterprise Architect 12 [Электронный ресурс] URL https:
// www.youtube.com/watch? v=LLtp49TU1H8 (дата обращения: 09.11.2014г.)
12. Loading Data into a Table [Электронный ресурс] URL: https: // dev. mysql.com/doc/refman/5.5/en/loading-tables.html
(дата обращения: 22.11.2015г.)
. LOAD DATA INFILE Syntax [Электронный ресурс] URL: https: // dev.
mysql.com/doc/refman/5.5/en/load-data.html (дата обращения: 22.11.2015г.)
. Configuring the Character Set and Collation for
Applications [Электронный ресурс] URL: https: // dev.
mysql.com/doc/refman/5.7/en/charset-applications.html (дата обращения:
22.11.2015г.)
. How Do I Enable Remote Access To MySQL Database Server?.
[Электронный ресурс] URL:
#"872041.files/image020.gif">
Приложение Б
SQL-код базы данных
DROP TABLE IF EXISTS `bills_info` CASCADE;TABLE
`bills_info`
(
`bill_id` INT NOT NULL,
`bill_tickets` INT,
`member_id` INT 0,`employee_id` INT,
`bill_time` TIMESTAMP (0),
`bill_tips` INT,
`bill_total` INT,
`bill_status` VARCHAR (20),
`bill_method` VARCHAR (20),`PK_bills_info`
PRIMARY KEY (`bill_id`)
);TABLE `bills_info`INDEX
`IXFK_bills_info_employee_info` (`employee_id` ASC)
;TABLE `bills_info`INDEX
`IXFK_bills_info_membership` (`member_id` ASC)
;FOREIGN_KEY_CHECKS=1
Приложение Б.1 - создание таблицы* FROM
employee_info ORDER BY employee_birthday DESC;bill_id, member_id, employee_id,
bill_total, bill_time FROM bills_info WHERE return_date IS NULL;* FROM
employee_military WHERE employee_mil_status IS NOT NULL;INTO tickets VALUES
(932, 1, 1, 50);INTO membership VALUES (11, Shilyn, Kirill, 0.1,
active);employee_paperwork SET employee_passport=5609911911 WHERE
employee_id=5;FROM employee_info WHERE employee_lname=’Novikov’;employee_id,
employee_card_exp, (CASE employee_card_exp WHEN employee_card_exp <
'2017-01-01' THEN 'expiring' ELSE 'non-expiring' END) AS 'state' FROM
employee_account ORDER BY 3 DESC;CONCAT (employee_fname, ‘ ‘, employee_mname, ‘
’, employee_lname) AS ‘Full name’, employee_position FROM
employee_info;bill_id, COUNT (ticket_id) AS ‘Tickets’ FROM bills_components
GROUP BY bill_id;MAX (bill_total) AS 'Bill record' FROM bills_info;
Приложение
Б.2 - скрипт создания базовых запросов
SELECT bi. bill_id, m. member_fname, m. member_lname,
menu. item_name, bi. bill_status;bills_info biJOIN membership m ON bi.
member_id=m. member_idJOIN bills_components bc ON bc. bill_id=bi. bill_idJOIN
tickets t ON t. ticket_id=bc. ticket_idJOIN menu_items menu ON menu. item_id=t.
item_idBY m. member_id;bill_id, bill_time, bill_total, bill_status, bill_method
FROM bills_info WHERE bill_id IN
(SELECT bill_id, COUNT (ticket_id) AS ‘quantity’
FROM bills_components WHERE quantity > 1 GROUP BY bill_id);TABLE
menu_ingredients
(_id INT NOT NULL,_id INT NOT NULL,_name VARCHAR
(20),_price INT NOT NULL,KEY (ingredient_id),KEY (item_id) REFERENCES
menu_items (item_id)
);TABLE menu_ingredients ADD COLUMN
ingredient_quantity INT;TABLE menu_ingredients;INDEX ind_employee ON
employee_info (employee_lname);INDEX ind_dish ON menu_items (item_name);TABLE
employee_info DROP INDEX ind_employee;TABLE menu_items DROP INDEX ind_dish;
Приложение Б.3 - скрипт создания комплексных запросов
CREATE VIEW employee_place ASei. employee_id,
CONCAT (ei. employee_fname, ‘ ’, ei. employee_mname, ‘ ’, ei. employee_lname)
AS ‘Employee’,(ea. employee_city, ‘ ‘, ea. employee_street, ‘ ‘, ea.
employee_home, ‘ ‘, ea. employee_apt) AS ‘Address’employee_info ei INNER JOIN
employee_address ea ON ea. employee_id=ei. employee_id ORDER BY ei.
employee_id;VIEW employee_activity ASb. bill_id, e. employee_fname, e.
employee_lname, b. bill_time, b. bill_tips, b. bill_total, b. bill_status, b.
bill_methodbills_info bJOIN employee_info e ON e. employee_id=b. employee_idBY
e. employee_id;* FROM employee_place WHERE employee_id<5;VIEW
employee_place;VIEW employee_activity;
Похожие работы на - Анализ, разработка и реализация базы данных информационной системы OpenPOS