Разработка базы данных для CMS интернет-магазина

 















Курсовая работа

Разработка базы данных для CMS интернет-магазина



Оглавление


Введение

. Основные понятия

.1 Что такое реляционная база данных

.2 Что такое SQL

.3 Что такое CMS

.4 Основные функции CMS

.5 Интернет-магазин

.6 Что такое сервер MySQL

.7 Типы данных MySQL

. Проектирование и создание базы данных

.1 Таблица категорий товара

.2 Таблица покупателей

.3 Таблица способов доставки

.4 Таблица товаров

.5 Таблица заказов

.6 Таблица заказанных товаров

.7 Итоги создания базы данных

. Разработка SQL выборок данных из БД

.1 Выборка таблицы категорий

.2 Выборка всех товаров определенной категории

Заключение

Список литературы



Введение


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

Целями данного курсового проекта являются: закрепление знаний и навыков, полученных в рамках курса «Базы данных», и получение практического опыта проектирования и реализации баз данных в архитектуре «клиент-сервер».

Реляционная база данных содержит как структурную, так и семантическую информацию. Структура базы данных определяется числом и видом включенных в нее отношений, и связями типа «один-ко-многим», существующими между кортежами этих отношений. Семантическая часть описывает множество функциональных зависимостей, существующих между атрибутами этих отношений. К сожалению, не все отношения одинаково желательны. Таблица, отвечающая минимальному определению отношения, может иметь быть неэффективную или неподходящую структуру. Для некоторых отношений изменение данных может привести к нежелательным последствиям, называемых аномалиями модификации (modification anomalies). Аномалии могут быть устранены путем разбиения исходного отношения на два или более новых отношения. В большинстве случаев нормализация является более предпочтительной.

таблица магазин сервер база данных



1. Основные понятия


1.1 Что такое реляционная база данных


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


ИмяТелефонАдресИванов Иван+7 (900) 300-20-10Ул. Мясницкая 5Петр Петров+7 (900) 300-50-40Ул. Ленина 6Сергей Иванов+7 (921) 210-20-10Ул. Строителей 1

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

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


1.2 Что такое SQL


SQL это язык ориентированный специально на реляционные базы данных. Он устраняет много работы, которую мы должны были бы сделать, если бы мы использовали универсальный язык программирования, например C. Чтобы сформировать реляционную базу данных на C, нам необходимо было бы начать с самого начала. Мы должны были бы определить объект - называемый таблицей, которая могла бы расти, чтобы иметь любое число строк, а затем создавать постепенно процедуры для помещения значений в нее и извлечения из них. Если бы мы захотели найти некоторые определенные строки, нам необходимо было бы выполнить по шагам процедуру, подобную следующей:

1. Рассмотреть строку таблицы.

2. Выполнить проверку - является ли эта строка одной из строк, которая нам нужна.

3. Если это так, сохраните ее где-нибудь, пока вся таблица не будет проверена.

4. Проверить, имеются ли другие строки в таблице.

5. Если имеются, возвратитесь на шаг 1.

6. Если строк больше нет, вывести все значения сохраненные в шаге 3.

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


1.3 Что такое CMS


Система управления содержимым (контентом) (англ. Content management system, CMS) - информационная система или компьютерная программа, используемая для обеспечения и организации совместного процесса создания, редактирования и управления контентом (то есть содержимым).


1.4 Основные функции CMS


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

Публикация содержимого, представление информации в виде, удобном для навигации, поиска. В системе управления содержимым могут находиться самые различные данные: документы, фильмы, фотографии, номера телефонов, научные данные и так далее. Такая система часто используется для хранения, управления, пересмотра и публикации документации.


1.5 Интернет-магазин


Интернет-магазин - сайт, торгующий товарами посредством сети Интернет. Позволяет пользователям онлайн, в своём браузере, сформировать заказ на покупку, выбрать способ оплаты и доставки заказа, оплатить заказ, например, электронными деньгами.


1.6 Что такое сервер MySQL


MySQL - свободная реляционная система управления базами данных. Разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей. Именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.является решением для малых и средних приложений. Входит в состав серверов WAMP, AppServ, LAMP и в портативные сборки серверов Денвер, XAMPP, VertrigoServ. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

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

Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.


1.7 Типы данных MySQL


1.7.1 Числовые типы данных


Тип данныхОбъем памятиДиапазонОписаниеTINYINT (M)1 байтот -128 до 127 или от 0 до 255 Целое число. Может быть объявлено положительными с помощью ключевого слова unsigned, тогда эл. Столбца нельзя присвоить отрицательное значение. Необязательные параметр М - кол-во симв. Необязательный атрибут ZEROFILL позволяет по умолчанию заполнить свободные позиции нулямиSMALLINT (M)2 байтаот -32768 до 32767 или от 0 до 65535аналогично предыдущему, но с большим диапазоном.MEDIUMINT (M)3 байтаот -8388608 до 8388608 или от 0 до 16777215INT (M) или INTEGER (M)4 байтаот -2147683648 до 2147683648 или от 0 до 4294967295BIGINT (M)8 байтот - 263 до 263 или от 0 до 264 BOOL или BOOLEAN1 байтлибо 0, либо 1Булево значение. 0 - ложь (false), 1 - истина (true)DECIMAL (M,D) или DEC (M,D) или NUMERIC (M,D)M + 2 байтазависят от параметров M и D Используются для величин повышенной точности, например, для денежных данных. M - количество отводимых под число символов (максимальное значение - 64). D - количество знаков после запятой (максимальное значение - 30). Пример: DECIMAL (5,2) - будет хранить числа от -99,99 до 99,99.FLOAT (M,D)4 байтамин. значение +(-) 1.175494351 * 10-39 макс. значение +(-) 3. 402823466 * 1038Вещественное число (с плавающей точкой). Может иметь параметр UNSIGNED, запрещающий отрицательные числа, но диапазон значений от этого не изменится. M - количество отводимых под число символов. D - количество символов дробной части.DOUBLE (M,D)8 байтмин. значение +(-) 2.2250738585072015 * 10-308 макс. значение +(-) 1.797693134862315 * 10308аналогично предыдущему, но с большим диапазоном.

1.7.2 Строковые типы данных


Тип данныхОбъем памятиДиапазонОписаниеCHAR (M)M символовM символовПозволяет хранить строку фиксированной длины М. Значение М - от 0 до 65535. Примеры: CHAR (8) - хранит строки из 8 символов и занимает 8 байтов. Например, любое из следующих значений: '', 'Иван','Ирина', 'Сергей' будет занимать по 8 байтов памяти. А при попытке ввести значение 'Александра', оно будет усечено до 'Александ', т.е. до 8 символов.VARCHAR (M)L+1 символовМ символовПозволяет хранить переменные строки длиной L. Значение М - от 0 до 65535. Примеры: VARCHAR (3) - хранит строки максимум из 3 символов, но пустая строка '' занимает 1 байт памяти, строка 'a' - 2 байта, строк 'aa' - 3 байта, строка 'aaa' - 4 байта. Значение более 3 символов будет усечено до 3.BLOB, TEXTL+2 символов216-1 символовПозволяют хранить большие объемы текста. Причем тип TEXT используется для хранения именно текста, а BLOB - для хранения изображений, звука, электронных документов и т.д.MEDIUMBLOB, MEDIUMTEXTL+3 символов224-1 символов Аналогично предыдущему, но с большим размером.LONGBLOB, LONGTEXTL+4 символов232-1 символовENUM ('value1', 'value2', ...,'valueN')1 или 2 байта65535 элементовСтроки этого типа могут принимать только одно из значений указанного множества. Пример: ENUM ('да', 'нет') - в столбце с таким типом может храниться только одно из имеющихся значений.SET ('value1', 'value2', ...,'valueN')до 8 байт64 элементаСтроки этого типа могут принимать любой или все элементы из значений указанного множества. Пример: SET ('первый', 'второй') - в столбце с таким типом может храниться одно из перечисленных значений, оба сразу или значение может отсутствовать вовсе.

1.7.3 Календарные типы данных


Тип данныхОбъем памятиДиапазонОписаниеDATE 3 байтаот '1000-01-01' до '9999-12-31'Предназначен для хранения даты. В качестве первого значения указывается год в формате "YYYY", через дефис - месяц в формате "ММ", а затем день в формате "DD". В качестве разделителя может выступать не только дефис, а любой символ отличный от цифры.TIME3 байтаот '-838:59:59' до '838:59:59'Предназначен для хранения времени суток. Значение вводится и хранится в привычном формате - hh:mm:ss, где hh - часы, mm - минуты, ss - секунды. В качестве разделителя может выступать любой символ отличный от цифры.DATATIME8 байтот '1000-01-01 00:00:00' до '9999-12-31 23:59:59'Предназначен для хранения и даты и времени суток. Значение вводится и хранится в формате - YYYY-MM-DD hh:mm:ss. В качестве разделителей могут выступать любые символы отличные от цифры.TIMESTAMP4 байтаот '1970-01-01 00:00:00' до '2037-12-31 23:59:59'Предназначен для хранения даты и времени суток в виде количества секунд, прошедших с полуночи 1 января 1970 года (начало эпохи UNIX).YEAR (M)1 байтот 1970 до 2069 для М=2 и от 1901 до 2155 для М=4 Предназначен для хранения года. М - задает формат года. Например, YEAR (2) - 70, а YEAR (4) - 1970. Если параметр М не указан, то по умолчанию считается, что он равен 4.


2. Проектирование и создание базы данных


2.1 Таблица категорий товара


Для начала нам нужно создать таблицу категорий товара. Назовем её «cat» (cat - это сокращенно от categories). В таблице cat мы создадим 3 поля для хранение наших данных.

1)cat_id - порядковые номер или счетчик наших категорий. Тип данных у cat_id мы сделаем tinyint(3), добавим ключевое слово unsigned, чтобы исключить отрицательные числа. Добавим атрибут AUTO_INCREMENT для автоматического инкремента.

2)cat_name - поля для имени наших категорий. Тип данных varchar(40)

3) parent_id - поле parent_id указывает на тип категории (Родительская/Дочерняя). Тип поля мы сделаем tinyint(3), добавим ключевое слово unsigned, чтобы исключить отрицательные числа. Также добавим атрибут DEFAULT '0', тем самым скажем серверу, что по умолчанию в это поле мы будем класть значение 0.

Первичный ключ: Поле cat_id

Пояснение: Поле parent_id отвечает за тип категории. Если в поле parent_id значение 0 - значит категория Родительская, иначе значение parent_id равно значению родительской категории, тем самым данная категория становится дочерней.

Теперь мы напишем код SQL для создание таблицы cat в нашей базе данных.

Код:

CREATE TABLE IF NOT EXISTS `cat` (

`cat_id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,

`cat_name` varchar(40) NOT NULL,

`parent_id` tinyint(3) unsigned NOT NULL DEFAULT '0',KEY (`cat_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Результат:

Мы создали в нашей базе данных таблицу категорий товара.



Таблица категорий

Для наглядности наполним таблицу категорий следующим содержимым:

1)Двигатель

1.1) Выхлопная система

1.2) Карбюратор

.3) ЦПГ

.4) КПП

.5) Прочее

2)Электрика

3)Ходовая часть

3.1) Колеса

3.2) Тормоза

3.3) Амортизаторы

.4) Вилка, маятник

.5) Прочее

4)Внешний Вид

.1) Сидения

.2) Бак

.3) Бардачки

4.4) Подножки

.5) Дуги

.6) Светотехника

Для этого мы напишем следующий SQL код:

INSERT INTO `cat` (

`cat_id` ,

`cat_name` ,

`parent_id`

)

(1 , 'Двигатель', '0'),

(2 , 'Выхлопная система', '1'),

(3 , 'Карбюратор', '1'),

(4 , 'ЦПГ', '1'),

(5 , 'КПП', '1'),

(6 , 'Прочее', '1'),

(7 , 'Электрика', '0'),

(8 , 'Ходовая часть', '0'),

(9 , 'Колеса', '8'),

(10 , 'Тормоза', '8'),

(11 , 'Амортизаторы', '8'),

(12 , 'Вилка, маятник', '8'),

(13 , 'Прочее', '8'),

(14 , 'Внешний Вид', '0'),

(15 , 'Сидения', '14'),

(16 , 'Бак', '14'),

(17 , 'Бардачки', '14'),

(18 , 'Подножки', '14'),

(19 , 'Дуги', '14'),

(20 , 'Светотехника', '14'),

(21 , 'Прочее', '14');

В результате мы получили наполненную таблицу категорий товара.


Наполненная таблица категорий


2.2 Таблица покупателей


Теперь нам нужно создать таблицу покупателей. Назовем её customers. В таблице customers мы создадим 8 поле для хранение наших данных.

1)customers_id - порядковые номер или счетчик покупателей. Тип данных у customers_id мы сделаем mediumint(10), добавим ключевое слово unsigned, чтобы исключить отрицательные числа. Добавим атрибут AUTO_INCREMENT для автоматического инкремента.

2)name - поля для имени покупателя. Тип данных varchar(30)

3)email - поля для email адреса покупателя. Тип данных varchar(25)

4)email - поля для номера телефона покупателя. Тип данных varchar(10)

5)address - поля для адреса доставки покупателя. Тип данных varchar(100)

6)login - поля для логина покупателя. Тип данных varchar(20)

7)password - поля для пароля покупателя. Тип данных varchar(32)

Первичный ключ: Поле customers_id

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

Код:TABLE IF NOT EXISTS `customers` (

`customer_id` mediumint(10), unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(25) NOT NULL,

`email` varchar(25) NOT NULL,

`address` varchar(100) NOT NULL,

`login` varchar(20) NOT NULL,

`password` varchar(32) NOT NULL,KEY (`customer_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Результат:

Мы создали таблицу покупателей в нашей базе данных.


Таблица покупателей


2.3 Таблица способов доставки


По идеи у покупателей при оформление заказа будет возможность выбрать способ доставки, так как способов доставки у нас будет несколько, то рациональней нам создать для способов доставки отдельную таблицу. Назовем мы её «dostavka» и у неё будет следующая структура:

1.dostavka_id - тип поля tinyint(2) unsigned

2.name - это имя варианта доставки тип поля varchar(32)

Теперь мы добавим эту таблицу в нашу базу данных написав следующий SQL код:

CREATE TABLE IF NOT EXISTS `dostavka` (

`dostavka_id` tinyint(2) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(32) NOT NULL,KEY (`dostavka_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Результат:



И так мы добавили таблицу «способов доставки» в нашу базу данных и теперь для наглядности мы добавим в ней несколько способов доставки, написал следующий SQL код:

INSERT INTO `dostavka` (`name`) VALUES

('Пересылка по почте'),

('Курьером'),

('Самовывоз'),

('Другое, по согласованию с менеджером');

Так как у нас на в таблице «dostavka» на поле «dostavka_id» стоит атрибут «AUTO_INCREMENT» в коде INSERT INTO нам не обязательно указывать ключ к каждой записи, достаточно только указать поле «name» для каждой записи, а ключ заполняется автоматически.

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


Таблица «dostavka»


2.4 Таблица товаров


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

1)goods_id - Счетчик товаров, тип данных int(10), добавим ключевое слово unsigned, чтобы исключить отрицательные числа. Добавим атрибут AUTO_INCREMENT для автоматического инкремента счетчика.

2)name - Поле для имени товара, тип varchar(30)

3)keywords - Поле для ключевых слов используемых в мета-тегах товара. Тип поля varchar(255)

4)description - Поле для описание товара в мета-тегах, тип поля аналогичен полю keywords

5)img - Это поле будет хранить в себе имя главной картинки товара (обложки).

6)goods_catid - Это поле будет хранить в себе ключ категории к которой принадлежит данный товар

7)anons - Данное поле будет хранить в себе сокращенное описание товара. Тип поля text.

8)content - Поле будет хранить в себе полное описание товара, Тип поля text

9)visible - Это поле будет отвечать за состояние товара, (видимы-невидимый) 0 - невидимый, 1 - видимый. По умолчанию - 1. Тип поля enum('0','1')

10)hits - Если 1 - значит товар относится к «хитам продаж» иначе - 0 По умолчанию - 0. Тип поля enum('0','1')

11)new - Если 1 - значит товар относится к «новинкам» иначе - 0 По умолчанию - 0. Тип поля enum('0','1')

12)sale - Если 1 - значит товар относится к «товарам со скидкой» иначе - 0 По умолчанию - 0. Тип поля enum('0','1')

13)data - дата добавление товара, Тип поля date

14)images - varchar(255)

15)price - Цена, тип поля float

Первичный ключ: Поле goods_id

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

SQL код:

CREATE TABLE IF NOT EXISTS `goods` (

`goods_id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`name` varchar(100) NOT NULL,

`keywords` varchar(255) NOT NULL,

`description` varchar(255) NOT NULL,

`img` varchar(30) NOT NULL,

`goods_catid ` tinyint(3) unsigned NOT NULL,

`anons` text NOT NULL,

`content` text NOT NULL,

`visible` enum('0','1') NOT NULL DEFAULT '1',

`hits` enum('0','1') NOT NULL DEFAULT '0',

`new` enum('0','1') NOT NULL DEFAULT '0',

`sale` enum('0','1') NOT NULL DEFAULT '0',

`price` float NOT NULL DEFAULT '0',

`date` date NOT NULL,

`img_slide` varchar(100) NOT NULL,KEY (`goods_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;


Таблица товаров


2.5 Таблица заказов


По идеи в таблицу заказов мы должны собирать следующие данные: ключ заказа, ключ покупателя, ключ способов доставки, дату заказа, ключ статуса заказа, примечание к заказу. Мы назовем таблицу заказов - orders. Она будет иметь следующую структуру:

1)orders_id - это поле будет счетчиком и первичным ключем таблицы orders. Тип поля mediumint(50) unsigned

2)customer_id - ключ покупателя. Тип поля mediumint(10) unsigned

3)date - дата совершения заказа, тип поля datetime

)dostavka_id - ключ способа доставки, тип поля tinyint(3) unsigned

)status - ключ статуса заказа, тип поля tinyint(2) unsigned

Первичный ключ таблицы orders - order_id.

Теперь мы приступим непосредственно к написанию SQL кода для добавления нашей таблицы в базу данных. Выполним следующий запрос к базе данных:TABLE IF NOT EXISTS `orders` (

`order_id` mediumint(50) unsigned NOT NULL AUTO_INCREMENT,

`customer_id` mediumint(10) unsigned NOT NULL,

`date` datetime NOT NULL,

`dostavka_id` tinyint(3) unsigned NOT NULL,

`status` tinyint(2) NOT NULL DEFAULT '0',KEY (`order_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

В результате мы получили следующую структуру.


Таблица заказов


2.6 Таблица заказанных товаров


Мы создали таблицу orders, где мы сохраняем ключ заказа, ключ покупателя, ключ способов доставки, дату заказа, ключ статуса заказа. Но в таблицу orders мы не сохраняем товары, которые заказал покупатель, а это для функциональности интернет-магазина очень немаловажный момент. Мы не будем сохранять данные о заказанных товарах в таблице orders, так как это будет не очень рационально по отношению к структуре таблице и это весьма осложнить выборку данных. Для этого дела мы создадим отдельную таблицу, где мы будет собирать товары, которые заказал покупатель. Назовем эту таблицу «zakaz_tovar».

Создадим структуру таблицы:

1)zakaz_tovar_id, - счетчик, тип данных int(10) unsigned AUTO_INCREMENT

2)orders_id - ключ заказа, тип данных mediumint(50) unsigned

)goods_id - ключ товара, тип данных int(10) unsigned AUTO_INCREMENT

)quantity - количество заказанного товара, тип данных tinyint(3) unsigned

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

SQL код:TABLE IF NOT EXISTS `zakaz_tovar` (

`zakaz_tovar_id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`orders_id` mediumint(50) unsigned NOT NULL,

`goods_id` int(10) unsigned NOT NULL,

`quantity` tinyint(3) unsigned NOT NULL,KEY (`zakaz_tovar_id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

В результате мы получили:


Таблица заказанных товаров


2.7 Итоги создания базы данных


В итоге мы получили нормализованную базу данных по всем стандартам нормализации, то есть нормальных форм. В итоге у нас получилось 7 таблиц это не много и не мало для базового функционала стандартного интернет-магазина. Теперь мы можем наполнить нашу базу данных временными данными и разрабатывать SQL выборки.


Схема базы данных


3. Разработка SQL выборок данных из БД


3.1 Выборка таблицы категорий


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

SELECT cat_id, cat_name, parent_id FROM cat ORDER BY parent_id, cat_name;


Выборка таблицы категорий


Таким образом, мы получили из нашей базы данных список всех категорий отсортированных по полям parent_id, cat_name.


3.2 Выборка всех товаров определенной категории


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

Запрос будет состоять из 2 подзапросов. Первый подзапрос будет выбирать из таблицы goods все товары где goods_brandid = КЛЮЧ_КАТЕГОРИИ и товар не скрыт на сайте. Второй подзапрос будет немного сложнее, он будет иметь вложенный запрос. Это нужно для того чтобы выбрать все товары дочерних категорий. Потом мы возьмем эти два подзапроса и объединим оператором UNION. В конечном итоге мы получим универсальный запрос который будет выбирать все товары конкретной категории, и если категория родительская, то он будет выбирать все товары всех дочерних подкатегорий.

SQL:

(SELECT goods_id, name, img, anons, price, hits, new, sale, date FROM goods WHERE goods_brandid = $category AND visible='1')

(SELECT goods_id, name, img, anons, price, hits, new, sale, date FROM goods WHERE goods_brandid IN (SELECT brand_id FROM brands WHERE parent_id = $category) AND visible='1')

$category - это ключ выбираемой категории.

На самом деле тут все очень просто, если $category родительская, то первый подзапрос вернет нам пустой результат, а второй подзапрос вернет нам все товары из подкатегории где, parent_id = $category (родитель подкатегории = категории).



Заключение


Мы закрепили изучаемый материал по дисциплине «Информационные ресурсы и системы. Базы данных». Повторили весь материал и сделали самостоятельную практическую часть. Мы разработали нормализированную базу данных для стандартного интернет магазина. При разработке БД, мы придерживались, правилам так называемых «нормальных форм», тем самым разработали правильную структуру БД. Также мы продемонстрировали широкое использование реляционной модели базы данных и работали с сервером MySQL и СУБД phpMyAdmin. В итоге проектирование и разработке мы получили базу данных из 7 таблиц. После проектирования и разработки нашей базы данных интернет-магазина, мы закрепили наши знания по языку программирования запросов к базе данных SQL и разобрали несколько нестандартных запросов и показали наиболее оптимальное решение одной нетривиальной задачи выборки данных из БД.



Список литературы


1.Грабер М. Введение в SQL.

2.http://ru.wikipedia.org

.MySQL http://ru.wikipedia.org/wiki/MySQL

.http://ru.wikipedia.org/wiki/SQL

.http://www.site-do.ru/db/sql2.php

6.Web-программирование Лекции. http://5fan.ru

.Разработка сайта на основе CMS Wordpress. http://knowledge.allbest.ru

.Проектирование и реализация базы данных в архитектуре "клиент-сервер" http://bibliofond.ru

.Бабротека: электронная библиотека Бабра :: Грубер Мартин :: Понимание SQL http://lib.babr.ru

.Возможности языка SQL http://otherreferats.allbest.ru/programming/00010336_0.htm

.http://softholm.com



Курсовая работа Разработка базы данных для CMS интернет-магазина Оглавление Введени

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ