Поволжский государственный университет телекоммуникаций и информатики Факультет «Дистанционного обучения» Кафедра «Информационные системы и технологии» Сдана на проверку Допустить к защите «_____»____201_ г. «_____»____201_ г. Защищена с оценкой ________________ ”_____”______ 201_г. КУРСОВАЯ РАБОТА по дисциплине «Базы данных» Вариант № 20. Интернет-магазин Студент(ка) группы Фамилия Имя Отчество Руководитель Козлова Ольга Семѐновна № зачетной книжки ___________ САМАРА 2013 Рецензия 2 Оглавление 1. Постановка задачи.......................................................................................... 4 2. Инфологическая модель ................................................................................ 5 3. Разработка таблиц и схемы базы данных ..................................................... 9 4. Запросы системы ...........................................................................................17 5. Выводы...........................................................................................................24 6. Список используемых источников ..............................................................24 3 1. Постановка задачи Вариант 20 Задача курсовой работы состоит в том, чтобы создать Информационную систему "Интернет магазин". Информационная система предполагает организацию виртуальных витрин различных категорий товаров, просмотр их различных характеристик, формирование корзины покупателя, организацию доставки выбранных товаров, автоматическое формирование счета на основании содержимого корзины покупателя, также возможность оплаты товаров web-money. После выбора необходимых товаров покупатель может отказаться от некоторых из них или отложить покупку. Вариант задания предусматривает разработку ER-диаграммы, хранящей список покупателей, каталог товаров и данные о заказах. Реализация настоящей БД должна быть произведена средствами СУБД MySQL. В MySQL должны разрабатываться таблицы, связи между ними. Необходимо также разработать не менее 10 запросов следующих типов: 1. С использованием внутреннего соединения по одному полю; 2. С использованием косвенно связанных таблиц; 3. С использованием внешнего соединения таблиц; 4. С использованием рекурсивного соединения; 5. С использованием вложенного запроса; 6. С использованием функций агрегирования; 7. Перекрестный запрос; 8. С параметрами; 9. С вычисляемым полем. 4 2. Инфологическая модель Из описания предметной области следуют: 1. Сущности: Категории товаров; Товары; Фирмы; Заказы; Покупатели. 2. Атрибуты: ID_категории; Название категории являются атрибутами сущности «Категории товаров». ID_товара; ID_фирмы; ID_категории; Название товара; Цвет; Материал; Класс; Дата производства; Цена являются атрибутами сущности «Товары». 5 ID_фирмы; Название фирмы; Страна; Адрес фирмы; Телефон представителя являются атрибутами сущности «Фирмы». ID_покупателя; ФИО покупателя; Адрес покупателя; Телефон покупателя; WMID являются атрибутами сущности «Покупатели». ID_заказа; ID_покупателя; ID_товара; Вариант доставки; Вариант оплаты; Количество товара; Срок оплаты являются атрибутами сущности «Заказы». 3. Ключи сущностей: ID_категории является первичным ключом сущности «Категории товаров»; ID_товара является первичным ключом сущности «Товары»; ID_фирмы является первичным ключом сущности «Фирмы»; 6 ID_покупателя является первичным ключом сущности «Покупатели»; ID_заказа является первичным ключом сущности «Заказы». 4. Связи сущностей: Между сущностями «Категории товаров» и «Товары»: Слева направо: «Категория может включать несколько товаров»; Справа налево: «Каждый товар может входить только в одну категорию»; Тип связи: один -ко-многим. Между сущностями «Фирмы» и «Товары»: Слева направо: «Фирма может выпускать множество товаров»; Справа налево: «Каждый товар может быть выпущен лишь одной фирмой»; Тип связи: один-ко-многим. Между сущностями «Товары» и «Заказы»: Слева направо: «Товар может входить в несколько заказов»; Справа налево: «Каждый заказ включает только один товар»; Тип связи: один-ко-многим. Между сущностями «Покупатели» и «Заказы»: Слева направо: «Покупатель может совершить несколько заказов»; Справа налево: «Каждый заказ принадлежит только одному покупателю»; Тип связи: один-ко-многим. 7 Концептуальная модель заданной предметной области представлена на рис. 1 Категории товаров Товары Фирмы ID_товара ID_фирмы ID_категории Название категории ID_фирмы Название фирмы Включать ID_категории Входить Страна Название товара Адрес фирмы Цвет Телефон представителя Материал Включать Входить Принадлежать Дата производства Выпускать Класс Цена Заказы ID_заказа ID_покупателя Библиотечный шифр Номер Принадлежать Покупатели билета ID_товара Дата выдачи ID_покупателя Вариант доставки Дата возврата ФИО покупателя Совершать Вариант оплаты Адрес покупателя Количество Телефон покупателя Срок оплаты WMID Рис 1. ER-диаграмма предметной области 8 3. Разработка таблиц и схемы базы данных Для создания данной системы управления данными понадобятся следующие таблицы: kategorii_tovarov tovary firmy pokupateli zakazy В СУБД MySQL создание таблицы происходит с помощью команды CREATE TABLE. Создание таблицы kategorii_tovarov: CREATE TABLE ` kategorii tovarov ` ( ` ID_kategoriya` INT( 11 ) NOT NULL AUTO_INCRIMENT , ` kategoriya ` VARCHAR(10) NULL ); Добавление первичного ключа таблицы kategorii_tovarov: ALTER TABLE ` kategorii_tovarov ` ADD PRIMARY KEY ( ` ID_kategoriya ` ) Структура таблицы kategorii_tovarov: 9 Создание таблицы tovary: CREATE TABLE ` tovary`( ` ID_tovar ` INT( 11 ) NOT NULL AUTO_INCRIMENT , ` ID_firm ` INT(11) NULL , `ID_kategoriya` INT( 11 ) NULL , `tovar` VARCHAR( 15 ) NULL, `color` VARCHAR( 10 ) NULL , `material ` VARCHAR( 10 ) NULL `klass` VARCHAR( 1 ) NULL `date ` DATE NULL `price ` DECIMAL( 8,2 ) NULL ); Добавление первичного ключа таблицы tovary: ALTER TABLE `tovary` ADD PRIMARY KEY ( `ID_tovar` ) Структура таблицы tovary: 10 Создание таблицы firmy: CREATE TABLE `firmy` (`ID_firm` INT(11) NOT NULL AUTO_INCREMENT, `firma` VARCHAR( 15 ) NULL , `country` VARCHAR( 12 ) NULL , `adress` TEXT NULL , `phone` INT( 11 ) NULL) ; Добавление первичного ключа таблицы firmy: ALTER TABLE `firm ` ADD PRIMARY KEY ( `ID_firm` ) Структура таблицы firmy: 11 Создание таблицы zakazy: CREATE TABLE ` zakazy`( ` ID_zakaz` INT( 11 ) NOT NULL AUTO_INCRIMENT , `ID_pokupatel` INT(11) NULL , `ID_tovar` INT( 11 ) NULL , `var_dostavki` VARCHAR( 10 ) NULL, `var_oplaty` VARCHAR( 10 ) NULL , `kol-vo` INT( 11 ) NULL `srok_oplaty` INT( 11 ) NULL); Добавление первичного ключа таблицы zakazy: ALTER TABLE `zakazy` ADD PRIMARY KEY ( `ID_zakaz` ) Структура таблицы zakazy: 12 Создание таблицы pokupateli: CREATE TABLE `pokupateli` (`ID_pokupatel` INT ( 11 AUTO_INCREMENT, `pokupatel_name` VARCHAR( 25 ) NULL , `address_pokupatel` TEXT NULL , `phone_pokupatel` INT( 11 ) NULL, `WMID` INT ( 15 ) NULL) ; Добавление первичного ключа таблицы pokupateli: ALTER TABLE `pokupately ` ADD PRIMARY KEY ( `ID_pokupatel` ) Структура таблицы pokupateli: 13 ) NOT NULL Общая структура базы данных С помощью команд INSERT INTO и VALUES происходит вставка строк внутрь той или иной таблицы. Вставка строки для таблицы kategorii_tovarov выполняется следующим образом: INSERT INTO `kategorii_tovarov` ( `ID_kategoriya` , `kategoriya` ) VALUES ( ' 1 ', ' шкафы'); Для вставки последующих значений в каждую таблицу команды INSERT INTO и VALUES выполняются аналогично. Данные в таблице kategorii_tovarov: 14 Данные в таблице tovary: Данные в таблице firmy: 15 Данные таблицы pokupateli: Данные таблицы zakazy: 16 4. Запросы системы Для данной системы было создано 10 запросов: Запрос 1. Какие покупатели расплачивались хотя бы за один заказ наличными? Создается по данным таблиц pokupateli, zakazy и является запросом с использованием внутреннего соединения по одному полю: Результат выполнения запроса 1: Запрос 2. Какие товары заказал каждый покупатель? Создается по данным таблиц tovary, zakazy, pokupateli и является запросом с использованием косвенно связанных таблиц: 17 Результат выполнения запроса 2: Запрос 3. Вывести товары, цена которых превышает среднюю цену в магазине. Создается по данным таблицы tovary и является вложенным запросом с рекурсией: Результат выполнения запроса 3: 18 Запрос 4. Вывести список заказов для каждого покупателя, если нет заказов, вывести NULL. Создается по данным таблиц zakazy, pokupatel и является запросом с использованием правого внешнего соединения таблиц: Результат выполнения запроса 4: Запрос 5. Найти товары, класс которых совпадает с классом товара, под ID=1. Создается по данным таблицы tovary использованием рекурсивного соединения: 19 и является запросом с Результат выполнения запроса 5: Запрос 6. Вывести фамилии покупателей и товары, оплаченные ими по web-money. Создается по данным таблиц tovary, zakazy, pokupateli и является запросом на внутреннее соединение таблиц: Результат выполнения запроса 6: 20 Запрос 7. Найти минимальную и максимальную цену товаров различного класса; Создается по данным таблицы tovary и является запросом с использованием функций агрегирования MIN, MAX: Результат выполнения запроса 7: Запрос 8. Вывести товары с характеристиками, фирмы, которые их выпускают; Создается по данным таблиц tovary, firmy и является перекрестным запросом: 21 Результат выполнения запроса 8: Запрос 9. Какие товары были выпущены в ноябре? Создается по данным таблицы tovary и является запросом с параметрами: 22 Результат выполнения запроса 9: Запрос 10. Посчитать, какое количество книг находится у каждого из читателей; Создается по данным таблиц Chitatel (Читатель), Zap_chit_bil (Запись читательского билета) и является запросом с использованием вычисляемого поля: Результат выполнения запроса 10: 23 Выводы В данной работе была исследована предметная область «Интернетмагазин»; Построена инфологическая модель; Разработана даталогическая модель базы данных средствами MySQL, включающая 5 таблиц и соответствующие связи между ними; Разработаны 10 запросов для отображения данных из таблиц. 5. Список используемых источников 1. Ларри Ульман «MySQL. Руководство по изучению языка». Издательство: ДМК Пресс, Питер. Год: 2004 2. 7. М. Кузнецов, И. Симдянов «MySQL на примерах». Издательство: БХВПетербург, 2007 г. 3. Лекции по дисциплине «Базы данных» 24