PK
au_id (int)
|
au_fname (varchar)
|
au_lname (varchar)
|
au_country (varchar)
|
age (int)
|
PK
|
|
|
|
|
Таблица 7 - таблица publishers
pub_id (int)
|
pub_name (varchar)
|
pub_city (varchar)
|
pub_country (varchar)
|
PK
|
|
|
|
Таблица 8
- таблица books
book_id (int)
|
au_id (int)
|
pub_id (int)
|
genre_id (int)
|
book_title (varchar)
|
pages (int)
|
pub_year (int)
|
isbn (varchar)
|
PK
|
FK (authors)
|
FK (publishers)
|
FK (genre)
|
|
|
|
|
2.3 Проектирование
диаграммы «сущность-связь» в Enterprise Architect
Для наглядности предметной области была
спроектирована диаграмма БД «сущность-связь» с применением графических средств
отображения модели. Очень важным свойством модели "сущность-связь"
является то, что она может быть представлена в виде графической схемы. Это
значительно облегчает анализ предметной области. В качестве средства
визуализации была использована программа Sparx
EA 12. Сначала были
созданы таблицы БД. Затем были добавлены атрибуты с выделением первичных ключей
и присвоением ограничения «NOT
NULL» для некоторых
атрибутов. Напоследок средствами EA
было проведено построение диаграммы полученной базы данных с последующим
нанесением связей «первичный ключ-внешний ключ» между таблицами. На рисунке 1
наглядно показан процесс проектирования таблиц с помощью встроенного
инструмента Database
Builder. В приложении A.1
показана итоговая физическая схема БД.
Рисунок 1 - проектирование таблиц базы данных в EA
2.4 Подготовка
диаграммы «сущность-связь» в Enterprise Architect к переносу на целевую СУБД
В процессе подготовки диаграммы БД
«сущность-связь» к переносу на целевую СУБД MySQL
был автоматически сгенерирован SQL-код
- скрипт создания таблиц базы данных. Во встроенном инструменте EA
Database
Builder в опциях главного
элемента MySQL (открытие
меню правой кнопкой мыши) был выбран пункт «Generate
DDL». Затем в меню
сохранения схемы в формате SQL
были выбраны все таблицы БД и путь к сохранению файла. При нажатии кнопки «Generate»
сгенерированный SQL-код
сохранился на компьютере. Так диаграмма сущность-связь была подготовлена к
переносу на целевую СУБД. На рисунке 3 наглядно показан процесс сохранения
схемы БД в формате SQL.
В приложении Б.1 находится часть
сгенерированного SQL-кода.
Рисунок 2 - генерация SQL-кода
в EA
2.5 Создание базы
данных в MySQL. Перенос схемы из Enterprise Architect
Целевой СУБД, предназначенной для управления
данными, хранящимися в библиотечной ИС «Библиотека.ru»
является реляционная СУБД MySQL
5.1.73. Операционной системой, на которой расположен MySQL
является Debian
Jessie 8.2 - дистрибутив
семейства Linux. Данный
дистрибутив был выбран для платформы разработки ИС (в частности базы данных) по
нескольким причинам: наличие одной из лучших систем управления пакетами apt,
оперативная поддержка и большое пользовательское сообщество, а также
способность становления частью отказоустойчивой системы.
База данных на основе SQL
кода была создана с помощью командной оболочки bash.
/opt-u root -pDATABASE
library_ru;library_rulibrary_ru < database.sql
Листинг 1 - создание
базы
данных
в
MySQL
.6 Начальное заполнение
базы данных
После создания БД с последующим добавлением
таблиц РСУБД MySQL появилась
совокупность структурированных и связанных между собой таблиц, но данные до сих
пор отсутствуют Следующей задачей является заполнение созданной БД значениями.
Существуют 2 способа добавления записей в
таблицы: с помощью команды INSERT
и с помощью загрузки записей из текстового файла (команда LOAD
DATA LOCAL
INFILE). Первый способ
более удобен для добавления небольшого количества записей (не больше 5), второй
способ - для большого количества записей. В данной задаче наиболее
целесообразным выглядит добавление записей из текстового файла. Для этого для
каждой таблицы необходимо создать отдельный текстовый файл, записать в него
данные в формате, удобном для записи в хранилище РСУБД, и загрузить данные из
файла в таблицу при помощи консоли MySQL.
Для добавления записи о модуле достаточно выполнения команды INSERT.
Для начального заполнения базы данных были созданы 7 текстовых файлов. На
рисунке 3 показан формат записи строк в файл.
Рисунок 3 - формат текстового файла для
добавления значений в БД
Затем был создан SQL-скрипт,
состоящий из нескольких команд добавления данных из файла в таблицы, а также
добавления записи о модуле library_ru,
а именно версия модуля, имя и флаг доступности 1. Уникальный ID
модуля СУБД создаст сама с помощью функции авто-инкремента значений в столбце.
В листинге 2 указан список скрипт, использованный для заполнения БД.
library_ru;
LOAD DATA LOCAL INFILE
'/opt/customers.txt' INTO TABLE customers;DATA LOCAL INFILE
'/opt/employees.txt' INTO TABLE employees;DATA LOCAL INFILE '/opt/rent.txt'
INTO TABLE rent;DATA LOCAL INFILE '/opt/authors.txt' INTO TABLE authors;DATA
LOCAL INFILE '/opt/publishers.txt' INTO TABLE publishers;DATA LOCAL INFILE
'/opt/genre.txt' INTO TABLE genre;DATA LOCAL INFILE '/opt/books.txt' INTO TABLE
books;
Листинг 2 - SQL-скрипт
заполнения БД
На рисунках 6-7 показаны результаты работы
команд. В общей сложности в каждую таблицу, хранящую информацию о звонках,
добавлено по 20 значений, в таблицы-словари - по 10, в таблицу информации о
дикторах - 5.
Рисунок 4 - результат работы команды LOAD
DATA в таблице books
2.7 Создание диаграммы
средствами phpMyAdmin
Для проверки эффективности реализованной модели
предметной области необходимо проверить ее графическое отображение. Таким
образом мы можем убедиться, что спроектированная БД не имеет ошибок. Для этого
нужно повторно построить диаграмму «сущность-связь». Для этой цели в MySQL
используется Web-приложение
администрирования БД phpMyAdmin.
На данном этапе стоит задача проверить связность разработанной базы данных.
Создание диаграммы состоит из
нескольких шагов. Сначала данные о компьютере с MySQL были
добавлены в существующую конфигурацию phpMyAdmin (файл
конфигурации Web-сервера Apache /etc/httpd/conf.d/phpmyadmin.conf). После
этого веб-сервер Apache был перезапущен, а изменения
конфигурации вступили в силу. После этого для запуска интерфейса phpMyAdmin в
веб-браузере был набран адрес <#"872034.files/image005.gif">
Рисунок 5 - интерфейс управления БД
в phpMyAdmin
Выводы по разделу
Основной целью данного раздела являлось
моделирование предметной области (выделение основных элементов базы данных,
проектирование составных моделей БД) и её внедрение в рабочий процесс. Описаны
общие сведения о моделировании предметной области, этапы моделирования области.
Разработана схема БД, описаны сущности, атрибуты, первичные и внешние ключи, а
также связи между таблицами.
Посредством инструмента графической визуализации
EA была
спроектирована диаграмма «сущность-связь», на основании которой автоматически
сгенерирован SQL-код
создания таблиц. С помощью данного кода схема БД была перенесена из EA
в РСУБД MySQL,
находящуюся в Linux-дистрибутиве Debian
Jessie 8.2. Таблицы
созданной БД были заполнены данными из текстовых файлов. Отредактированная БД
была повторно визуализирована в виде диаграммы с помощью phpMyAdmin.
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 Выборка данных
Выборка данных из таблицы выполняется с помощью
команды SELECT. В самой
простой форме, команда SELECT просто инструктирует базу данных чтобы извлечь
информацию из таблицы.
Для операции выборки в БД library_ru
можно использовать любую таблицу, т.к. ни одна из таблиц не является пустой.
Например, отсортируем список книг в таблице books
по году издания.
SELECT * FROM books ORDER BY pub_year
DESC;
Листинг 3 - сортированная выборка записей
Одним из предполагаемых SELECT-запросов
к базе будет выявление актов выдачи книги без даты возврата (т.е. список книг,
находящихся на руках у пользователей). Результат выполнения
команды
показан
на
рисунке
6.
Листинг 4 - выборка по условию
Рисунок 6 - результат выполнения команды SELECT
в БД library_ru
Также можно выбрать статистику выдачи книг
отдельному пользователю, создав запрос на выборку по уникальному ID
пользователя.
book_id, employee_id, deli_date,
return_date FROM rent WHERE customer_id = 5;
Листинг 5 - выборка значений по внешнему ключу
3.3 Добавление данных
Оператор INSERT применяется для добавления
информации в базу данных. Более часто запросы на добавление записей в БД library_ru
будут направляться таблицу rent,
так как происходит постоянное пополнение списка актов выдачи книги. На рисунке
7 показан результат работы команды INSERT.
INTO rent VALUES (21, 5, 3,
1, 2015-12-23 15:16:54, NULL);
Листинг 6 - добавление информации о новом акте
выдачи книги в таблицу rent
Рисунок 7 - результат добавления записи в
таблицу rent.
Также присутствует необходимость в добавлении
новых пользователей библиотеки. Запрос будет заключаться в добавлении
персональных данных о пользователе командой INSERT.
INTO customers VALUES (21, 'Сергей',
'Миронов', 'Пенза', 'Злобина',
'11а',
15, '+7-937-353-6405', 5609512986, 1976, 'Июнь',
23);
Листинг 7 - добавление нового пользователя в
таблицу
3.4 Обновление
справочных данных
Оператор UPDATE применяется для обновления
информации в базу данных. Обычно обновление справочных данных применяется для
изменения группы записей, объединенных конкретным условием. БД library_ru
имеет справочные данные в таблице publishers,
где указаны общие сведения об издательствах, распространяющих литературу на
территории РФ, продукты которой имеются в наличии в библиотечном каталоге.
Например, возможно изменение информации о месторасположении издательства при
его переезде в другой город. Результат выполнения команды показан на рисунке
14.
publishers
SET pub_city=’Москва’
WHERE pub_name='ЛИТЕРА';
Листинг 8 - обновление данных о книжном издательстве
Рисунок 8 - результат обновления записей
.5 Удаление данных
Оператор DELETE
применяется для удаления информации из базы данных. Обычно удаление данных
применяется либо для освобождения памяти под свежие записи (динамические
записи), либо в том случае, если какая-либо информация больше не является
актуальной (статические данные). В БД library_ru
нужно стереть запись об аккаунте работника, уволившегося из организации. На
рисунке 9 показан результат выполнения команды.
FROM
employees
WHERE employee_lname=’Трофимова’;
Листинг 9 - удаление записи о
работнике/пользователе системы
Рисунок 9 - результат удаления записей из БД library_ru.
3.6 Применение
табличных функций SQL
Встроенные табличные функции языка SQL
служат для получения более точных результатов выборки команды SELECT.
В данном разделе показано применение таких табличных функций, как CONCAT
(объединение значений),, DATEDIFF
(вычисление разницы между двумя датами) и CASE
(добавление значений в зависимости от выполнения условия).
В БД library_ru
можно с помощью функций CASE
и DATEDIFF охарактеризовать
состояние актов выдачи книг и выделить из них пользование с действующим
временным сроком возврата и с истекшим сроком возврата (более 60 дней с момента
начала аренды). На рисунке 10 показаны результаты работы запроса.
rent_id,
book_id,
customer_id,
(CASE deli_date WHEN DATEDIFF
(deli_date, 0000-00-00) < 61 THEN ‘active’ ELSE ‘obsolete’ END) AS ‘state’rent
WHERE return_date IS NULL ORDER BY 4 DESC;
Листинг 10 - применение операторов CASE
и DATEDIFF
Рисунок 10 - результат выполнения функций CASE
и DATEDIFF
Можно более наглядно показать инициалы
посетителей библиотеке, занесенных в клиентскую базу системы (таблица customers),
объединив их имена и фамилии в одну строку функцией CONCAT,
а также вывести полную дату рождения. На рисунке
11 показаны
результаты
работы
запроса.
CONCAT (customer_fname, ' ',
customer_lname) AS 'Полное имя', CONCAT (customer_birthday, ' ',
customer_birthmonth, ' ', customer_birthyear) AS 'День Рождения' FROM
customers;
Листинг 11 - применение
функции
CONCAT
Рисунок 11 - результат выполнения функции CONCAT.
3.7 Применение
скалярных функций SQL
Скалярные функции SQL
предназначены для подсчета максимальных, минимальных, средних значений
атрибутов, количества значений по определенному параметру и суммы их значений.
Особенность скалярных функций в том, что они всегда возвращают только одно
значение. В данном разделе показано применение функций MAX
(максимальное значение) и COUNT
(подсчет среднего значения).
В БД library_ru
функцию COUNT можно
применить для подсчета в таблице books
количества книг, написанных одним автором. На рисунке 12 показаны результаты
работы запроса.
au_id,
COUNT (*) AS
‘Число книг в каталоге’ FROM
books GROUP
BY au_id;
Листинг 12 - применение скалярной функции COUNT
Рисунок 12 - результат выполнения функции COUNT.
Также в БД library_ru
можно использовать функцию MAX
для просмотра наибольшего числа хранящихся книг, выпущенных одним
издательством. На рисунке 13 показаны результаты работы запроса.
MAX(pub_id)
AS 'Максимальное
число книг от одного издателя' FROM
books;
Листинг 13 - применение функции MAX
Рисунок 13 - результат выполнения функции MAX.
Выводы по разделу
Основной задачей данного раздела курсовой работы
являлось анализ сущности базовых запросов языка SQL,
освоение и применение базовых запросов языка SQL,
направленных на работу с одной таблицей.
В разделе показаны такие виды манипуляции
данными, как выборка данных из таблицы, добавление записей в таблицу, удаление
записей из таблицы, обновление отдельных значений в записях таблицы, а также
использование табличных и скалярных функций. В приложении Б.2 находится скрипт
базовых запросов SQL,
выполненный в БД library_ru.
4. СОЗДАНИЕ И ЗАПУСК СЛОЖНЫХ
ЗАПРОСОВ SQL
.1 Общие сведения о
сложных запросах SQL
Под сложными запросами языка SQL
подразумеваются запросы, которые могут обрабатывать несколько элементов данных
одновременно, а именно: соединение, группировка, агрегация из разных таблиц в
одну сводную структуру данных. Сложные запросы нужны для создания более
масштабных операций, манипулирующих значениями БД. В данном разделе
рассматриваются такие запросы, как выборка из таблиц-объединений, подзапросы
команды SELECT, а также
работа с таблицей как с атомарной структурой: создание дополнительных таблиц,
изменение формата таблиц и удаление целых таблиц из БД. Также описываются
понятие индексации и принципы работы с индексами.
4.2 Выборка данных из
нескольких таблиц
позволяет в одном запросе обращаться к
нескольким таблицам. Именно это свойство и сделало язык SQL столь популярным.
БД library_ru
позволяет создавать множество объединений и запросов из нескольких таблиц
одновременно, так как таблицы имеют множество связей между собой. Например,
можно выполнить запрос с использованием внутреннего объединения, результатом
которого будет соотношение личных данных посетителей библиотеки (имя, фамилия,
место проживания) к названиям и авторам выданных книг. На рисунке 14 показан
результат запроса.
r.rent_id, c.customer_fname,
c.customer_lname, c.customer_city, b.book_title, a.au_fname, a.au_lnamerent
rJOIN customers c ON r.customer_id=c.customer_idJOIN books b ON
b.book_id=r.book_idJOIN authors a ON b.au_id=a.au_idBY r.rent_id;
Листинг 14 - создание объединений таблиц для
выборки
Рисунок 14 - результаты запроса из нескольких
таблиц
4.3 Применение
подзапросов
Когда вы используете подзапросы в SQL, вы можете
обратиться к внутреннему запросу таблицы в предложении внешнего запроса FROM ,
сформировав - соотнесенный подзапрос. Когда вы делаете это, подзапрос
выполняется неоднократно, по одному разу для каждой строки таблицы основного
запроса. Соотнесенный подзапрос - один из большого количества тонких понятий в
SQL из-за сложности в его оценке. Если вы сумеете овладеть им, вы найдете что
он очень мощный, потому что может выполнять сложные функции с помощью очень
лаконичных указаний.
В БД library_ru
подзапрос можно применить в таблице rent.
Например, можно отобразить информацию о посетителях, которые не проживают в
городе Пенза. На рисунке
15 показаны
результаты
работы
запроса.
customer_id, customer_fname,
customer_lname, customer_city FROM customers WHERE customer_id NOT IN (SELECT
customer_id FROM customers WHERE customer_city <> 'Пенза');
Листинг 15 - подзапрос
4.4 Создание таблиц в
базе данных
Процесс создания новых таблиц в базе данных
является очень важным в процессе улучшения проекта или, проще говоря, работы
над ошибками, когда нужно учесть дополнительную информацию при работе
реализуемого проекта. В SQL
таблицы создаются с помощью команды CREATE
TABLE.
В рамках данного подраздела в БД library_ru
создана дополнительная таблица rent_description,
позволяющая описывать подробности акта выдачи книги (причина возврата книги
позже положенного срока, отдельная договоренность между библиотекарем и
посетителем и т.д.). Атрибутами данной таблицы являются ID
акта выдачи (rent_id),
играющий роль как первичного ключа, так и внешнего ключа, связывающего таблицу
с другой таблицей rent
и текст с подробным описанием акта выдачи (rent_text).
Информация о маркировке текста будет добавлена в следующем подразделе как
дополнительный атрибут таблицы. На рисунке 16 показана структура созданной
таблицы.
CREATE
TABLE rent_description
(_id INT NOT NULL,_text VARCHAR(20)
DEFAULT ‘N/A’,KEY (rent_id),KEY (rent_id) REFERENCES rent (rent_id)
);
Листинг 16 - создание таблицы
Рисунок 16 - структура таблицы, созданной в БД library_ru
4.5 Изменение формата
таблиц в базе данных
Как бы тщательно не планировалась структура
таблицы, иногда возникает необходимость внести в нее некоторые изменения.
Специальная команда ALTER TABLE предназначена для модификации структуры
таблицы. С ее помощью модно изменять свойства существующих столбцов, удалять
или добавлять в таблицу столбцы, а также управлять ограничением целостности как
на уровне столбца, так и на уровне таблицы, т.е. выполнять следующие функции:
) добавить в таблицу определение нового столбца;
) удалить столбец из таблицы;
) изменить значение по умолчанию для какого-либо
столбца;
) добавить или удалить первичный ключ таблицы;
) добавить или удалить внешний ключ таблицы;
) добавить или удалить условие уникальности;
) добавить или удалить условие на значение.
В БД library_ru
в соответствии с добавленной таблицей о дополнительной информации, прилагаемой
к акту выдачи книги rent_description
создан атрибут rent_marked,
позволяющий библиотечной ИС "Библиотека.ru"
помечать отдельные описания актов, выделяя их среди остальных описаний. Это
может быть использования в качестве напоминания библиотекарям, являющимися
пользователями ИС. Атрибут хранит бинарные данные: "1" показывает
системе, что содержащийся в том же кортеже текст нужно маркировать,
"0" - что не нужно маркировать. На рисунке 17 показана структура
отредактированной таблицы.
TABLE
rent_description
ADD COLUMN
rent_marked
TINYINT(1);
Листинг 17 - добавление нового атрибута в
таблицу
Рисунок 17 - структура отредактированной таблицы
call_status
4.6 Удаление таблиц из
базы данных
Обычно с таблицей в базе данных помимо самой
информации, хранящейся в базе, связано несколько объектов, например индекс,
создаваемый первичным ключом, или ограничение, налагаемое на столбцы таблицы.
При удалении таблицы РСУБД автоматически удаляет и любой связанный с ней
индекс. Для удаления таблицы из БД необходимо выполнить команду DROP TABLEВ БД library_ru
удалена таблица rent_description,
созданная в данном разделе.
TABLE rent_description;
Листинг 18 - удаление
таблицы
.7 Применение индексов
в базе данных
Индекс - объект базы данных, создаваемый с целью
повышения производительности поиска данных. Таблицы в базе данных могут иметь
большое количество строк, которые хранятся в произвольном порядке, и их поиск
по заданному критерию путем последовательного просмотра таблицы строка за
строкой может занимать много времени. Индекс формируется из значений одного или
нескольких столбцов таблицы и указателей на соответствующие строки таблицы и,
таким образом, позволяет искать строки, удовлетворяющие критерию поиска.
Ускорение работы с использованием индексов достигается в первую очередь за счёт
того, что индекс имеет структуру, оптимизированную под поиск - например,
сбалансированного дерева.
В SQL
индексы создаются командой CREATE
INDEX. Для создания
индексов атрибутов, каждое значение которых уникально, можно воспользоваться
командой CREATE
UNIQUE INDEX.
При создании уникального индекса атрибута СУБД запретит добавлять повторяющиеся
значения в индексируемый атрибут.
При создании БД library_ru
системой генерирования DDL-команд
в Enterprise
Architect были автоматически
сгенерированы индексы по первичным ключам всех созданных таблиц. Также в данной
БД наиболее предпочтительным выглядит использование индексов в таблицах books
и rent, так как в них
предполагается хранить большое количество записей, а также часто обращаться к
базе для их поиска, а также в таблице customers,
где предполагается поиск посетителя библиотеки в клиентской базе по его имени и
фамилии.
INDEX ind_books ON books
(book_id);INDEX ind_rent ON rent (rent_id);INDEX ind_complex_customers ON
customers (customer_fname, customer_lname);
Листинг 19
- создание индексов
Удаление индексов выполняется с помощью команды DROP
INDEX. Данная операция
была применена для всех индексов, созданных в ходе написания данного раздела.
TABLE books DROP INDEX
ind_books;TABLE rent DROP INDEX ind_rent;TABLE customers DROP INDEX ind_complex_customers;
Листинг 20
- удаление индексов из таблиц
Выводы по разделу
Основной задачей данного раздела являлось
ознакомление с сложными SQL-запросами
к предметной области, выявление основных сущностей сложных запросов, а также
применение полученных знаний на практике.
В данном разделе рассмотрены несколько сложных
запросов: выборка из таблиц-объединений, подзапросы команды SELECT
создание дополнительных таблиц, изменение формата таблиц и удаление целых
таблиц из БД.
Также описаны понятие индексации, принципы
работы с индексами и основные сведения о целой группе сложных запросов, их
актуальность и область применения.
В приложении Б. находится SQL-скрипт,
в котором собраны сложные запросы к разработанной БД library_ru.
ЗАКЛЮЧЕНИЕ
В рамках данной курсовой работы были выполнены
задачи, направленные на формирование распределенной структуры хранения данных
на базе РСУБД:
) была изучена предметная область, а
именно её актуальность, основные понятия, особенности и принципы работы
элемента предметной области;
) была смоделирована БД посредством
создания и запуска SQL-запросов;
) была разработана БД для информационной
системы электронных библиотечных архивов «Библиотека.ru», а также была
проведена работа с БД посредством создания и запуска SQL-запросов.
В ходе выполнения курсовой работы:
) проанализирована предметная область;
) разработана структура распределенной
системы хранения данных (выделение сущностей, ключей, атрибутов и связей БД,
наиболее частых запросов к БД);
) спроектирована диаграмма сущность-связь
БД для информационной системы электронных библиотечных архивов «Библиотека.ru»
с помощью визуального моделирования схемы в EA;
) создана БД в РСУБД MySQL
с последующим заполнением данных из текстового файла и визуализацией диаграммы
отредактированной БД посредством веб-инструмента моделирования БД phpMyAdmin;
) созданы базовые SQL-запросы
(выборка, добавление/изменение/удаление строк) к СУБД с их последующим
применением;
) созданы сложные SQL-запросы
(подзапросы, выборка из нескольких таблиц, индексация,
создание/добавление/удаление таблиц) к СУБД с их последующим применением.
В рамках дальнейшей работы над проектом
планируется:
) более углубленное изучение и анализ
предметной области;
) разработка и проектирование ИС
электронных библиотечных архивов «Библиотека.ru»
(продумывание алгоритма работы модуля, написание исходного кода, отладка работы
программных модулей);
) внедрение модуля в систему
муниципальных библиотек Пензенской области;
) презентация разработанного проекта и
анализ разработанного программного продукта для его дальнейшей модификации с
целью внедрения в сеть государственных и частных библиотек.
СПИСОК ЛИТЕРАТУРЫ
Основная
литература
1. Кевин
Янк. PHP и MySQL.
От новичка к профессионалу. - Эксмо, 2013
2. Бэрон
Шварц, Вадим Ткаченко. MySQL. Оптимизация производительности - Символ-плюс,
2010г.
. Алекс
Кригель, Борис Трухнов. SQL. Библия пользователя - Вильямс, 2010г.
Дополнительная
литература
4. Стефан
Фаро. Рефакторинг SQL-приложений - Символ, 2009 г.
5. Владимир
Грекул, Галина Денищенко, Нина Коровкина. Проектирование информационных систем
- Бином, 2008г.
. Алан
Бьюли. Изучаем SQL. - Символ, 2007г.
. Мартин
Грабер. SQL - Лори,
2007г.
. Д.
Крёнке. Теория и практика построения баз данных. - Питер, 2005 г.
. Крис
Фиайли. SQL. Руководство по изучению языка ДМК Пресс, 2004 г.
) БД - База данных
) СУБД - Система управления баз данных
3) EA
- Sparx Enterprise Architect
) ПО - Программное обеспечение
) РФ - Российская Федерация
) ИС - Информационная система
ПРИЛОЖЕНИЕ А
Схема базы данных
Физическая схема базы данных информационной
системы «Библиотека.ru»
в EA
Схема базы данных стороннего информационной
системы «Библиотека.ru»
в phpMyAdmin
ПРИЛОЖЕНИЕ Б
код базы данных
DROP TABLE IF EXISTS `books`
CASCADE;TABLE `books`
(
`book_id` INT NOT NULL,
`au_id` INT NOT NULL,
`pub_id` INT NOT NULL,
`genre_id` INT NOT NULL,
`book_title` VARCHAR(50),
`pages` INT,
`pub_year` INT,
`isbn` VARCHAR(20) NOT
NULL,`PK_books` PRIMARY KEY (`book_id`)
);TABLE `books`CONSTRAINT
`FK_books_authors`KEY (`au_id`) REFERENCES `authors` (`au_id`) ON DELETE
Restrict ON UPDATE Restrict;
TABLE `books`CONSTRAINT
`FK_books_genre`KEY (`genre_id`) REFERENCES `genre` (`genre_id`) ON DELETE
Restrict ON UPDATE Restrict;
TABLE `books`CONSTRAINT
`FK_books_publishers`KEY (`pub_id`) REFERENCES `publishers` (`pub_id`) ON
DELETE Restrict ON UPDATE Restrict;
FOREIGN_KEY_CHECKS=1
Приложение Б.1 - создание связанной таблицы базы
данных books
SELECT rent_id, book_id,
customer_id, deli_date FROM rent WHERE return_date IS NULL;book_id,
employee_id, deli_date, return_date FROM rent WHERE customer_id = 5;INTO rent
VALUES (21, 5, 3, 1, 2015-12-23 15:16:54, NULL);INTO customers VALUES
(21, 'Сергей', 'Миронов', 'Пенза', 'Злобина', '11а', 15, '+7-937-353-6405', 5609512986, 1976, 'Июнь',
23);publishers SET pub_city=’Москва’ WHERE pub_name='ЛИТЕРА';FROM employees
WHERE employee_lname=’Трофимова’;rent_id, book_id, customer_id,
(CASE deli_date WHEN DATEDIFF
(deli_date, 0000-00-00) < 61 THEN ‘active’ ELSE ‘obsolete’ END) AS
‘state’rent WHERE return_date IS NULL ORDER BY 4 DESC;CONCAT (customer_fname, '
', customer_lname) AS 'Полное имя', CONCAT (customer_birthday, ' ',
customer_birthmonth, ' ', customer_birthyear) AS 'День Рождения' FROM
customers;au_id, COUNT (*) AS ‘Число книг в каталоге’ FROM books GROUP BY
au_id; MAX(pub_id)
AS 'Максимальное
число книг от одного издателя' FROM
books;
Приложение Б.2 - скрипт создания базовых
запросов
SELECT r.rent_id, c.customer_fname,
c.customer_lname, c.customer_city, b.book_title, a.au_fname, a.au_lnamerent
rJOIN customers c ON r.customer_id=c.customer_idJOIN books b ON
b.book_id=r.book_idJOIN authors a ON b.au_id=a.au_idBY r.rent_id;customer_id,
customer_fname, customer_lname, customer_city FROM customers WHERE customer_id
NOT IN (SELECT customer_id FROM customers WHERE customer_city <> 'Пенза');TABLE
rent_description
(_id INT NOT NULL,_text VARCHAR(20)
DEFAULT ‘N/A’,KEY (rent_id),KEY (rent_id) REFERENCES rent (rent_id)
);TABLE rent_description ADD COLUMN
rent_marked TINYINT(1);TABLE rent_description;INDEX ind_books ON books
(book_id);INDEX ind_rent ON rent (rent_id);INDEX ind_complex_customers ON
customers (customer_fname, customer_lname);TABLE books DROP INDEX
ind_books;TABLE rent DROP INDEX ind_rent;TABLE customers DROP INDEX
ind_complex_customers;
Похожие работы на - Анализ, разработка и реализация базы данных встраиваемого модуля информационной системы IP-телефонии
|