Курсовые работы / Разработка клиент-серверного приложения. База данных для магазина нумизматики
.pdfНАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ
Курсовой проект по дисциплине базы данных и экспертные системы.
Разработка клиент-серверного приложения: база данных для магазина нумизматики.
Выполнил студент группы А-13-08 Апухтин Михаил
Преподаватель Сидорова Наталья Петровна
Научный руководитель Маран Михкель Михкелевич
Москва,2011
Оглавление |
|
Постановка задачи ...................................................................................................................................... |
3 |
Проектирование базы данных ................................................................................................................... |
4 |
Разработка инфологической модели БД............................................................................................... |
4 |
Разработка реляционной модели БД.................................................................................................. |
10 |
Проектирование правил целостности БД......................................................................................... |
12 |
Реализация базы данных.......................................................................................................................... |
13 |
Создание таблиц и индексов с учетом декларативных ограничений. ............................................. |
13 |
Реализация процедурных ограничений при помощи триггеров. ..................................................... |
15 |
Реализация клиентской части приложения ............................................................................................ |
17 |
2
Постановка задачи
Спроектировать базу данных для магазина нумизматики и на ее основе разработать клиент-серверное приложение, позволяющее пользователю работать с указанной базой данных. При проектировании базы данных применить средство проектирования AllFusion Erwin Data Modeler. Реализацию базы данных провести в Microsoft SQL Server. Клиентскую часть реализовать в виде приложения Windows Forms на языке C# в среде
Microsoft Visual Studio.
3
Проектирование базы данных
Разработка инфологической модели БД
Краткое описание предметной области
Магазин осуществляет продажу монет (в базе данных хранится перечень всех продаваемых монет и их характеристики). Оплату можно производить при помощи банковского перевода, почтового перевода, интернет кошелька WebMoney или наличными (при доставке курьером). Доставка товара осуществляется по почте или курьером (200р. в пределах МКАД). Доставка осуществляется в любой день недели, как правило, спустя 1-2 дня после оформления заказа.
4
Структура БД
5
Entity
Entity
Name |
Definition |
Доставка |
Описание доставок заказов, доставляемых |
|
курьером. |
Заказ |
Описание заказов. |
Заказ-товар |
Таблица, отражающая все монеты, |
|
входящие в данный заказ. |
Монета |
Описание монеты, выставленной на |
|
продажу. |
Покупатель |
Данные о покупателях. |
|
|
Состояние |
Список состояний монет и коды, |
|
соответствующие им. |
Сотрудник |
Список всех сотрудников, включающий |
|
необходимые данные о них. |
Способ оплаты |
Список возможных способов оплаты и |
|
коды, соответствующие им. |
Способ получения |
Список возможных способов получения и |
|
коды, соответствующие им. |
Статус заказа |
Список возможных статусов заказов и |
|
коды, соответствующие им. |
6
Attribute(s) of "Доставка" Entity
Name |
|
Datatype |
Definition |
Note |
№ заказа |
|
INTEGER |
Порядковый номер |
|
|
|
|
заказа. |
|
Дата доставки |
|
DATE |
Дата доставки |
Дата |
|
|
|
заказа. |
|
Время доставки |
|
TIME |
Примерное время |
Время |
|
|
|
доставки заказа. |
|
Табельный номер |
|
INTEGER |
Порядковый номер |
|
|
|
|
сотрудника |
|
Attribute(s) of "Заказ" Entity
Name |
|
Datatype |
Definition |
Note |
№ заказа |
|
INTEGER |
Порядковый номер |
Счетчик. |
|
|
|
заказа. |
|
Дата заказа |
|
DATE |
Дата заказа. |
Дата |
Время заказа |
|
TIME |
Время заказа. |
Время |
Код статуса |
|
INTEGER |
Код статуса заказа |
|
Стоимость заказа |
|
MONEY |
Стоимость заказа с |
Сумма в рублях |
|
|
|
учетом доставки. |
|
Код способа оплаты |
|
INTEGER |
Код способа оплаты |
|
Код способа |
|
INTEGER |
Код способа |
|
получения |
|
|
получения |
|
Логин |
|
VARCHAR(20) |
Логин пользователя |
Не менее 3 |
|
|
|
|
символов, |
|
|
|
|
начинающихся с |
|
|
|
|
буквы. |
Табельный номер |
|
INTEGER |
Порядковый номер |
|
|
|
|
сотрудника |
|
Attribute(s) of "Заказ-товар" Entity
Name |
|
Datatype |
Definition |
Note |
id монеты |
|
INTEGER |
Порядковый номер |
|
|
|
|
монеты как товара. |
|
№ заказа |
|
INTEGER |
Порядковый номер |
|
|
|
|
заказа. |
|
Attribute(s) of "Монета" Entity
Name |
|
Datatype |
Definition |
Note |
|
id монеты |
|
INTEGER |
Порядковый номер |
Счетчик |
|
|
|
|
монеты как товара. |
|
|
Название |
|
VARCHAR(60) |
Название монты, |
Строка с названием |
|
|
|
|
содержащее общие |
|
|
|
|
|
данные. |
|
|
Цена |
|
MONEY |
Цена монеты. |
Сумма в рублях |
|
Фото |
|
IMAGE |
Фото монеты. |
Картинка. |
|
Металл |
|
VARCHAR(50) |
Металл или сплав |
Строка с названием |
|
|
|
|
из которого |
металла или сплава. |
|
|
|
|
изготовлена монета. |
|
|
Вес |
|
FLOAT |
Вес монеты в |
Десятичное число |
|
7
Attribute(s) of "Монета" Entity
Name |
|
Datatype |
Definition |
Note |
|
|
|
граммах |
>=0 |
Диаметр |
|
FLOAT |
Диаметр монеты в |
Десятичное число |
|
|
|
мм. |
>=0 |
Номинал |
|
VARCHAR(20) |
Номинал монеты. |
Строка с номиналом |
Страна |
|
VARCHAR(80) |
Страна, в которой |
Строка с |
|
|
|
отчеканена монета. |
наименованием |
|
|
|
|
страны |
Код состояния |
|
INTEGER |
Код состояния |
|
|
|
|
монеты |
|
Количество на |
|
INTEGER |
Количество монет |
Целое число >=0 |
складе |
|
|
на складе. |
|
Attribute(s) of "Покупатель" Entity
Name |
|
Datatype |
Definition |
Note |
Логин |
|
VARCHAR(20) |
Логин пользователя |
Не менее 3 |
|
|
|
|
символов, |
|
|
|
|
начинающихся с |
|
|
|
|
буквы. |
Пароль |
|
VARCHAR(20) |
Пароль |
Не менее 4 |
|
|
|
пользователя |
символов (букв или |
|
|
|
|
цифр) |
|
VARCHAR(20) |
E-mail пользователя |
Строка вида: *@*.* |
|
ФИО |
|
VARCHAR(40) |
ФИО пользователя |
|
Адрес |
|
VARCHAR(60) |
Полный адрес |
|
|
|
|
пользователя |
|
Почтовый индекс |
|
VARCHAR(6) |
Почтовый индекс |
Число от 000001 до |
|
|
|
пользователя |
999999 |
Дата рождения |
|
DATE |
Дата рождения |
|
|
|
|
пользователя |
|
Дата регистрации |
|
DATE |
Дата регистрации |
|
|
|
|
пользователя в |
|
|
|
|
магазине |
|
Пол |
|
VARCHAR(1) |
Пол пользователя |
М или Ж |
Телефон |
|
VARCHAR(15) |
Телефон |
|
|
|
|
пользователя. |
|
Attribute(s) of "Состояние" Entity
Name |
|
Datatype |
Definition |
Note |
|
Код состояния |
|
INTEGER |
Код состояния |
Счетчик |
|
|
|
|
монеты |
|
|
Обозначение |
|
VARCHAR(10) |
Международное |
|
|
состояния |
|
|
обозначение |
|
|
|
|
|
состояния монеты. |
|
|
Расшифровка |
|
VARCHAR(20) |
Расшифровка |
|
|
обозначения |
|
|
международного |
|
|
|
|
|
обозначения |
|
|
|
|
|
состояния монеты |
|
|
8
Attribute(s) of "Сотрудник" Entity
Name |
|
Datatype |
Definition |
Note |
Табельный номер |
|
INTEGER |
Порядковый номер |
Счетчик |
|
|
|
сотрудника |
|
ФИО |
|
VARCHAR(40) |
ФИО сотрудника |
|
|
VARCHAR(20) |
E-mail сотрудника |
Строка вида: *@*.* |
|
Телефон |
|
VARCHAR(15) |
Телефон |
|
|
|
|
сотрудника |
|
Должность |
|
VARCHAR(20) |
Должность |
|
|
|
|
сотрудника |
|
Attribute(s) of "Способ оплаты" Entity
Name |
|
Datatype |
Definition |
Note |
Код способа оплаты |
|
INTEGER |
Код способа оплаты |
Счетчик |
Способ оплаты |
|
VARCHAR(20) |
Расшифровка кода |
|
|
|
|
способа оплаты |
|
Attribute(s) of "Способ получения" Entity
Name |
|
Datatype |
Definition |
Note |
Код способа |
|
INTEGER |
Код способа |
Счетчик |
получения |
|
|
получения |
|
Способ получения |
|
VARCHAR(20) |
Расшифровка кода |
|
|
|
|
способа получения |
|
Attribute(s) of "Статус заказа" Entity
Name |
|
Datatype |
Definition |
Note |
Код статуса |
|
INTEGER |
Код статуса заказа |
Счетчик. |
Статус |
|
VARCHAR(20) |
Расшифровка кода |
|
|
|
|
статуса заказа |
|
9
Relationship
Relationship
Name |
Cardinality |
Заказ/Доставка |
One-to-Zero-or-One (Z) |
Заказ/Заказ-товар |
One-to-One-or-More (P) |
Монета/Заказ-товар |
One-to-Zero-One-or-More |
Покупатель/Заказ |
One-to-Zero-One-or-More |
Состояние/Монета |
One-to-Zero-One-or-More |
Сотрудник/Заказ |
One-to-Zero-One-or-More |
Сотрудник/Доставка |
One-to-Zero-One-or-More |
Способ оплаты/заказ |
One-to-Zero-One-or-More |
Способ получения/заказ |
One-to-Zero-One-or-More |
Статус заказа/Заказ |
One-to-Zero-One-or-More |
Разработка реляционной модели БД
Функциональные зависимости.
Пусть X и Y – атрибуты некоторого отношения R. Если в любой момент времени каждому значению X соответствует единственное значение
Y, то Y функционально зависит от X (X→Y).
Атрибут Y функционально полно зависит от составного атрибута X, если он функционально зависит от X и не зависит функционально от любого подмножества атрибута X.
Покажем функционально полную зависимость атрибутов сущностей разрабатываемой базы данных от ключей соответствующих сущностей.
Покупатель
Логин |
Логин |
Логин |
Пароль |
Логин |
|
Логин |
ФИО |
Логин |
Адрес |
Логин |
Дата_рождения |
Логин |
Дата_регистрации |
Логин |
Пол |
Логин |
Телефон |
Логин |
Почтовый индекс |
Сотрудник
Табельный_номер Табельный_номер Табельный_номер ФИО Табельный_номер e-mail Табельный_номер Телефон Табельный_номер Должность
10