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

Описание состава реляционной базы данных как системы связанной информации, сохраняемой в двумерных таблицах. Основные функции CMS и изучение структуры сервера MySQL. Разработка системы выборок данных по товарам для интернет-магазина, таблицы покупателей.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 21.04.2015
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

10

Размещено на http://www.allbest.ru/

1

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

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

Оглавление

Введение

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

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

1.2 Что такое SQL

1.3 Что такое CMS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.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, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей. Именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

MySQL является решением для малых и средних приложений. Входит в состав серверов 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 до 16777215

INT (M) или INTEGER (M)

4 байта

от -2147683648 до 2147683648 или от 0 до 4294967295

BIGINT (M)

8 байт

от - 263 до 263 или от 0 до 264

BOOL или BOOLEAN

1 байт

либо 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, TEXT

L+2 символов

216-1 символов

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

MEDIUMBLOB, MEDIUMTEXT

L+3 символов

224-1 символов

Аналогично предыдущему, но с большим размером.

LONGBLOB, LONGTEXT

L+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". В качестве разделителя может выступать не только дефис, а любой символ отличный от цифры.

TIME

3 байта

от '-838:59:59' до '838:59:59'

Предназначен для хранения времени суток. Значение вводится и хранится в привычном формате - hh:mm:ss, где hh - часы, mm - минуты, ss - секунды. В качестве разделителя может выступать любой символ отличный от цифры.

DATATIME

8 байт

от '1000-01-01 00:00:00' до '9999-12-31 23:59:59'

Предназначен для хранения и даты и времени суток. Значение вводится и хранится в формате - YYYY-MM-DD hh:mm:ss. В качестве разделителей могут выступать любые символы отличные от цифры.

TIMESTAMP

4 байта

от '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',

PRIMARY KEY (`cat_id`)

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

Результат:

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

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

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

1) Двигатель

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

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

1.3) ЦПГ

1.4) КПП

1.5) Прочее

2) Электрика

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

3.1) Колеса

3.2) Тормоза

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

3.4) Вилка, маятник

3.5) Прочее

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

4.1) Сидения

4.2) Бак

4.3) Бардачки

4.4) Подножки

4.5) Дуги

4.6) Светотехника

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

INSERT INTO `cat` (

`cat_id` ,

`cat_name` ,

`parent_id`

)

VALUES

(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 в нашей базе данных

Код:

CREATE 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,

PRIMARY 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,

PRIMARY 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,

PRIMARY 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

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

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

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

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

CREATE 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',

PRIMARY 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

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

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

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

SQL код:

CREATE 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,

PRIMARY 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')

UNION

(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

3.MySQL https://ru.wikipedia.org/wiki/MySQL

4.https://ru.wikipedia.org/wiki/SQL

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

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

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

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

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

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

11.http://softholm.com

Размещено на Allbest.ru


Подобные документы

  • Факторы, влияющие на пропускную способность в беспроводных сетях. Использование скриптового языка программирования PHP для разработки базы данных интернет-магазина, его основные преимущества. Современные методы и средства тестирования web-приложений.

    дипломная работа [3,5 M], добавлен 10.07.2015

  • Проектирование даталогической модели в виде логической структуры реляционной базы данных в СУБД Microsoft SQL Server на основе созданной инфологической модели базы данных интернет-магазина музыки. Выделение сущностей и связей, анализ предметной области.

    курсовая работа [724,6 K], добавлен 15.06.2013

  • Анализ сравнения интернет-магазина и электронного магазина. Проектирование структуры web-сайта. Обработка заказа. Основное понятие языка php. Средства безопасности системного уровня приложения. Разработка структуры базы данных и структуры web-сайта.

    курсовая работа [1,4 M], добавлен 31.03.2014

  • Общая характеристика концептуального проектирования. Особенности проектирования базы данных и структуры "Оnly for you". Расчет текущих и капитальных затрат, характеристика экономического эффекта на примере интернет-магазина женской одежды "Оnly for you".

    курсовая работа [963,8 K], добавлен 23.06.2012

  • Бизнес-правила интернет-магазина. Минимальные требования к техническому и программному обеспечению. Разработка реляционной базы данных. Задание первичных и альтернативных ключей. Справочник для приобретения и ознакомления с музыкальным инструментом.

    курсовая работа [2,1 M], добавлен 22.01.2014

  • Разработка информационной системы интернет-магазина автозапчастей с целью учета их заказов из разных стран. Создание базы данных для регистрации информации: код товара, вид, марка, поставщик. Функции системы; программная среда, интерфейс пользователя.

    курсовая работа [2,0 M], добавлен 04.05.2013

  • Разработка модели и создание структуры реляционной базы данных. Организация данных в таблицах для предоставления оперативного доступа к данным. Основные структурные единицы базы данных Access: таблицы, запросы, формы, отчеты, страницы, макросы и модули.

    реферат [4,0 M], добавлен 03.02.2013

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

    дипломная работа [1,7 M], добавлен 08.06.2013

  • CRM-системы: разновидности, проблемы реализации, их преимущества и недостатки. Критические характеристики CRM-систем для работы через Интернет (WEB-CRM). Разработка содержания и структуры WEB-сайта интренет-магазина "Vinil", создание схемы и базы данных.

    курсовая работа [2,6 M], добавлен 19.05.2013

  • Преимущества и недостатки электронной коммерции. Описание локального сервера Denwer. Структура файлов и папок. Особенности PHP, MySQL, CSS, HTML. Разработка структуры сайта интернет-магазина по продажи гитар и комплектующих, его программная реализация.

    курсовая работа [5,0 M], добавлен 25.10.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.