В MySQL предусмотрена возможность создания таблиц без транзакций, что необходимо приложениям, требующим максимально возможной скорости работы.
2.3.2 Выбор средств доступа к базе данных
Все современные СУБД, в том числе и Mysql, имеют достаточно широкий набор технологий и драйверов для подключения к базам данных, как локальных пользователей, так и пользователей находящихся в сети. Необходимость в этом возникла с развитием компьютерных сетей и сетевых технологий, а также с возникновением проблем кросплатформенности и масштабируемости проектируемых систем. В связи с тем, что в мире существует достаточно большое количество платформ (как программных, так и аппаратных), возникла необходимость в создании универсальных, средств доступа к СУБД, на зависящих не от программного не от аппаратного обеспечения, как серверной части комплекса, так и клиентской.
Такое промежуточное программное обеспечение часто называют драйверами доступа к СУБД.
Как упоминалось выше, любая современная СУБД содержит целый ряд таких драйверов, каждый из которых обеспечивает связь с той или иной платформой, операционной системой, программой и т.п.
Приведем список наиболее распространенных драйверов и технологий доступа к СУБД:
ODBC;
JDBC;
BDE;
TCP/IP;
UNIX Sockets.
ODBC
ODBC – это спецификация на API базы данных. Данный API является независимым как от СУБД так и от операционной системы на которой работает СУБД. ODBC API основан на CLI спецификации от X/Open и ISO/IEC. ODBC версии 3.х реализует полностью все функции, более ранние версии, реализовывали их лишь частично. Одна из главных функций реализованных в 3-й версии, это перемещаемые курсоры, которые очень эффективно используются в современных приложениях.
Все функции ODBC реализуются разработчиками конкретной СУБД, посредством написания специальных драйверов.
Важно понимать, что ODBC разработан для повышения совместимости различных СУБД, а не для расширения их функциональности.
JDBC
JDBC API обеспечивает универсальный способ доступа к данным, с использованием языка программирования Java. Используя JDBC 3.0 вы можете получить доступ практически к любому источнику данных, начиная от реляционных баз данных и заканчивая электронными таблицами и обычными файлами. Технология JDBC также обеспечивает мощную базу для создания своих собственных интерфейсов и средств доступа к данным.
BDE
Borland Database Engine (BDE) – это 32-х битное ядро разработки баз данных для Windows, связанное с такими средами разработки приложений как Delphi, C++Builder, IntraBuilder, Paradox и Visual dBASE для Windows. BDE – это мощное средство для разработки клиент-серверных приложений.
Архитектура BDE включает в себя многочисленные сервисы, используемые драйверами доступа к базам данных. Включает набор драйверов предоставляющих доступ к таким источникам данных как: Paradox, dBASE, FoxPro, Access, и текстовые файлы. При необходимости можно добавить Microsoft ODBC драйвер во встроенный ODBC socket. Также существует возможность подключения и работы с такими SQL серверами как Informix, DB2, InterBase, Oracle, и Sybase.
Исходя из вышеприведенного анализа средств доступа к СУБД, было принято решение использовать технологию прямого доступа к базе данных средствами PHP.
Язык php является свободно распространяемым, имеет очень много встроенных функция для работы с базами данных, также он обладает достаточной безопасностью для написания подобных клиентских приложений.
Поставляется с операционной системой и настраивается на конкретную СУБД пересборкой с сетевыми библиотеками базы. Сейчас существуют несколько сред для разработки программ на PHP. С одной стороны язык интерпретатор подобен sh csh ksh. Синтаксис подобен С++. Язык PHP очень простой, рабочий код появляется почти сразу.
Доступ к базам через библиотеки самих баз не накладывает никаких ограничений на доступ к данным. Используя ускоритель фирмы Zend производительность кода увеличивается на 40-60%. Легкая интеграция дополнительных модулей написанных на С/C++ через разделяемые библиотеки, при этом не требуется перенастройка APACHE и PHP. В последнее время появилась возможность выполнения кода на клиенте (plug-in).
Как и СУБД Mysql язык Php входит в большинство хостинг пакетов, предлагаемых отечественными и иностранными провайдерами. Этот фактор в связке с вышеперечисленными определил наш выбор в пользу данного языка программирования веб приложений.
2.3.3 Проектирование информационной базы
При разработке базы данных выделяются основные информационные сущности предметной области, выявляются связи между ними. Логическая структура базы данных определяется информационными потребностями проекта. При ее разработке выделяются основные информационные сущности предметной области, выявляются связи между ними. Затем, логическая структура оптимизируется в соответствии с реализуемыми целевыми функциями проекта.
Структура базы данных выглядит следующим образом:
Рис.2.6. Структура базы данных
Таблица 1. Поля таблицы категорий (Categories)
Поле таблицы | Тип данных | Описание |
Id | SMALLINT | Уникальный идентификатор категории |
ParentCategory | SMALLINT | Категория, по отношению к которой текущая является подкатегорией |
Name | VARCHAR(32) | Название категории |
Таблица 2. Поля таблицы книг (Books)
Поле таблицы | Тип данных | Описание |
Id | MEDIUMINT UNSIGNED | Уникальный идентификатор товара |
CategoryID | SMALLINT UNSIGNED | Категория, к которой относится данная книга |
Name | VARCHAR(255) | Название книги |
AuthorID | SMALLINT UNSIGNED | Автор книги |
PublisherID | SMALLINT UNSIGNED | Издательство |
ISBN | CHAR(13) | Уникальный номер книги ISBN |
ImageHREF | VARCHAR(255) | Путь к файлу изображения обложки книги |
Synopsis | TEXT | Краткое описание |
PagesCount | SMALLINT | Число страниц |
PublicationDate | YEAR | Дата публикации |
AppearDate | DATE | Время поступления книги в магазин |
Count | INTEGER | Количество на складе |
Price | DECIMAL(6,2) | Цена книги |
Таблица 3. Поля таблицы авторов (Authors)
Поле таблицы | Тип данных | Описание |
Id | SMALLINT UNSIGNED | Уникальный идентификатор автора |
Name | VARCHAR(255) | Имя автора |
Biography | TEXT | Краткая биографическая справка |
Таблица 4. Поля таблицы издательств (Publishers)
Поле таблицы | Тип данных | Описание |
Id | SMALLINT UNSIGNED | Уникальный идентификатор издательства |
Name | VARCHAR(255) | Название издательства |
Description | TEXT | Краткое описание издательства |
Таблица 5. Поля таблицы пользователей (Users)
Поле таблицы | Тип данных | Описание |
Id | MEDIUMINT UNSIGNED | Уникальный идентификатор покупателя |
Name | CHAR (127) | Имя покупателя |
Surname | CHAR (127) | Фамилия покупателя |
VARCHAR(64) | E-Mail покупателя | |
Phone | VARCHAR(20) | Телефон для подтверждения заказа |
Address | VARCHAR(255) | Адрес доставки |
IP | CHAR(14) | Текущий IP покупателя |
SessionKey | INT UNSIGNED | Уникальный код для авторизации |
Таблица 1.6. Поля таблицы пользовательской корзинки (Orders)
Поле таблицы | Тип данных | Описание |
Id | INT UNSIGNED | Номер заказа |
Amount | TINYINT | Число товаров, добавленных в покупательскую корзинку |
OrderStatusID | INTEGER | Состояние заказа |
Date | DATETIME | Дата заказа |
UserID | INTEGER | Покупатель |
Payment | BYTE | Вид оплаты |
Amount | CHAR(10) | Сумма заказа |
Таблица 1.7. Поля таблицы детализации пользовательской корзинки (OrderDetail)
Поле таблицы | Тип данных | Описание |
Id | INT UNSIGNED | Номер по порядку |
OrderID | INTEGER | Номер заказа |
OrderStatusID | INTEGER | Состояние заказа |
Quantity | DATETIME | Количество |
UserID | INTEGER | Покупатель |
Payment | BYTE | Вид оплаты |
BookID | CHAR(10) | Наименование товара |
Таблица 1.8. Поля таблицы статус заказа (OrderStatus)
Поле таблицы | Тип данных | Описание |
Id | INT UNSIGNED | Код состояния заказа |
Stutus | INTEGER | Название состояния заказа |
2.4 Архитектура электронного магазина
Архитектура сайта - систематизация информации и навигации по ней с целью помочь посетителям более успешно находить нужные им данные. Хорошо продуманная грамотная архитектура сайта гарантирует, что пользователи потратят меньше времени на поиск нужной информации.
Разработка архитектуры сайта должна вестись с учётом наиболее важной информации с точки зрения продвижения товаров/услуг на интернет-рынке. В процессе создания структуры нового сайта, либо оптимизации структуры уже существующего, необходимо концентрировать внимание потребителей именно на этой информации и управлять посещаемостью сайта потенциальными клиентами именно в наиболее важных разделах сайта в соответствии с позиционированием на рынке, продвигаемых товаров/услуг.