Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Описание процесса создания Интернет-магазина.

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

Спроектируем возможный вариант создания Интернет-магазина книг. Нередко многим удобна и необходими доставка книг на дом. Составим необходимый минимум свойств и требований, предъявляемых к будущему Интернет-магазину. Сайт должен:

1) представлять описания и свойства товара в структурированных категориях;

2) показывать потенциальному покупателю информацию о товаре (книгах)

3) иметь возможность быстрого и относительно простого обновления внешнего вида сайта;

4) использовать внутреннюю банерную систему, использующую несколько популярных форматов банеров, в том числе и из внешних источников (банерных сетей);

5) позволять пользователю производить поиск товаров в названиях и описаниях товаров путем задания ключевых слов;

6) автоматизировать систему приема заказов, отправлять уведомления о заказе покупателю и владельцу Интернет-магазина;

7) обеспечить конфиденциальность информации о покупателях и заказах;

8) управлять работой Интернет-магазина через web-браузер.

Доставку товара предпологается производить с помощью одной из курьерских фирм и только в пределах одного города, в котором располагается магазин. Книжный магазин и курьерская служба заключают предварительное соглашение о том, что стоимость доставки будет составлять 2% от суммы заказа или не менее $1.

С учетом всех этих условий для организации Интернет-магазина выбираем популярный язык программирования Perl и база данных MySQL. Оба эти продукта поддерживают лицензию GNU, что снижает затраты на внедрение. Версии этих продуктов существуют для большинства операционных систем и поддерживаются практически всеми площадками, предоставляющими услуги по размещению сайтов.
Сайт вводится в действие поэтапно. Первоначально создается Интернет-каталог, после чего к нему добавляется функциональность Интернет-магазина. И, наконец, третьей ступенью является подключение к платежным системам.
Интернет-каталог включает в себя следующие возможности:

1) предоставление потенциальному покупателю информации о товаре (книгах);

2) представление описаний и свойств товара в структурированных категориях;

3) возможность быстрого и относительно простого обновления внешнего вида сайта;

4) использование внутренней банерной системы, поддерживающей несколько популярных форматов банеров, в том числе и из внешних источников (банерных сетей);

5) предоставление пользователю возможности производить поиск товаров в тексте названий и описаний товаров путем задания ключевых слов;

6) управление работой Интернет-магазина через web-браузер.

После завершения разработки Интернет-каталога и принятия его заказчиком необходимо добавить возможности Интернет-магазина, а именно:

1) автоматизировать систему приема заказов, организовать отправление уведомления о заказе покупателю и владельцу Интернет-магазина;

2) обеспечить конфиденциальность информации о покупателях и заказах;

3) обеспечить возможность управления работой Интернет-магазина через web-браузер.

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

Приступая к разработке сайта, частью которого является Интернет-магазин (или Интернет-каталог), необходимо четко представлять структуру навигации и информационного наполнения. Это позволит определить структуру Интернет-приложения и используемые технологии. Как и для большинства приложений, необходимо составить соглашения о присвоении имен.

Для хранения информации в базе данных необходимо предварительно определить группы и параметры данных, свеcти эту информацию в реляционные таблицы и установить между ними связи. Кроме того, необходимо задать первичные ключи и индексы, нормализовать структуру. Конечным результатом проектирования будет схема БД и типовой сценарий SQL на ее основе.

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

Организация структуры и работы категорий может быть совершенно различной, но обычно используется рекурсивная схема, при которой одно из полей записи содержит ссылку на родительскую категорию (рис. 1.5).
Рекурсивная схема категорий характеризуется параметрами, описанными в таблице 2.

Таблица 2. Поля таблицы категорий (Categories)

Поле таблицы Тип данных Описание
Id SMALLINT UNSIGNED Уникальный идентификатор категории
ParentCategory SMALLINT UNSIGNED Категория, по отношению к которой текущая является подкатегорией
Name VARCHAR(32) Название категории

 

Для обеспечения возможности структурировать товар в категориях введено поле ParentCategory. Это поле - не что иное, как рекурсивный внешний ключ, указывающий на уникальный идентификатор Id, категории уровнем выше. Уникальный идентификатор Id однозначно определяет запись в таблице и является первичным ключом.


Рисунок 2. Использование вложенности категорий

 

Первичный ключ - поле или набор полей таблицы, однозначно идентифицирующие каждую строку.

Рекурсивный внешний ключ - внешний ключ, ссылающийся на запись в собственной реляционной таблице.

Рекурсивный внешний ключ в нашем случае позволяет создавать вложенность категорий. Для указания корневой директории вводится логическое ограничение: корневая категория имеет идентификатор с первичным ключом Id=0.

Тип данных для полей Id и ParentCategory выбран исходя из того, что категорий в несколько раз меньше, чем товаров, и для нашего небольшого магазина вполне достаточно зарезервировать 65535 категорий/подкатегорий; для обоих полей используется тип SMALLINT UNSIGNED.

Поле Name имеет максимальную длину 32 символа, но этого достаточно, потому что название категории должно описываться одним, максимум двумя-тремя словами.

Как уже упоминалось выше, описать параметры книги можно в одной таблице, но можно вынести описание в несколько отдельных таблиц, это позволит повысить информативность Интернет-каталога и сведений о товарах, которые в нем представлены, а также упростит возможные изменения структуры базы данных в будущем. Таким образом, в нашем примере книги будут описаны тремя логически связанными таблицами:

таблицей информации о товарах, в которой описаны основные параметры книг (Books);

1) таблицей информации об авторах, в которой хранятся данные об авторах книг, представленных в Интернет-магазине (Authors);

2) таблицей информации об издательствах (Publishers).

Параметры таблицы товаров Books описаны в таблице 3.

Таблица 3. Поля таблицы книг (Books).

 

Поле таблицы Тип данных Описание
Id MEDIUMINT UNSIGNED Уникальный идентификатор товара
Category SMALLINT UNSIGNED Категория, к которой относится данная книга
Name VARCHAR(255) Название книги
Author SMALLINT UNSIGNED Автор книги
Publisher SMALLINT UNSIGNED Издательство
ISBN CHAR(13) Уникальный номер книги ISBN
ImageHREF VARCHAR(255) Путь к файлу изображения обложки книги
Synopsis TEXT Краткое описание
PagesCount SMALLINT Число страниц
PublicationDate YEAR Дата публикации
AppearDate DATE Время поступления книги в магазин
Price DECIMAL(6,2) Цена книги

 

Типы данных для полей определены в соответствии с особенностями реальных свойств товара и специфическими свойствами базы данных MySQL. Так, для названия книги (поле Name) определена максимальная длина 255 символов, и используется тип VARCHAR, а не CHAR, поскольку число букв в названии книг может быть различным. Использование полей переменной длины позволяет избежать хранения ненужной информации.

Вообще говоря, вопрос не так однозначен, поскольку браузеры удаляют двойные пробелы в соответствии со спецификацией HTML, а таблицы с постоянной длиной записи обрабатываются быстрее таблиц с переменной длиной записи. Но в нашем случае тип переменной длины (VARCHAR, TEXT) используется и в других полях таблицы, поэтому использование типа CHAR не повлияет качественно на скорость обработки записей.

Длина поля определяется максимально возможными или достаточными для большинства записей значениями. Так, для полей названия книги (поле Name) и краткого описания (поле Synopsis) определена длина 255 символов, чтобы гарантировать правильное представление наименования и описания товара. В то же время для поля ISBN 13 символов достаточно, чтобы точно описать уникальный ISBN- номер книги.

Номер в данном случае описывается в символьном виде, поскольку ISBN может иметь вид как "1-123-12345-1", так и "1-1234-1234-1".

Файлы с изображениями разработчики MySQL рекомендуют хранить в виде внешних файлов на диске, а в базе данных MySQL указывать только пути к этим файлам -- это существенно увеличивает скорость работы базы данных и приложения в целом, позволяет кэшировать изображения на стороне HTTP-сервера. Максимальная длина пути файла в большинстве операционных систем ограничивается 255 символами. Для описания числа страниц (поле PagesCount) достаточно предусмотреть тип SMALLINT, использующий 2 бита или диапазон от -32768 до +32767. Нам совсем не требуется так много, но следующий меньший тип TINYINT соответствует диапазону -128 до +127, или максимально 255 (в случае беззнакового типа), а этого недостаточно. Дата публикации (поле PublicationDate) описана как тип YEAR, поскольку интерес представляет именно год публикации. В то же время для времени поступления книги в магазин (поле AppearDate) выбран тип DATE, так как по этому полю будет производиться поиск наиболее новых книг (например, поступивших за последнюю неделю). Цена книги хранится в поле Price с типом DECIMAL(6,2), для данного проекта этого достаточно. Поля Author (информация об авторе) и Publisher (информация об издательстве, выпустившем книгу) описаны как SMALLINT UNSIGNED, они являются ссылками на записи в таблицах Authors и Publishers, то есть внешними ключами.

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

Запись о книге однозначно идентифицируются с помощью уникального поля Id, которое является первичным ключом таблицы.

Основные выборки из таблицы Books будут производиться по категориям (поле Category), так как книги однозначно привязаны к категории, к которой они относятся, с учетом даты появления книги в магазине (поле AppearDate), поэтому следует добавить составной индекс по этим двум полям.

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

В Интернет-магазине предусматривается возможность выборки информации по имени автора или названию издательства, следовательно, необходимо добавить еще два индекса (поля Author и Publisher). Об авторе достаточно знать имя и краткую биографическую справку. Список произведений, написанных определенным автором, формируется на основе данных таблицы Books. Параметры таблицы авторов Athors описаны в таблице 4.

Таблица 4. Поля таблицы авторов (Authors)

Поле таблицы Тип данных Описание
Id SMALLINT UNSIGNED Уникальный идентификатор автора
Name VARCHAR(255) Имя автора
Biography TEXT Краткая биографическая справка

 

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

Таблица 5. Поля таблицы издательств (Publishers)

Поле таблицы Тип данных Описание
Id SMALLINT UNSIGNED Уникальный идентификатор издательства
Name VARCHAR(255) Название издательства
Description TEXT Краткое описание издательства

 

Так же как и в таблице авторов, в этой таблице необходим только первичный ключ Id, однозначно определяющий запись в таблице.

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

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


Рисунок 3. Модель логической структуры данных

 

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

Таблица 6. Поля таблицы пользователей (Users)

Поле таблицы Тип данных Описание
Id MEDIUMINT UNSIGNED Уникальный идентификатор покупателя
Name CHAR (127) Имя покупателя
Surname CHAR (127) Фамилия покупателя
Email VARCHAR(64) E-Mail покупателя
Phone VARCHAR(20) Телефон для подтверждения заказа
Address VARCHAR(255) Адрес доставки
IP CHAR(14) Текущий IP покупателя
SessionKey INT UNSIGNED Уникальный код для авторизации
LastVisit DATETIME Время последнего посещения
OrderID INT UNSIGNED Номер текущего заказа

 

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

Поле Email определено длиной 64 символа. Возможно, это излишне, так как большинство адресов не превышают 15-30 символов, но представим, что кто-то с очень длинным адресом захочет купить товар в этом магазине. В случае с информацией о покупателях лучше перестраховаться и предусмотреть такую возможность.

Поле Phone (номер телефона для подтверждения заказа) используется для хранения как номера телефона, так и кода города/страны (например, 7-(812)-312-00-00), если пользователь ввел эту информацию.

Для поддержания сессий пользователя идентификация выполняется по полям IP (текущий IP покупателя) и SessionKey (уникальный код для авторизации).

С помощью proxy-серверов несколько пользователей могут использовать один IP-адрес; чтобы исключить возможность подмены пользователя, в поле SessionKey генерируется уникальный для конкретного пользователя ключ сессии.

Дополнительное поле LastVisit (время последнего посещения) поможет управляющему каталогом удалять "новых" пользователей, добавивших товары, но не завершивших покупки в течение длительного времени.

Первичным ключом в данном случае является Id, но кроме Id пользователь также характеризуется уникальным E-Mail-адресом. Основные выборки будут производиться по полям Id, IP и LastVisit, эти поля включаются в отдельный индекс.

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

Таблица 7. Поля таблицы пользовательской корзинки (Orders)

Поле таблицы Тип данных Описание
Id INT UNSIGNED Номер заказа
Amount TINYINT Число товаров, добавленных в покупательскую корзинку
Book INT UNSIGNED Идентификатор добавленного товара

 

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

Окончательная модель логической структуры базы данных представлена на рисунке 4.

Рисунок 4. Модель логической структуры Интернет-магазина

 

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

Если для создания схемы базы данных вы пользовались каким-либо CASE-средством, возможно, вы сможете сгенерировать сценарий автоматически, на основе составленной модели базы данных.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...