Создание базы данных GiftShop в среде MSSQL
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 3
1. ОПРЕДЕЛЕНИЕ БИЗНЕС ЛОГИКИ 4
1.1 Описание системы 4
1.2 Варианты использования системы 4
1.3 Описание базы данных 5
1.4 Инфологическая модель «Сущность-связь» 5
1.5 Проектирование логической структуры базы данных 7
2. СОЗДАНИЕ ПРИЛОЖЕНИЯ 11
2.1 Создание базы данных GiftShop в среде MSSQL 11
2.2 Определение структуры web-приложения 11
2.3 Создание модели данных 12
2.4 Создание web-приложения 12
ЗАКЛЮЧЕНИЕ 17
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 18
ВВЕДЕНИЕ
В современном мире широко начали пользоваться популярностью интернет - магазины. Это является очень удобным средством. Ведь поход по магазинам может отнимать большое количество времени и дополнительных затрат на дорогу, при этом нет гарантий, что приехав в магазин покупатель сразу найдет подходящий товар.
Я на примере покажу как создать простой интернет магазин, в котором покупатель сможет зарегистрироваться и приобрести необходимые товары, не выходя из дома.
Так же будут
администраторы, которые следят за
всем происходящим в магазине. Настоящее
техническое задание
1. ОПРЕДЕЛЕНИЕ БИЗНЕС ЛОГИКИ
1.1. Описание системы
Прежде чем приступить к созданию сайта интернет - магазина, рассмотрим подробнее основные задачи, которые он должен будет осуществлять. Начнем с того, для какого круга лиц предназначен сайт, и что им необходимо знать для осуществления покупки.
Интернет-магазин - «Подарки» осуществляет продажу подарков на все случаи жизни.
Основными задачами сайта являются:
- авторизованный
вход для администраторов
- вывод списка товаров для продажи;
- список
категорий, через которые
- система
должна позволять помещать
- для
администратора должна быть
1.2. Варианты использования системы
При взаимодействии пользователя с системой, последняя выполняет ряд работ, которые образуют вариант использования системы. Рассмотрим каждый вариант использования по отдельности.
Вход в систему осуществляется двумя способами (путями):
- Администратор;
- Покупатель.
Два этих способа используют вход с авторизацией.
Охарактеризуем каждый из этих пользователей подробнее.
Покупатель имеет следующие возможности:
- Просматривать список товаров. При просмотре используется система каталожного хранения товара, то есть товары сгруппированы в категории.
- Помещать товар в корзину.
- Удалять товар из корзины.
- Отправлять заказ для дальнейшей ее обработки.
- Осуществлять поиск по сайту.
Администратор сайта имеет большой перечень преимуществ:
- Входить в систему как администратор, используя логин и пароль.
- Редактировать товары и каталоги.
- Просматривать информацию о пользователях системы, редактировать, добавлять и удалять их.
1.3. Описание базы данных
База данных shop является основным элементом интернет-магазина «Подарки». Эта база данных позволяет хранить данные, которые являются основным источником для отображения информации, а именно: категории и содержащиеся в них товары, пользователи, заказы и операции с ними.
Управление базой данных занимается администраторы, которые являются основными пользователями, добавляющим в базу данных информацию.
1.4 Инфологическая модель «Сущность-связь»
Инфологическая модель предметной области – это формализованное описание предметной области, выполненное безотносительно к используемым в дальнейшем программным и техническим средствам. Инфологическая модель должная быть динамической и позволять легкую корректировку.
К основным требованиями, предъявляемыми к инфологической модели, можно отнести следующие:
- должна содержать всю необходимую и достаточную информацию для последующего проектирования базы данных.
- должна быть понятна лицам, принимающим участие в создании и использовании.
Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства (атрибуты).
Сущность – любой различимый объект (объект, который мы можем отличить от другого), информацию о котором необходимо хранить в базе данных. Необходимо различать такие понятия, как тип сущности и экземпляр сущности.
Понятие тип сущности относится к набору однородных личностей, предметов, событий или идей, выступающих как целое. Экземпляр сущности относится к конкретной вещи в наборе.
Атрибут – поименованная характеристика сущности. Его наименование должно быть уникальным для конкретного типа сущности, но может быть одинаковым для различного типа сущностей. Абсолютное различие между типами сущностей и атрибутами отсутствует. Атрибут является таковым только в связи с типом сущности. В другом контексте атрибут может выступать как самостоятельная сущность.
Ключ – минимальный набор атрибутов, по значениям которых можно однозначно найти требуемый экземпляр сущности.
Связь – ассоциирование двух или
более сущностей. Если бы назначением
базы данных было только хранение отдельных,
не связанных между собой данных,
то ее структура могла бы быть очень
простой. Однако одно из основных требований
к организации базы данных – это
обеспечение возможности
В базе данных интернет-магазина следующие сущности и атрибуты:
- Сущность «Категории», которая в свою имеет следующий атрибут:
- Название категории;
- Сущность «Товары», с атрибутами:
- Имя товара;
- Описание товара;
- Цена;
- Сущность «Клиенты», с атрибутами:
- ФИО;
- Логин;
- Пароль;
- E-mail;
- Сущность «Корзина», с атрибутом:
- Дата заказа;
- Сущность «Спецификация», с атрибутами:
- Количество товаров в корзине;
1.5. Проектирование логической структуры базы данных
На этапе логического
Category – таблица, в которой все имеющиеся в магазине товары подразделены на специальные категории, см. табл. 1.1.
Таблица Category
Поле |
Тип |
Функционал |
CategoryId |
uniqueidentifier |
Уникальный кодкатегории. |
CategoryName |
varchar(MAX) |
Имя категории. |
Источник: собственная разработка автора при помощи Microsoft Visual Studio
Product – список имеющихся товаров в магазине, приведен в следующей таблице, см. табл. 1.2.
Таблица Product
Поле |
Тип |
Функционал |
ProductId |
uniqueidentifier |
Уникальный кодтовара. |
Name |
varchar(50) |
Название товара. |
Description |
varchar(50) |
Краткое описание товара. |
Price |
float |
Стоимость товара. |
CategoryId |
uniqueidentifier |
Id категории к которой относится товар. |
ImagenData |
varbinary(MAX) |
Информация об изображении товара. |
Источник: собственная разработка автора при помощи Microsoft Visual Studio
Cart - временная таблица заказанных товаров. Перечень заказов сведены в табл. 1.3.
Таблица 1.3
Таблица Cart
Поле |
Тип |
Функционал |
CartId |
uniqueidentifier |
Уникальный кодкорзины. |
CustomerId |
uniqueidentifier |
Id клиента, которому принадлежит данная корзина. |
Date |
datetime |
Дата заказа. |
Источник: собственная разработка автора при помощи Microsoft Visual Studio
Customer – таблица зарегистрированных клиентов на сайте, которые будут вносить небольшую информацию о себе. Перечень клиентов представлен в табл. 1.4.
Таблица Customer
Поле |
Тип |
Функционал |
CustomerId |
uniqueidentifier |
Уникальный кодклиента. |
CustomerName |
varchar(50) |
ФИО клиента. |
Login |
varchar(50) |
Его логин на сайте. |
Password |
varchar(50) |
Его пароль. |
varchar(50) |
Адрес почты клиента. |
Источник: собственная разработка при помощи Microsoft Visual Studio
Specification – таблица, описывающая товары из определённого заказа. Список товаров приведен в табл. 1.5.
Таблица 1.5
Таблица Specification
Поле |
Тип |
Функционал |
CartId |
uniqueidentifier |
Id корзины. |
ProductId |
uniqueidentifier |
Id товаров, которые находятся в заказе. |
Count |
int |
Количество товаров в заказе. |
Источник: собственная разработка при помощи Microsoft Visual Studio
Схема базы данных Интернет - магазина, с уже проставленными первичными ключами будет выглядеть следующим образом, см. рис. 1.1.
Рис.1.1. Схема базы данных Интернет-магазина
Источник: собственная разработка автора при помощи Microsoft Visual Studio
2. СОЗДАНИЕ ПРИЛОЖЕНИЯ
2.1 Создание базы данных GiftShop в среде MSSQL
Для создания базы данных в Visual Studio 2010, нажимаем вкладку ServerExplorer в узле Data Connections, щёлкаем правой кнопкой Create New SQLServer Database см. рис. 2.1.
Рис.2.1. Схема создания базы данных
Источник: собственная разработка автора при помощи Microsoft Visual Studio
Далее добавляем необходимые таблицы, о которых велась речь ранее. Получаем в итоге готовую базу данных, которую будем использовать в дальнейшем.
2.2 Определение структуры web-приложения
После того как ы определили основные положения бизнес - логики приложения необходимо выбрать технологию, с помощью которой будем создавать интернет-магазин.
В данной работе использовалось ASP.NET MVC 3. Для работы с данной технологией необходимо наличие Microsoft Visual Studio 2010, с установленным пакетом обновлений ASP.NETMVC 3 Update Tools.
Для работы с базой данных будет использован MSSQL Server 2008 R2. Работа с моделью данных будет осуществятся с помощью Entity Framework.
Создаём пустой Solution добавляем в него два проекта: ShopModel (тип – C# ClassLibrary), в котором будет описываться модель данных, сгенерированная по ранее созданной базе данных GiftShop с помощью Entity Framework (ADO.NET Entity DataModel).
Второй проект – Интернет_магазин (тип - ASP.NET MVC 3 Web Application), в котором и будет создаваться само Web-приложение.
2.3 Создание модели данных
После того как мы создали базу данных и определили структуру Web-приложения перейдём к созданию модели данных. В проекте ShopModel создадим новый объект ADO.NET Entity DataModel по имени ShopEntity. Далее в мастере выберем Generate From Database, выберем базу данных GiftShop, потом выберем все таблицы из этой базы данных.
После этого мастер сгенерирует нам модель нашей базы данных. И каждой сущности из базы данных соответствует сгенерированный класс, с помощью EntityFramework. Далее в процессе разработки будем добавлять необходимые классы в данный проект.
2.4 Создание web-приложения
Перед началом создания приложения необходимо добавить ссылки на проект ShopModel и на библиотеку Entity Framework версии 4.0. Также необходимо добавить в файл Web.config строку подключения к базе данных.
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
AttachDBFilename=|
providerName="System.Data.
<add name="GiftShopEntities"
connectionString="metadata=
//*/Entities.ShopEntity.csdl|
res://*/Entities.ShopEntity.
Data Source=.\SQLEXPRESS;Initial Catalog=GiftShop;Integrated Security=True;
Pooling=False;
</connectionStrings>
Так, как в нашем проекте используется MVC 3 , нам необходимо удалить ненужные объекты из шаблона начального проекта. После этого приступим к созданию контроллеров. Для этого щелкаем правой кнопкой на папке Controller, выбираем AddController , задаём ему имя ProductController. Этот контроллер будет отвечать за работу с товарами на сайте. Для этого создаем ViewList, в котором будут выводиться наши товары.
Теперь необходимо зарегистрировать маршрут в файле Global.asax.
Public static void Register Routes(RouteCollectionroutes) {
routes.IgnoreRoute("{resource}
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Product", action = "List", id = UrlParameter.Optional }
);
}
Для того чтобы товары отображались на странице не все, а по несколько штук добавим в папку Models класс PagingInfo. А также необходимо создать HTML Helper Method. Для этого создадим папку HtmlHelpers и добавим в неё новый статический класс PagingHelpers. Создадим в нём расширяющий метод PageLinks, который будет выполнять на странице разбиение. Добавим ссылку на HTML Helper Method в Views/Web.config File.
Создаём в папке Models класс ProductsListViewMode, который объединяет PagingInfoи List. Добавляем в Global.asax новый маршрут. Создадим новую Partial View Product Summary, в котором будет выводиться имя товара, его описание и цена. И теперь добавим в List следующий код:
@modelSportsStore.WebUI.
@{
ViewBag.Title = "Products";
}
@foreach (var p in Model.Products) {
Html.RenderPartial("
}
<div class="pager">
@Html.PageLinks(Model.
</div>
Теперь несколько изменим дизайн нашего сайта. В папке Content выберем файл Site.css, удалим в нём содержимое и вставим:
BODY { font-family: Cambria, Georgia, "Times New Roman"; margin: 0; }
DIV#headerDIV.title, DIV.item H3, DIV.item H4, DIV.pager A {
font: bold 1em "Arial Narrow", "Franklin Gothic Medium", Arial;
}
DIV#header{ background-color: #444; border-bottom: 2px solid #111; color: White; }
DIV#headerDIV.title{ font-size: 2em; padding: .6em; }
DIV#content{ border-left: 2px solid gray; margin-left: 9em; padding: 1em; }
DIV#categories{ float: left; width: 8em; padding: .3em; }
DIV.item{ border-top: 1px dotted gray; padding-top: .7em; margin-bottom: .7em; }
DIV.item:first-child { border-top:none; padding-top: 0; }
DIV.item H3 { font-size: 1.3em; margin: 0 0 .25em 0; }
DIV.item H4 { font-size: 1.1em; margin:.4em 0 0 0; }
DIV.pager{ text-align:right; border-top: 2px solid silver;
padding: .5em 0 0 0; margin-top: 1em; }
DIV.pager A { font-size: 1.1em; color: #666; text-decoration: none;
padding: 0 .4em 0 .4em; }
DIV.pager A:hover { background-color: Silver; }
DIV.pagerA.selected{ background-color: #353535; color: White; }
При добавлении новых компонент на страницы это код будем обновлять, добавлять что-то новое. Теперь изменим наш DefaultRazorLayout. Поместим в body следующий код:
<body>
<div id="header">
<div class="title">МагазинПодарков<
</div>
<div id="categories">
@{Html.RenderAction("Menu", "Nav"); }
</div>
<div id="content">
@RenderBody()
</div>
</body>
</html>
Теперь необходимо создать новый контроллер NavController, который будет работать с категориями товаров. Фактически, он будет определять страницы нашего приложения. Зарегистрируем в файле Global.asax маршруты для этого контроллера. В классе NavController создадим Partial View Result Menu(), которая будет отображать категории на странице. Для этого в Partial View Result Menu используем Html.ActionLink и Html.RouteLink. Добавим в Site.css описание для категорий.
Далее перейдём к разработке корзины покупателя. Для этого зайдём в проект ShopModel и в папке Entities создадим класс DataCartManager, который будет работать с корзиной [3, с. 187].
Далее необходимо создать CartController, который будет управлять ею. Следующим шагом будет создание в папке Models класса CartIndexViewModel, который будет позволять возвращаться от корзины к List. В CartControllers создаётся метод ViewResultIndex. Потом создаётся ViewIndex, который будет отображать корзину, см. рис. 2.2.
Рис.2.2. Интерфейс корзины покупателя
Источник: собственная разработка автора при помощи Microsoft Visual Studio
Далее добавим возможность удаление товаров из корзины. Следующим шагом будет покупка товаром из корзины (Checkout), создаём модель подтверждения заказа и регистрируем заказ в базу данных.
И последней частью данного приложения будет AdministrationPart, здесь мы реализуем возможность CRUD операций. Для этого создадим AdminController, у него будет свой layout, свой CSSstyles. Работа контроллера демонстрируется в приложении.
ЗАКЛЮЧЕНИЕ
В курсовой работе было продемонстрировано создание интернет - магазина «Подарки», с помощью технологии ASP.NETMVC 3. Эта технология MVC 3 является совершенно новой, отличающейся от всех своих предшественников по созданию Web-страниц. Все преимущества были продемонстрированы в ходе создания проекта.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Основы работы с ASP.NETMVC 3[Электронный ресурс]. – Режим доступа:http://www.asp.net/mvc
- Дата доступа: 10.12.2012. - Хомоненко, А.Д. Базы данных: учебник для ВУЗов / А. Д. Хомоненко, В.М. Цыганков, М.Г. Мальцев. — 4-е изд., доп. и перераб. — СПб.: КОРОНА принт, 2004. — 736 с.
- MacDonald M. Pro ASP.NET 4 / M. MacDonald, London, 2011– 837 с.
- Sanderson, S. Pro ASP.NET MVC 3 Framework / S. Sanderson - 3-e изд. – London, 2011– 639 с.