Особенности предметной области - накопительной и скидочной системы в магазине продажи одежды. Описание работы системы. Инфологическое проектирование модели базы данных. Схема "сущность-связь", нотация Питера Чена. Проектирование базы данных на языке SQL.
Аннотация к работе
Глава 1. Анализ предметной области 1.1 Общее описание предметной области "накопительная и скидочная система в магазине продажи одежды" 1.
Список литературы
Приложение
Введение
База данных - представленная в объективной форме совокупность самостоятельных материалов (статей, расчетов, нормативных актов, судебных решений и иных подобных материалов), систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью электронной вычислительной машины (ЭВМ).
База данных - совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования данных.
MYSQL (My Structured Query Language) - это популярная система управления базами данных (СУБД), очень часто применяемая в сочетании с PHP.
Целью курсовой работы является закрепление основ и углубление знаний в области проектирования структуры базы данных, разработке и реализации модели базы данных, а также в приобретении практических навыков проектирования реляционной базы данных.
Курсовая работа состоит из введения, трех глав, заключения и списка использованной литературы.
Во введении обоснована необходимость создания базы данных, изложены цели и задачи преследуемые при проектировании, дана информация о средствах разработки.
В первой главе проведен анализ предметной области. В данной главе определяются основные понятия предметной области, необходимые для дальнейшего описания работы используемых методов.
Во второй главе решаются вопросы инфологического проектирования модели базы данных посредством создания ER-диаграммы и разработки реляционной модели. Описываются необходимый набор сущностей, отражающих предметную область и информационные потребности пользователей, а также необходимый набор атрибутов каждой сущности. Дается описание состава отношений базы данных и набора атрибутов каждого отношения.
В третьей главе происходит непосредственное проектирование базы данных путем создания выражений на языке SQL, а так же происходит создание необходимых выражений, выполняющих выборку данных из созданной базы данных и решающих поставленные задачи.
В заключении курсовой работы перечисляются и анализируются полученные результаты, формируются выводы по результатам создания базы данных.
Глава 1. Анализ предметной области
1.1 Общее описание предметной области "накопительная и скидочная система в магазине продажи одежды"
Сильная конкуренция в условиях современного бизнеса диктует свои условия руководителям торговых предприятий. Продуманная дисконтная система, система скидок в магазине - это важный аргумент в конкурентной борьбе.
Что такое дисконтная система?
Дисконтная система (дисконтная политика) - это набор правил, условий, которые обуславливают способы предоставления скидок покупателям. Это методы работы с клиентами, регулирующие сам процесс передачи товара или оказания услуги, целью которых является удержание покупателя, формирование у него положительного образа вашей компании, повышение лояльности вашего клиента по отношению к вашему бизнесу, путем предоставления ему определенных выгод.
Дисконтная система. Это система (программа), в которой ведется непосредственно учет клиентов: хранится информация о совершенных покупках, личные данные и т.п., задаются условия для предоставления скидок покупателям. Функциональность дисконтной системы зависит от задач, которые ставит перед собой торговое предприятие.
Дисконтные карты. По технологии изготовления и применения дисконтные карты могут быть простым куском пластика, или содержать штрих код или магнитную полосу для считывания сканером или ридером магнитных карт. Дисконтная карта - часть имиджевой стратегии компании, на нее, как правило, наносят изображение, соответствующее корпоративному стилю.
Для запуска скидочных карт или купонов в магазине обязательно нужна программа, которая может автоматически рассчитывать скидки по карте и вести их учет! Иначе, как вы можете быть уверены, что скидка не пошла в карман продавцу? Ведь проверить сколько человек посетило магазин с карточками и получили по ним скидки вручную очень сложно.
Задачей курсовой работы является проектирование и разработка базы данных "Накопительная и скидочная система в магазине продажи одежды".
1.2 Описание работы системы
· Составить информацию о покупателе
· Обновление данных клиента
· Добавление нескольких размеров к одному товару
· Один товар на нескольких цветах
· Разделить товары на категории и подкатегории
· Собрать картинок товара с разных ракурсов
· Полное информация про производителей товара
· Узнать о сумме продаж
· Собрать информацию продавцов
· Внедрить дисконтную систему
· Предоставлять скидок на покупки
· Поиск товара
· Формирование чека
· Назначить размеры скидок
· Назначить тип для дисконтных карт
· Для карты "BRONZE” назначить скидку 5%
· Для карты "SILVER” назначить скидку 7%
· Для карты "GOLD” назначить скидку 10%
· Для карты "PLATINA" назначить скидку 20%
Глава 2. Инфологическое проектирование модели базы данных
Информационно-логическая модель отображает данные предметной области в виде совокупности информационных объектов и связей между ними. Эта модель представляет данные, подлежащие хранению в базе данных.
Сущность или информационный объект - это информационное описание некоторого реального объекта, процесса, явления или события. Сущность образуется совокупностью взаимосвязанных реквизитов, представляющих качественные и количественные характеристики предметной области.
Сущность может иметь множество реализаций - экземпляров. Например, каждый экземпляр объекта Преподаватель представляет конкретное физическое лицо. Экземпляр характеризуется совокупностью конкретных значений атрибутов и должен однозначно идентифицироваться значением ключа сущности, который может состоять из одного или нескольких ключевых атрибутов. Атрибут или несколько атрибутов, значения которых уникальным образом идентифицируют каждый экземпляр сущности, являются потенциальным ключом данной сущности. Потенциальных ключей может быть несколько. Таким образом, атрибуты подразделяются на ключевые и альтернативные. Значения каждого атрибута выбираются из соответствующего множества значений, включающего все потенциальные значения, которые могут быть присвоены атрибуту. Это множество значений называется доменом.
Исследовав предметную область, выделили следующие сущности
1. Товары
2. Категории
3. Характеристики товара
4. Картинки товара
5. Производители
6. Сведение о покупке
7. Чек
8. Продавцы
9. Клиент
10. Дисконт карта
11. Тип дисконт карт
А так же определен перечень необходимых атрибутов для каждой сущности и проведена их классификация: Таблица 1
Сущность Атрибут
Товары Индекс Имя Цена Описание Индекс производителя Наличие на складе фото
Категории Индекс Индекс родителя Имя Описание фото
Характеристики товара Индекс Индекс товара Название характеристики Цена из за характеристики Значение характеристики
Картинки товара Индекс Индекс товара Фото Титул
Производители Индекс Имя Инфо Логотип Контакты Сайт Страна
Сведение о покупке Индекс Индекс чека Индекс продукта Индекс количество Сумма
Чек Индекс Дата Индекс клиента Скидка Итого Индекс продавца
Продавцы Индекс Фамилия Имя Отчество День рождения Телефон Адрес
Клиент Индекс Имя Фамилия Отчество Пол День рождения Телефон Email
Дисконт карта Индекс Серия номер Тип Накопления Индекс клиента
Тип дисконт карт Индекс Имя Скидка в % Описание фото
Описание основных связей между сущностями (рисунок 2.1): база предметная область модель
Таблица 2
№ Сущность Связь Сущность Тип
1 Товары имеет Характеристики товара Один ко многим
2 Товары принадлежит Категория Многие к одному
3 Продавцы отдают Чек Один ко многим
4 Сведение о Покупке суммируется Чек Один ко многим
5 Товары продается Сведение о Покупке Многие к одному
6 Товары фотографируют Картинки товара Один ко многим
7 Производители производят Товары Один ко многим
8 Клиент берет Чек Один ко многим
9 Клиент имеет Дисконт карта Один ко одному
10 Дисконт карта принадлежит Тип дисконт карт Многие к одному
2.2 Реляционная модель базы данных
После создания ER-диаграммы стало возможным создание реляционной модели базы данных, отражающей состав отношений базы данных и набор атрибутов каждого отношения (рисунок 2.2).
Рисунок 2.2 Реляционная модель базы данных
Описание таблиц базы данных: Таблица 3. Атрибуты таблицы "Категории" (categories)
Ограничения Название столбцов Тип данных Описание
PK NOT NULL id INTEGER (11) индекс категории
FK NOT NULL parent_id INTEGER (11) индекс родителя category_name Varchar (255) название категории description TEXT (255) описание category_image Varchar (45) картинка
PK NOT NULL id INTEGER (11) индекс name Varchar (255) название info Varchar (255) информация logo Varchar (45) логотип site Varchar (45) web сайт phone Varchar (45) телефон номер country Varchar (45) страна
Таблица 5. Атрибуты таблицы "Товары" (product)
Ограничения Название столбцов Тип данных Описание
PK NOT NULL id INTEGER (11) индекс
FK NOT NULL manufacturer_id Varchar (255) производитель name Varchar (45) название description TEXT (255) описание price DECIMAL (20,2) цена image Varchar (45) картинка quantity INTEGER (11) количество на складе
FK NOT NULL product_id INTEGER (11) товар property_name Varchar (255) название property_value Varchar (255) величина, значение property_price DECIMAL (10,2) цена если зависит от характеристики
Таблица 9. Атрибуты таблицы "Сведение о покупке" (purchases)
Ограничения Название столбцов Тип данных Описание
PK NOT NULL id INTEGER (11) индекс
FK NOT NULL chek_id INTEGER (11) чек
FK NOT NULL product_id INTEGER (11) товар quantity INTEGER (11) количество sum DECIMAL (20,2) сумма
Таблица 10. Атрибуты таблицы "Чек" (chek)
Ограничения Название столбцов Тип данных Описание
PK NOT NULL id INTEGER (11) индекс date DATETIME время с датой
FK NOT NULL client_id INTEGER (11) клиент discount INTEGER (2) скидка % itogo DECIMAL (20,2) сумма
FK NOT NULL seller_id INTEGER (11) продавец
Таблица 11. Атрибуты таблицы "Продавцы" (seller)
Ограничения Название столбцов Тип данных Описание
PK NOT NULL id INTEGER (11) индекс surname Varchar (45) фамилия name Varchar (45) имя lname Varchar (45) отчество birthday DATE день рождения phone Varchar (45) телефон address Varchar (255) адрес
Таблица 12. Атрибуты таблицы "Клиент" (client)
ОГРАНИЧЕНИЯНАЗВАНИЕ СТОЛБЦОВТИП ДАННЫХОПИСАНИЕ
PK NOT NULL id INTEGER (11) индекс surname Varchar (45) фамилия name Varchar (45) имя lname Varchar (45) отчество sex Varchar (45) пол birthday DATE день рождения phone Varchar (45) телефон email Varchar (45) почта
9 1 clothes материал, дизайн и тд. 100000 photo9 10
Таблица 23. Данные для заполнения таблицы "chek" id date client_id discount itogo seller_id
1 2015-01-01 00: 00: 00 1 5 100000.00 1
2 2015-01-01 00: 00: 00 2 7 300000 2
3 2015-01-01 3 10 210000 1
4 2015-01-01 4 20 100000 2
Таблица 24. Данные для заполнения таблицы "seller" id surname name lname birthday phone address
1 obidov javlon lname 1993-09-04 998998048220 tashkent city, region yunusabad
2 erkinov sardor lname 1994-05-22 998936664444 tashkent city, region olmazor
3 erkinov anvar lname 1993-10-10 998946666666 tashkent city, region shaykhontokhur
4 gomez selena lname 1992-10-10 998909999999 tashkent city, region chilonzor
Таблица 25. Данные для заполнения таблицы "discount_card" id serial_number type_id client_id accumulations
1 12345678 1 1 100000
2 00000001 2 2 1500000
3 00000002 3 3 5000000
4 00000003 4 4 15000000
Таблица 26. Данные для заполнения таблицы "type_dcard" id name description image discount
1 bronze nominal 100000 imag1 5
2 silver nominal 1500000 imag2 7
3 gold nominal 5000000 imag3 10
4 platina nominal 15000000 imag4 20
3.2 Вывод данных для отчетности
1. Информация о всех продуктах: SELECT * FROM product;
Рисунок 3.2.1 Результат запроса №1
1. Информация о всех покупателях: SELECT * FROM client;
Рисунок 3.2.2 Результат запроса №2
2. Запрос продуктов которых производителем является "Armani” (id=2): SELECT * FROM product WHERE manufacturer_id=2;
Рисунок 3.2.3 Результат запроса №3
3. Сумма покупки клиента у которого id равен 1: SELECT itogo FROM chek WHERE client_id=1;
Рисунок 3.2.4 Результат запроса №4
4.
Сумма покупок в период 2014-01-01 и 2016-01-01: SELECT SUM (itogo) FROM chek WHERE date BETWEEN ‘2014-01-01’ AND ‘2016-01-01’;
Рисунок 3.2.5 Результат запроса №5
5. Сумма продаж продавца которого id равен 1: SELECT SUM (itogo) FROM chek WHERE seller_id=1;
Рисунок 3.2.6 Результат запроса №6
6. Информация о дисконтных карт с упорядочиванием по типу карты: SELECT * FROM discount_card ORDER BY type_card;
Рисунок 3.2.7 Результат запроса №7
7. Какой товар продался, название, сумма и количество: SELECT product. name, sum, purchases. quantity FROM purchases INNER JOIN product ON purchases. product_id=product. id;
Рисунок 3.2.8 Результат запроса №8
Заключение
При работе над курсовым проектом была проделана работа над исследованием предметной области, выполнено инфологическое и даталогическое проектирование, выявлены сущности и бизнес-процессы.
Были выполнены следующие действия: · Создана реляционная база данных и модель "Сущность-связь", с последующим указанием связей между сущностями;
· Созданы несколько таблиц в программе MYSQL и были заполнены конкретной информацией, с помощью языка SQL;
· Выполнены несколько запросов, касающихся вывода нужной нам информации.
На данный момент база данных отвечает всем требованиям, предоставляемым к учебным базам данных, и практически в полной мере использует возможности СУБД MYSQL.
Список использованной литературы
1. Бен Форта "SQL". 2005.
2. Семенова И.И. "Сборник упражнений по стандарту SQL". 2005.
3. Abraham Silberschatz, Henry F. Korth, S. Sudarshan - Database System Concepts, 6th Edition. 2011.
4. Кевин Янк - PHP и MYSQL. От новичка к профессионалу. 2013.
5. Tim Converse, Joyce Park, Clark Morgan - PHP5 and MYSQL Bible. 2004.
6. Л. Аткинсон - MYSQL. Библиотека профессионала. 2002.
Приложение
CREATE SCHEMA IF NOT EXISTS `shop` DEFAULT CHARACTER SET utf8;
CREATE TABLE IF NOT EXISTS `shop`. `categories` (
`id` INT (11) NOT NULL AUTO_INCREMENT, `parent_id` INT (11), `category_name` VARCHAR (255) NOT NULL, `description` TEXT (255) NULL DEFAULT NULL, `category_image` VARCHAR (45) NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC), INDEX `fk_categories_categories_idx` (`parent_id` ASC), CONSTRAINT `fk_categories_categories`
FOREIGN KEY (`parent_id`)
REFERENCES `shop`. `categories` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = INNODB
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS `shop`. `manufacturers` (
`id` INT (11) NOT NULL AUTO_INCREMENT, `manufacturer_id` INT (11) NOT NULL, `name` VARCHAR (45) NOT NULL, `description` TEXT (255) NULL DEFAULT NULL, `price` DECIMAL (20,2) NOT NULL, `image` VARCHAR (45) NULL DEFAULT NULL, `quantity` INT (11) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC), INDEX `fk_product_manufacturers1_idx` (`manufacturer_id` ASC), CONSTRAINT `fk_product_manufacturers1`
FOREIGN KEY (`manufacturer_id`)
REFERENCES `shop`. `manufacturers` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = INNODB
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS `shop`. `product_properties` (
`id` INT (11) NOT NULL AUTO_INCREMENT, `product_id` INT (11) NOT NULL, `property_name` VARCHAR (255) NOT NULL, `property_value` VARCHAR (255) NOT NULL, `property_price` DECIMAL (10,2) NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC), INDEX `fk_product_properties_product1_idx` (`product_id` ASC), CONSTRAINT `fk_product_properties_product1`
FOREIGN KEY (`product_id`)
REFERENCES `shop`. `product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = INNODB
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS `shop`. `product_category` (
`product_id` INT (11) NOT NULL, `categories_id` INT (11) NOT NULL, INDEX `fk_product_category_categories1_idx` (`categories_id` ASC), INDEX `fk_product_category_product1_idx` (`product_id` ASC), CONSTRAINT `fk_product_category_categories1`
FOREIGN KEY (`categories_id`)
REFERENCES `shop`. `categories` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION, CONSTRAINT `fk_product_category_product1`
FOREIGN KEY (`product_id`)
REFERENCES `shop`. `product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = INNODB
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS `shop`. `discount_card` (
`id` INT (11) NOT NULL AUTO_INCREMENT, `serial_number` INT (30) NOT NULL, `type_dcard` INT (11) NOT NULL, `client_id` INT (11) NOT NULL, `accumulations` DECIMAL (20,2) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC), INDEX `fk_discount_card_type_dcard1_idx` (`type_dcard` ASC), INDEX `fk_discount_card_client1_idx` (`client_id` ASC), CONSTRAINT `fk_discount_card_type_dcard1`
FOREIGN KEY (`type_dcard`)
REFERENCES `shop`. `type_dcard` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION, CONSTRAINT `fk_discount_card_client1`
FOREIGN KEY (`client_id`)
REFERENCES `shop`. `client` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = INNODB
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS `shop`. `client` (
`id` INT (11) NOT NULL AUTO_INCREMENT, `surname` VARCHAR (45) NULL DEFAULT NULL, `name` VARCHAR (45) NOT NULL, `lname` VARCHAR (45) NULL DEFAULT NULL, `sex` VARCHAR (45) NOT NULL, `birthday` DATE NULL DEFAULT NULL, `phone` VARCHAR (45) NOT NULL, `email` VARCHAR (45) NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC))
ENGINE = INNODB
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS `shop`. `seller` (
`id` INT (11) NOT NULL AUTO_INCREMENT, `surname` VARCHAR (45) NOT NULL, `name` VARCHAR (45) NOT NULL, `lname` VARCHAR (45) NOT NULL, `birthday` DATE NOT NULL, `phone` VARCHAR (45) NULL DEFAULT NULL, `address` VARCHAR (255) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC))
ENGINE = INNODB
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS `shop`. `product_images` (
`id` INT (11) NOT NULL AUTO_INCREMENT, `product_id` INT (11) NOT NULL, `image` VARCHAR (255) NOT NULL, `title` VARCHAR (255) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC), INDEX `fk_product_images_product1_idx` (`product_id` ASC), CONSTRAINT `fk_product_images_product1`
FOREIGN KEY (`product_id`)
REFERENCES `shop`. `product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = INNODB
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS `shop`. `purchases` (
`id` INT (11) NOT NULL AUTO_INCREMENT, `chek_id` INT (11) NOT NULL, `product_id` INT (11) NOT NULL, `quantity` INT (11) NOT NULL, `sum` DECIMAL (20,2) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC), INDEX `fk_purchases_product1_idx` (`product_id` ASC), INDEX `fk_purchases_chek1_idx` (`chek_id` ASC), CONSTRAINT `fk_purchases_product1`
FOREIGN KEY (`product_id`)
REFERENCES `shop`. `product` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION, CONSTRAINT `fk_purchases_chek1`
FOREIGN KEY (`chek_id`)
REFERENCES `shop`. `chek` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = INNODB
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS `shop`. `type_dcard` (
`id` INT (11) NOT NULL AUTO_INCREMENT, `name` VARCHAR (45) NOT NULL, `description` TEXT (255) NULL DEFAULT NULL, `image` VARCHAR (45) NOT NULL, `discount` INT (2) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC))
ENGINE = INNODB
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS `shop`. `chek` (
`id` INT (11) NOT NULL AUTO_INCREMENT, `date` DATETIME NOT NULL, `client_id` INT (11) NOT NULL, `discount` INT (2) NULL DEFAULT NULL, `itogo` DECIMAL (20,2) NOT NULL, `seller_id` INT (11) NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC), INDEX `fk_chek_seller1_idx` (`seller_id` ASC), INDEX `fk_chek_client1_idx` (`client_id` ASC), CONSTRAINT `fk_chek_seller1`