Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом финальный.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.31 Mб
Скачать

2.3.3. Субд “MySql”

MySQL является решением для малых и средних приложений. Входит в состав серверов WAMP, AppServ, LAMP и в портативные сборки серверов Денвер, XAMPP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в различные автономные программы. На рисунке 2.6 показан логотип данной СУБД.

Рис. 2.6. Логотип СУБД “MySQL”

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.[34]

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

Раздел 3 создание модуля каталога товаров

3.1. Структура базы данных

Для того, чтобы создать каталог товаров необходимо его информацию тоже внести в таблицу, которую создаём самостоятельно в базе vh44753_dle.В базе vh44753_dle создана таблица dle_witrina_tbl. Данная таблица создаётся для того, чтобы хранить в себе все данные о товарах. При работе модуль witrina выполняет запросы в эту таблицу и получает из неё данные. Таблица dle_witrina_tbl имеет в своей структуре семь столбцов. sat_id – порядковый номер товара в каталоге, cat_id – порядковый номер первой буквы названия товара по алфавиту, cat_name – название товара, cat-vid – название категории товара, cat_img – имя файла, иллюстрирующего товар, cat_news – краткое описание товара, cat_witrina – полное описание товара.

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

Для удобства навигации и перемещения по товарам используется алфавитное упорядочивание по названию. Так как все товары имеют названия на английском языке, то для упорядочивания используется английский алфавит. Поле cat_id может принимать только числовое значение для осуществления запросов и взаимодействий с другими операторами в коде. Отсюда последовало то, что каждой букве английского алфавита был присвоен номер в порядке возрастания. Всего в английском алфавите двадцать шесть букв, поэтому им были присвоены номера от одного до двадцати шести. Букве “A” был присвоен номер один и так далее до последней буквы “Z”, которой соответственно был присвоен номер двадцать шесть. В отличии от русского языка, в котором существуют символы никогда не стоящее в словах первыми, в английском языке существуют слова, начинающиеся с любой буквы. В случае каталога товаров бытовой электроники это тоже является актуальным. Названия техники, представленной в данном каталоге начинаются на все буквы английского алфавита. Это очень удобно и довольно хорошо выглядит с эстетической точки зрения, так как на сайте при нажатии на любую букву произойдёт перемещение на страницу с какими-либо товарами, названия которых начинаются на эту букву. В случае же, если бы товаров с названиями начинающимися на определённые буквы не было бы, то нажатие на некоторые из букв приводило бы к перемещению на пустые страницы. Выходом из этой ситуации могло было быть удаление некоторых букв, являющихся ссылками, но тогда алфавит на странице был бы не полным. Так же можно было бы в качестве решения данной проблемы оставить все буквы, но некоторые из них, которые ведут на пустые страницы подчеркнуть или выделить другим цветом. Однако в представленном каталоге эти решения не актуальны, так как представленный товарный ряд довольно обширен, наполнен сравнительно большим количеством различных товаров и фирм. В результате этого переходов на пустые страницы не будет и при поиске товара по любой из заглавных букв произойдёт перемещение на страницу, заполненную соответствующими результатами.

В столбец cat_name были в алфавитном порядке записаны названия товаров бытовой электроники. Присвоение каждому названию товара или по-другому cat_name определённого cat_id происходит самостоятельно вручную при заполнении таблицы dle_witrina_tbl. При вводе названия товара необходимо просчитать порядковый номер первого символа в его названии. Этот номер должен совпадать с номером, указанным в поле cat_id данного товара. Другими словами, сначала определяется количество товаров, начинающихся с определённой буквы, затем такое же количество строк создаётся в таблице dle_witrina_tbl. Для всех этих строк в поле cat_id будет одно значение. После того, как это всё будет сделано заполняются поля с названиями товаров cat_name. Все эти действия проделываются с каждой буквой по очереди. Система не может сама определять на какую букву начинается название какого-то определённого товара.

Столбец cat_vid содержит название категории каждого конкретного товара. Регистр символов в столбце имеет значение. Одно название категории, записанное в двух разных регистрах к двум товарам будет определено системой как две разные категории. Пробелы в названии не допускаются. При использовании пробела, те слова, которые стоят после него не определяются системой, поэтому в качестве решения выбрано использование нижнего прочерка. В столбце cat_vid названия категорий не располагаются в алфавитном порядке потому, что товары расположены в алфавитном порядке по своему названию. Модуль каталога товаров сам определяет, какое количество товаров находится какой-либо определённой категории.

В полях столбца cat_img прописаны названия файлов изображений формата jpg, созданных ранее. Все файлы находятся в папке images шаблона default. Каждый файл изображения относится к определённому товару каталога, являясь его иллюстрацией. Для простоты и наглядности каждый файл изображения в папке images имеет название, одинаковое с названием товара, к которому он относится. Единственно отличие состоит в том, что добавляется расширение jpg. Для отображения иллюстрации товара модуль обращается к таблице. В ней он находит путь к изображению и его название. После этого необходимое изображение отображается на странице каталога.

Поля столбцов cat_news содержат краткие описания для каждого отдельно взятого товара. Описания такого вида отображаются на страницах поиска товара по различным критериям, когда есть ссылка “Далее”. Здесь содержится общая информация для поверхностного ориентирования в каталоге товаров. Описываются самые главные параметры и характеристики бытовой электроники. В основном в полях столбца cat_news содержатся несколько первых строк описания из cat_witrina, то есть содержимое этих двух столбцов практически приблизительно одинаковое и отличается только размерами.[35]

В поля столбца cat_witrina внесены все данные о каждом отдельном товаре. В модуле witrina данные из этого столбца отображаются только тогда, когда пользователем будет произведено нажатие на ссылку “Далее”.

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

Поиск товара может осуществляться по данным первых четырёх столбцов – sat_id, cat_id, cat_name и cat_vid. То есть поиск происходит по порядковому номеру товара (идентификатору товара), по первой букве названия товара, по самому названию (полному или неполному), а также по категории товара.

Для успешной работы с базами данных были использованы некоторые специальные SQL-запросы. С помощью запроса mysql_query('SET character_set_client=cp1251') была установлена кодировка клиента. С помощью SQL-запроса mysql_query('SET character_set_results=cp1251') была установлена кодировка запросов. SQL-запросом mysql_query('SET character_set_connection=cp1251') мы установили кодировку соединения. С помощью SQL-запроса mysql_query('SET character_set_server=cp1251') была установлена кодировка сервера.

Также необходимо было увеличить максимальный размер пакета, передаваемый базе данных, чтобы не было ошибки. Для этого был использован SQL-запрос SET GLOBAL max_allowed_packet=64*1024*1024.