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

1.3. Описание базы данных

 

 

База  данных shop является основным элементом интернет-магазина «Подарки». Эта база данных позволяет хранить данные, которые являются основным источником для отображения информации, а именно: категории и содержащиеся в них товары, пользователи, заказы и операции с ними.

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

 

 

1.4 Инфологическая модель  «Сущность-связь»

 

 

 

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

К основным требованиями, предъявляемыми к инфологической модели, можно отнести следующие:

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

Основными конструктивными элементами инфологических моделей являются сущности, связи между ними и их свойства (атрибуты).

Сущность – любой различимый объект (объект, который мы можем  отличить от другого), информацию о котором необходимо хранить в базе данных. Необходимо различать такие понятия, как тип сущности и экземпляр сущности.

Понятие тип сущности относится  к набору однородных личностей, предметов, событий или идей, выступающих  как целое. Экземпляр сущности относится  к конкретной вещи в наборе.

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

Ключ – минимальный набор  атрибутов, по значениям которых  можно однозначно найти требуемый экземпляр сущности.

Связь – ассоциирование двух или  более сущностей. Если бы назначением  базы данных было только хранение отдельных, не связанных между собой данных, то ее структура могла бы быть очень  простой. Однако одно из основных требований к организации базы данных – это  обеспечение возможности отыскания  одних сущностей по значениям  других, для чего необходимо установить между ними определенные связи [2, с.131].

В базе данных интернет-магазина следующие сущности и атрибуты:

- Сущность «Категории», которая в свою имеет следующий атрибут:

      • Название категории;

- Сущность  «Товары», с атрибутами:

      • Имя товара;
      • Описание товара;
      • Цена;

- Сущность  «Клиенты», с атрибутами:

      • ФИО;
      • Логин;
      • Пароль;
      • E-mail;

- Сущность  «Корзина», с атрибутом:

      • Дата заказа;

- Сущность  «Спецификация», с атрибутами:

      • Количество товаров в корзине;

1.5. Проектирование логической структуры базы данных

 

 

На этапе логического проектирования необходимо определить типы и длины  полей. Рассмотрим логическую структуру:

Category – таблица, в которой все имеющиеся в магазине товары подразделены на специальные категории, см. табл. 1.1.

                                                                                          Таблица 1.1

Таблица Category

Поле

Тип

Функционал

CategoryId

uniqueidentifier

Уникальный кодкатегории.

CategoryName

varchar(MAX)

Имя категории.


    

Источник: собственная разработка автора при помощи Microsoft Visual Studio

 

Product – список имеющихся товаров в магазине, приведен в следующей таблице, см. табл. 1.2.

                                                                                                                  Таблица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.

                                                                                               Таблица 1.4

Таблица Customer

Поле

Тип

Функционал

CustomerId

uniqueidentifier

Уникальный кодклиента.

CustomerName

varchar(50)

ФИО клиента.

Login

varchar(50)

Его логин на сайте.

Password

varchar(50)

Его пароль.

E-mail

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=|DataDirectory|aspnetdb.mdf;User Instance=true"

providerName="System.Data.SqlClient" />

<add name="GiftShopEntities" connectionString="metadata=res:

         //*/Entities.ShopEntity.csdl|res://*/Entities.ShopEntity.ssdl|

         res://*/Entities.ShopEntity.msl;provider=System.Data.SqlClient;provider connection string=&quot;

         Data Source=.\SQLEXPRESS;Initial Catalog=GiftShop;Integrated Security=True;

         Pooling=False;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

</connectionStrings>

Так, как  в нашем проекте используется MVC 3 , нам необходимо удалить ненужные объекты из шаблона начального проекта. После этого приступим к созданию контроллеров.  Для этого щелкаем правой кнопкой на папке Controller, выбираем AddController , задаём ему имя ProductController.  Этот контроллер будет отвечать за работу с товарами на сайте. Для этого создаем ViewList, в котором будут выводиться наши товары.

Теперь  необходимо зарегистрировать  маршрут  в файле Global.asax.

Public static void Register Routes(RouteCollectionroutes) {

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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.Models.ProductsListViewModel

@{

ViewBag.Title = "Products";

}

@foreach (var p in Model.Products) { 

Html.RenderPartial("ProductSummary", p);

}

<div class="pager">

@Html.PageLinks(Model.PagingInfo, x =>Url.Action("List", new {page = x}))

</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>

<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-страниц. Все преимущества были продемонстрированы в ходе создания проекта. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

  1. Основы работы с ASP.NETMVC 3[Электронный ресурс]. – Режим доступа:http://www.asp.net/mvc- Дата доступа: 10.12.2012.
  2. Хомоненко, А.Д. Базы данных: учебник для ВУЗов / А. Д. Хомоненко, В.М. Цыганков, М.Г. Мальцев. — 4-е изд., доп. и перераб. — СПб.: КОРОНА принт, 2004. — 736 с.
  3. MacDonald M. Pro ASP.NET 4 / M. MacDonald, London, 2011– 837 с.
  4. Sanderson, S. Pro ASP.NET MVC 3 Framework / S. Sanderson - 3-e изд. – London, 2011– 639 с.