Разработка и внедрение интернет-магазина коньков

     ОГЛАВЛЕНИЕ

  ВВЕДЕНИЕ

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

     Цель  курсовой работы: создать прототип интернет-магазина коньков.

     Задачами  данной курсовой работы являются:

     1) проектирование и создание базы  данных в СУБД MYSQL для интернет-магазина  коньков.

     2) разработка Web интерфейса сайта на  языке программирования PHP, который будет динамически создавать страницы и работать с созданной базой данных.

     3) расчёт экономической эффективности внедрения интернет-магазина коньков.

     Курсовая  работа следующей структуры: введение, три главы, заключение, список использованных источников, пять приложений. В первой главе содержатся материалы по описанию и анализу предметной области, разработке концептуальной и логической моделей базы данных с последующей реализацией их в интерактивной среде Интернет с использованием web–интерфейса. Во второй главе описан процесс построения физической модели базы данных на языке SQL, и активизация созданного сайта помощью языка программирования PHP. В третьей части курсовой работы рассчитывается экономическая эффективность разработки и внедрения интернет-магазина коньков, чистый дисконтированный доход за 5 лет и динамический срок окупаемости вложенных инвестиций.

     В качестве базы для разработки практического  материала будет использован Web-сайт рынка коньков. Сайт электронной коммерции строится для решения основной задачи коммерции – получения прибыли.

1 ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ РЫНКА коньков

1.1 Описание предметной области рынка коньков

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

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

     Помимо  этого, различные представления  могут по-разному отображать одни и те же данные. Разработаем базу данных для автоматизации работы Вэб-сайта «Рынок коньков». В Интернет-магазине «Рынок коньков» представлены к продаже различного ассортимента коньки различных видов (хоккейные, фигурные, любительские, детские и взрослые). Для рационального управления магазином необходимо контролировать различную поступающую информацию, которую необходимо структурировать и хранить в различных базах данных. Имеющиеся базы данных должны быть взаимосвязаны между собой. Для правильного создания баз данных с такой информацией необходимо определить сущности магазина. В соответствии с заданием в курсовой работе необходимо спроектировать базу данных рынка коньков. Проанализировав существующие web-сайты, занимающиеся продажей коньков, определим основные объекты для организации базы данных. На сайтах

http://www.shlem.by/default.asp?idRbr=795,

http://konki-sportum.ru/,

http://www.shlem.by/default.asp?idRbr=785, http://www.masterskating.ru/,

http://shop.by/1122/1123/111382/?page_id=1&currency=BYB&sort=rand&tabview=yes,

а также  многих других, размещаются Интернет-магазины по продаже коньков. Данные магазины представляют свои товары, классифицируя их по ассортименту. Выбирая коньки определённого вида, покупатель видит на экране браузера все имеющиеся в продаже ледовые коньки данного вида. Остановив свой выбор на чем-то конкретном, покупатель переходит к бланку заказа, в который вносит данные о себе и оформляет счёт на заказываемые коньки. Эти данные обрабатываются при оформлении заказа и отправляются администратору магазина. Таким образом, объектами исследуемой предметной области следует определить:

     - ледовые коньки;

     - Покупатель;

     - Счёт.

1.2 Построение концептуальной  модели базы данных  рынка коньков

     Проектирование  концептуальной модели базы данных заключается  в разработке моделей данных, которые содержат несколько высокоуровневых сущностей и связей. Далее создаются нисходящие уточнения низкоуровневых сущностей, связей и относящихся к ним атрибутов. Проектирование концептуальной модели демонстрируется в концепции модели «сущность – связь» (ER-модель). Модель «сущность – связь» относится к семантическим моделям. ER-модели используется для повышения эффективности и точности проектирования баз данных.

     Основными понятиями ER-модели являются сущность, связь и атрибут.

     Сущность – это реальный или представляемый объект, информация о котором должна сохраняться и быть доступна. В диаграммах ER-модели сущность представляется в виде прямоугольника, содержащего имя сущности. При этом имя сущности – это имя типа, а не некоторого конкретного экземпляра этого типа. Для большей выразительности и лучшего понимания имя сущности может сопровождаться примерами конкретных объектов этого типа. Каждый экземпляр сущности должен быть отличим от любого другого экземпляра той же сущности (это требование в некотором роде аналогично требованию отсутствия кортежей-дубликатов в реляционных таблицах).

     Связь – это графически изображаемая ассоциация, устанавливаемая между двумя сущностями. Эта ассоциация всегда является бинарной и может существовать между двумя разными сущностями или между сущностью и ей же самой (рекурсивная связь). В любой связи выделяются два конца (в соответствии с существующей парой связываемых сущностей), на каждом из которых указывается степень конца связи (сколько экземпляров данной сущности связывается), обязательность связи (т.е. любой ли экземпляр данной сущности должен участвовать в данной связи). Связь представляется в виде ромба и имени связи внутри ромба. Как и сущность, связь – это типовое понятие, все экземпляры обеих пар связываемых сущностей подчиняются правилам связывания.

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

  • Вид коньков (vid).
  • коньки (konki).
  • Покупатель (pokupatel).
  • Счёт (schet).

     Определим типы связей существующих между выделенными мною сущностями. Для этого снова анализируем требования к БД (базе данных). Тип связи представляет собой название связи, её координальность в этой связи. Результат анализа представлен в таблице 1.1. 

Таблица 1.1 – Типы связей между сущностями

Тип

сущности

Тип связи Тип сущности Координальность
vid принадлежит (belong) konki
pokupatel оформляет (bill) schet
konki принадлежит(belong) schet
 

     На  следующем этапе проектирования базы данных мы построим ER-диаграмму отражающую основные виды сущностей и связи между ними (см. рисунок 1.1).

 

Рисунок 1.1 – ER-диаграмма концептуальной модели 

     Выделим атрибуты сущностей. Выявленные атрибуты приведены в таблице 1.2. Затем определим атрибуты, являющиеся потенциальными и первичными ключами. Для этого из таблицы 1.2 выберем возможные потенциальные ключи. Затем из них выберем первичные ключи. 

Таблица 1.2 – Атрибуты сущностей и связей

Тип сущности Атрибут Домен Обязательность
konki konki_id Целое Да
nazvanie Символьный(170)  
opisanie Символьный(255)  
proizvoditel Символьный(100)  
cena Целое  
vid_id Целое  
images Символьный(20)  
schet schet_id Целое Да
data_oforml date  
pokupatel_id Целое Да
pokupatel pokupatel_id Целое Да
fio Символьный(100) Да
address Символьный(100) Да
phone Символьный(20) Да
email Символьный(60) Да
vid vid_id Целое Да
nazvanie Символьный(50) Да
 

     Первичный ключ – это потенциальный ключ, вероятность потери уникальности которого мала по сравнению с другими потенциальными ключами. Также следует учесть то, что СУБД (системе управления базами данных) легче индексировать числовые, чем символьные ключи. На основании вышеизложенного, составим таблицу 1.3 первичных и альтернативных ключей.

Таблица 1.3 – Первичные и альтернативные ключи

Сущность Первичный ключ Альтернативный  ключ
konki konki_id nazvanie

konki_id

schet schet_id schet_id

pokupatel_id

data_oforml

pokupatel pokupatel_id fio

phone

vid vid_id nazvanie

1.3 Построение логической модели базы данных рынка коньков

     Логическая  модель данных является начальным прототипом будущей базы данных. Логическая модель строится в терминах информационных единиц, но без привязки к конкретной СУБД. Более того, логическая модель данных необязательно должна быть выражена средствами именно реляционной модели данных. При построении логической модели можно использовать язык ER-диаграмм (от англ. Entity–Relation, т.е. сущность–связь).

     В них сущности изображаются прямоугольниками и содержат имя сущности, атрибуты – овалами, связи (ассоциирование сущности) – ромбами, над которыми может проставляться степень связи (например,1:М – означает связь типа один-ко-многим; может использоваться символ , заменяющий слово «много»).

     Логическая модель описывает понятия предметной области, их взаимосвязь, а также ограничения на данные, налагаемые предметной областью. В нашем случае присутствует связь М:М konki принадлежит (belong) schet).

     Так как реализация такой связи в  СУБД реляционного типа затруднительна, нужно ввести новую сущность, назовём её schetpok (счёт покупателя) (см. рисунок 1.2). 

 

Рисунок 1.2 – Введение новой сущности schetpok 

     Будем строить логическую модель при использовании  языка ER-диаграмм. Логическая модель должна описывать понятия предметной области, их взаимосвязь, а также ограничения на данные, налагаемые предметной областью. ER-диаграмма логической модели базы данных приведена на рисунке 1.3 
 

       

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

       
 

Рисунок 1.3 – ER-диаграмма логической модели базы данных Интернет-магазина коньков

2 РЕАЛИЗАЦИЯ МОДЕЛИ БАЗЫ ДАННЫХ В ИНТЕРАКТИВНОЙ СРЕДЕ ИНТЕРНЕТ

2.1 Построение физической модели данных рынка коньков на языке SQL средствами СУБД MySQL

     Далее приступим к физическому проектированию базы данных. Любая база данных должна состоять из таблиц (отношений), поэтому необходимо построить таблицы, основываясь на логической модели базы данных. Правила перевода из логической модели данных в физическую следующие (см. рисунок 2.1):

  1. Объекты становятся таблицами в физической базе данных;
  2. Атрибуты становятся колонками (полями) в физической базе данных. Для каждого атрибута выбирается свой тип данных;
  3. Уникальные идентификаторы становятся колонками, не допускающими значение NULL. В физической базе данных они называются первичными ключами (primary key).

     

       

       

     

     

     

       

     

     

     

     

       

     

     Рисунок 2.1 – Схема таблиц для базы данных Интернет-магазина коньков 

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

     Переведем все таблицы в SQL (язык структурированных запросов). В общем случае модели данных разрабатываются таким образом, чтобы не зависеть от конкретной базы данных. Поэтому разработанную физическую модель данных можно применить к любой СУБД. В нашем случае это будет MySQL. MySQL – компактный многопоточный сервер баз данных. MySQL характеризуется большой скоростью, устойчивостью и лёгкостью в использовании. В базе данных MySql таблицы создаются с помощью sql-запроса.

     Для выполнения операций с реляционными базами данных язык SQL позволяет создавать  запросы такие как: CREATE TABLE (создать таблицу), SELECT (выбрать из таблицы), UPDATE (добавить в таблицу), DELETE (удалить из таблицы). Результатом запроса всегда является таблица требуемой структуры с требуемыми данными.

     Объясним название полей таблиц:

     CREATE TABLE konki (//создать таблицу «конки»

       konki_id int(11) NOT NULL auto_increment,//идентификационный номер ключевого поля konki_id

        nazvanie varchar(170) NOT NULL,//название коньков

        opisanie varchar(255) NOT NULL,// описание коньков

        proizvoditel varchar(100) NOT NULL,//производитель коньков

        cena int(20) DEFAULT '0' NOT NULL,//цена коньков

        vid_id int(11) DEFAULT '0' NOT NULL,//вид коньков

        images varchar(20) NOT NULL,//картинка коньков

        PRIMARY KEY (konki_id) ); //первичный ключ konki_id

       CREATE TABLE pokupatel ((//создать таблицу «покупатель»

        pokupatel_id int(11) NOT NULL auto_increment,//идентификационный номер ключевого поля pokupatel _id

        fio varchar(100) NOT NULL,//фамилия-имя-отчество покупателя, заказывающего коньки

        address varchar(100) NOT NULL,//адрес покупателя, заказывающего коньки

        phone varchar(20) NOT NULL,//контактный телефон покупателя, заказывающего коньки

        email varchar(60) NOT NULL,//электронный адрес покупателя, заказывающего коньки

        PRIMARY KEY (pokupatel_id) ); //первичный ключ pokupatel_id

     CREATE TABLE schet (//создать таблицу «счёт»

        schet_id int(11) NOT NULL auto_increment, //идентификационный номер ключевого поля schet_id

        data_oforml date DEFAULT '0000-00-00' NOT NULL,//дата оформления заказа

        pokupatel_id int(11) DEFAULT '0' NOT NULL,//идентификационный номер покупателя, оформившего заказ

        PRIMARY KEY (schet_id));//первичный ключ schet_id

     CREATE TABLE schetpok (//создать таблицу «счёт покупателя»

        schetpok_id int(11) NOT NULL auto_increment,//идентификационный номер ключевого поля schetpok_id

        schet_id int(11) DEFAULT '0' NOT NULL,//идентификационный номер счёта

        konki_id int(20) DEFAULT '0' NOT NULL,//идентификационный номер коньков

        kolvo int(11) DEFAULT '0' NOT NULL,//количество заказанных коньков

        PRIMARY KEY (schetpok_id) );// первичный ключ schetpok_id

     CREATE TABLE vid (//создать таблицу «вид»

        vid_id int(11) NOT NULL auto_increment,//идентификационный номер вида коньков

        nazvanie varchar(50) NOT NULL,//название вида коньков

        PRIMARY KEY (vid_id));//первичный ключ vid_id

     В таблицы konki и vid, вставим значения полей, которые будут храниться в БД. Вставка значений в поля таблицы осуществляется с помощью команды INSERT INTO konki VALUES и означает – вставить в таблицу konki значения. Значения указываются в том порядке, в котором заданы поля. Расшифруем вставку данных в таблицу s konki:

     INSERT INTO konki VALUES ('2', 'Фигурные коньки', 'Фигурные конки Vimpex Sport PW-215 L\L. Натуральная кожа снаружи и внутри, прочная фиксация. Прекрасно подходит для начинающих и опытных любителей катков. Размер 36-42.', 'Vimpex Sport', '165000', '2', '5');

     '2'- 2-ые по счёту конки в поле konki_id; 'Фигурные коньки' – название коньков в поле nazvanie; 'Фигурные конки  Vimpex Sport PW-215 L\L. Натуральная кожа снаружи и внутри, прочная фиксация. Прекрасно подходит для начинающих и опытных любителей катков. Размер 36-42.' – описание коньков в поле opisanie; 'Vimpex Sport' – производитель коньков в поле proizvoditel, '165000' – цена коньков в поле cena; '2' – номер вида коньков в поле vid_id, '1' – название картинки соответствующих ледовых коньков.

     Полный  листинг таблиц, которые необходимо вставить в базу данных, приведён в  ПРИЛОЖЕНИИ 1 Shema.

2.2 Реализация проектируемой схемы базы данных рынка коньков с использованием Web-интерфейса, созданного на языке программирования PHP

 

     Кратко  опишем взаимодействие web-страницы с базой данных. База данных находится локально на нашем web-сервере. На web-странице размещается форма, в которую пользователь вводит свой запрос или те данные, которые нужно передать. После отправки данных из формы на сервер последний запускает написанную нами программу с помощью РНР-языка, которая извлекает данные, переданные пользователем. Далее программа формирует запрос на языке SQL для выборки или изменения данных, а СУБД делает всё остальное. Обычно такие программы создаются в виде CGI-сценариев. Возможно, также встраивание программы прямо в HTML-страницу.

     Основная  задача РНР-языка – интерпретация  сценариев (программ) для генерации web-страниц, отсылаемых программе-клиенту (браузеру). Сценарий (скрипт) может содержать как РНР–, так и HTML-код. HTML-код пересылается в литеральном представлении, а РНР– код выполняется, и клиенту отсылается результат его работы. Таким образом, пользователь никогда не видит РНР– кода. Для полноценной работы с РНР необходимо кроме самого языка ещё и web-сервер. В качестве web-сервера можно использовать Apache. Наш интернет-магазин реализуем с использованием языка гипертекстовой разметки html, языка программирования php и СУБД MySQL. Главная часть функционирования сайта – работа с базой данных. Листинг базы данных пишется в Текстовом редакторе Блокнот и сохраняется под именем SHEMA.

     Для работы с базой данных через web-интерфейс необходимо выполнить следующую последовательность действий:

  • Соединиться с сервером баз данных;
  • Выбрать базу данных;
  • Выполнить SQL-запрос;
  • Вывести данные, полученные в результате запроса.

     Необходимо написать PHP- скрипты, встроенные в HTML – страницы и сохранить их с расширением *.php. Сами скрипты, сформированные из ряда инструкций, находятся на сервере и их содержимое посетителю Интернет-магазина просмотреть невозможно. При активизации PHP- скрипта серверная программа выполняет команды php этого скрипта и результат возвращает программе-браузеру. Соединение с сервером базой данных выполняется функцией mysql_connect("localhost","root",""); где localhost – имя узла (localhost), на котором размещается сервер MySQL, имя пользователя (root), и пароль ("") – в данном случае без пароля. При успешном соединении функция возвращает идентификатор связи с БД, а в случае неудачи – значение false. 

     Выбор базы данных выполняется функцией mysql_select_db("konki_baza"); и означает «выбрать базу данных

konki_baza»; для выполнения запроса к БД используется функция: $query1="select*from vid"; – означает «выбрать из таблицы vid». Далее выполнить запрос: $res1=mysql_query($query1); т.е. функции передаётся запрос, который необходимо выполнить, при успешном выполнении функция возвращает идентификатор результата. Идентификатор результата – это ключ доступа к возвращённым запросом строкам, которых может быть ноль, одна и более: $num_vid=mysql_num_rows($res1); – сообщает количество строк, возвращённых запросом.

     Коды html и php-коды сценариев пишутся в  Текстовом редакторе Блокнот, php-коды сценариев встраиваются в html-страницы и сохраняются с расширением* php. Рассмотрим сценарий, отображающий главную страницу index.php, на которой производим выборку видов товаров:  

     <?php

     mysql_connect("localhost","root",""); //Открытие соединения с MySQL, где localhost - имя компьютера, root- имя пользователя, ""-без пароля

     mysql_select_db("konki_baza"); //Выбрать базу данных konki_baza

     print"<font face=Arial size=2 color=black><b><h2>&nbsp;<center>Виды  коньков </center></h2></b></font><br>";

     $query1="select * from vid";//Выбрать все записи из таблицы vid

Разработка и внедрение интернет-магазина коньков