Проектирование и реализация базы данных в архитектуре 'клиент-сервер'. Курсовая работа (т). Информационное обеспечение, программирование.

Проектирование и реализация базы данных в архитектуре 'клиент-сервер'. Курсовая работа (т). Информационное обеспечение, программирование.




💣 👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻


























































Информационное обеспечение, программирование

Вы можете узнать стоимость помощи в написании студенческой работы.


Помощь в написании работы, которую точно примут!

Похожие работы на - Проектирование и реализация базы данных в архитектуре 'клиент-сервер'

Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе

Нужна качественная работа без плагиата?

Не нашел материал для своей работы?


Поможем написать качественную работу Без плагиата!

1. Цель выполнения курсового проекта




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







On-line магазин компьютерных дисков
с играми GameMarket. net


Магазин занимается продажей компьютерных дисков
с играми через интернет с помощью платежной системы «WebMoney»
с возможностью доставки покупателю наземной почтой, курьером или авиапочтой
(каждый вид доставки имеет свою стоимость и скидки). Каждый покупатель имеет
собственный аккаунт, где хранятся его ФИО, логин, пароль, адрес электронной
почты, полный домашний адрес, номер счета WebMoney»,
размер накопительной скидки и контактный телефон. У каждого покупателя есть
счета (номера счетов), которые содержат информацию о способе, стоимости и дате
отправки купленного покупателем товара, а также скидку на доставку. У каждой
продажи есть свой уникальный номер. Покупатель может купить несколько дисков
сразу и они будут отправлены единой посылкой в течение 5 дней. Если этот же
покупатель совершит еще одну покупку в день его предыдущей покупки, то этот
товар будет оправлен в первой посылке. В противном случае новый заказ будет
выслан другой посылкой через 5 дней.


Магазин обслуживает персонал. Продавцы
занимаются оформлением счетов покупателей. Каждый сотрудник имеет собственный
аккаунт, где хранятся его ФИО, логин, пароль, должность, адрес электронной
почты, полный домашний адрес, номер счета WebMoney»,
оклад, процентная ставка к зарплате с продажи товара и контактный телефон.


У каждой игры указаны название, разработчик,
издатель, дата выпуска, описание, количество дисков на складе и процент
надбавки на цену покупки у поставщика для получения прибыли, а также цена
последней поставки.


Магазин сотрудничает с поставщиками дисков. У
каждого поставщика есть название, адрес электронной почты, адрес, номер счета WebMoney»
и контактный телефон. Поставка товара идет партиями, каждая партия имеет свой
номер. В партии указан какой товар, по какой цене, в каком количестве, когда и
кем поставляется.


Цена на диск складывается из цены последней
поставки плюс процент для получения прибыли.


На каждую покупку распространяется фиксированная
скидка. Также каждый покупатель имеет индивидуальную накопительную скидку. При
общей сумме покупок свыше 1000 руб - 1%, свыше 5000 руб - 5%, свыше 10 000 руб
- 10%.




2.2 Ограничения, присутствующие в
предметной области




1)     Автоматическое добавление в поле
«Количество на складе» таблицы «Товары» количества товара, указанного при
осуществлении поставки, а также заполнение поля «Цена последней поставки».


2)     При осуществлении продажи -
автоматическое уменьшение числа товара на складе на количество проданного
товара, а также вывод на экран ошибки в случае, когда количество на продажу
больше, чем количество товара на складе.


)       Проверка того, чтобы дата осуществления
покупки, дата выпуска товара и дата поставки товара были не больше текущей.


)       Автоматическая установка даты отправки
товара (дата покупки + 5 дней).


)       Подсчет накопительной скидки для
покупателя при осуществлении новой покупки.




2.3 Основные задачи, решаемые в
предметной области


1)     Подсчет конечной цены продажи.


2)     Подсчет зарплаты сотрудников.


)       Поиск дисков по
названию/разработчику/издателю.


)       Поиск покупателя, купившего товара на
наибольшую сумму.


)       Поиск самого активного продавца по
количеству оформленных счетов.


)       Вывод статистики используемых способов
доставки в процентном соотношении.


)       Вывод товаров, которые не продавались
более месяца.


)       Подсчет общей прибыли магазина за
заданный период.


)       Поиск самого популярного товара по
результатам продаж.


)       Вывод истории заказов заданного
клиента.







3. Проектирование инфологической
модели данных




Реляционная база данных содержит как
структурную, так и семантическую информацию. Структура базы данных определяется
числом и видом включенных в нее отношений, и связями типа «один-ко-многим»,
существующими между кортежами этих отношений. Семантическая часть описывает
множество функциональных зависимостей, существующих между атрибутами этих
отношений [1].


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




Отношения, которые соответствуют всем свойствам
отношений, находятся в первой нормальной форме:


On-Line Магазин
(ФИО покупателя, логин покупателя, пароль покупателя, адрес электронной почты
покупателя, полный домашний адрес покупателя, номер счета «WebMoney»
покупателя, размер накопительной скидки покупателя, контактный телефон
покупателя, дата отправки товара, скидка на доставку, способ доставки,
стоимость доставки, ФИО сотрудника, логин сотрудника, пароль сотрудника,
должность сотрудника, адрес электронной почты сотрудника, полный домашний адрес
сотрудника, номер счета «WebMoney»
сотрудника, оклад сотрудника, процентная ставка к зарплате с продажи товара
сотрудника, контактный телефон сотрудника, номер счета, номер партии, название
игры, разработчик игры, издатель игры, дата выпуска игры, описание игры,
количество дисков на складе, процент надбавки на цену покупки у поставщика для
получения прибыли, цена последней поставки, номер продажи, дата продажи, скидка
на продажу, количество на продажу, количество товара в партии, цена поставки
партии, дата поставки партии, название поставщика, адрес электронной почты
поставщика, адрес поставщика, номер счета «WebMoney»
поставщика, контактный телефон поставщика)




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


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


PK (ФИО
покупателя, ФИО сотрудника, номер продажи, название игры, номер партии)


PK ФИО
покупателя, логин покупателя, пароль покупателя, адрес электронной почты
покупателя, полный домашний адрес покупателя, номер счета «WebMoney»
покупателя, размер накопительной скидки покупателя, контактный телефон
покупателя.


PK ФИО
сотрудника, логин сотрудника, пароль сотрудника, должность сотрудника, адрес
электронной почты сотрудника, полный домашний адрес сотрудника, номер счета «WebMoney»
сотрудника, оклад сотрудника, процентная ставка к зарплате с продажи товара
сотрудника, контактный телефон сотрудника.


PK название
игры, разработчик игры, издатель игры, дата выпуска игры, описание игры,
количество дисков на складе, процент надбавки на цену покупки у поставщика для
получения прибыли, цена последней поставки.


PK номер
продажи, дата продажи, скидка на продажу, количество на продажу, номер счета,
дата отправки товара, скидка на доставку, способ доставки, стоимость доставки.


PK номер
партии, количество товара в партии, цена поставки партии, дата поставки партии,
название поставщика, адрес электронной почты поставщика, адрес поставщика,
номер счета «WebMoney»
поставщика, контактный телефон поставщика.


Покупатели ( ФИО
покупателя (РК) , логин покупателя, пароль покупателя, адрес электронной
почты покупателя, полный домашний адрес покупателя, номер счета «WebMoney»
покупателя, размер накопительной скидки покупателя, контактный телефон
покупателя)


Сотрудники
( ФИО сотрудника (РК) , логин сотрудника, пароль сотрудника, должность
сотрудника, адрес электронной почты сотрудника, полный домашний адрес
сотрудника, номер счета «WebMoney»
сотрудника, оклад сотрудника, процентная ставка к зарплате с продажи товара
сотрудника, контактный телефон сотрудника)


Продажа
( номер продажи (РК) , номер счета, дата отправки товара, скидка на
доставку, способ доставки, стоимость доставки, дата продажи, скидка на продажу,
количество на продажу, ФИО сотрудника (FК),
ФИО покупателя (FК), название
игры (FК))


Товар
( название игры (РК) , разработчик игры, издатель игры, дата выпуска игры,
описание игры, количество дисков на складе, процент надбавки на цену покупки у
поставщика для получения прибыли, цена последней поставки)


Партии товара
( номер партии (РК) , количество товара в партии, цена поставки партии,
дата поставки партии, название поставщика, адрес электронной почты поставщика,
адрес поставщика, номер счета «WebMoney»
поставщика, контактный телефон поставщика, название игры (FK))




Отношение находится в третьей нормальной форме,
если оно находится во второй нормальной форме и отсутствует транзитивная
зависимость между атрибутами:


Номер партии → адрес электронной почты
поставщика


Номер партии → номер счета «WebMoney»
поставщика


Номер партии → контактный телефон
поставщика


Название игры адрес электронной почты поставщика


Название игры номер счета «WebMoney»
поставщика


Название игры контактный телефон поставщика


Покупатели
( ФИО покупателя (РК) , логин покупателя, пароль покупателя, адрес
электронной почты покупателя, полный домашний адрес покупателя, номер счета «WebMoney»
покупателя, размер накопительной скидки покупателя, контактный телефон
покупателя)


Сотрудники ( ФИО
сотрудника (РК) , логин сотрудника, пароль сотрудника, должность сотрудника,
адрес электронной почты сотрудника, полный домашний адрес сотрудника, номер
счета «WebMoney»
сотрудника, оклад сотрудника, процентная ставка к зарплате с продажи товара
сотрудника, контактный телефон сотрудника)


Продажа
( номер продажи (РК) , номер счета, дата отправки товара, скидка на
доставку, способ доставки, стоимость доставки, дата продажи, скидка на продажу,
количество на продажу, ФИО сотрудника (FК),
ФИО покупателя (FК), название
игры (FК))


Товар
( название игры (РК) , разработчик игры, издатель игры, дата выпуска игры,
описание игры, количество дисков на складе, процент надбавки на цену покупки у
поставщика для получения прибыли, цена последней поставки)


Партии товара
( номер партии (РК) , количество товара в партии, цена поставки партии,
дата поставки партии, название игры (FK),
название поставщика (FK))


Поставщики
( название поставщика (РК) , адрес электронной почты поставщика, адрес
поставщика, номер счета «WebMoney»
поставщика, контактный телефон поставщика)




Отношение находится в четвертой нормальной
форме, если оно находится в третьей нормальной форме, и отсутствуют
многозначные зависимости между ключами:


название игры → → дата отправки
товара


название игры → → скидка на доставку


название игры → → стоимость доставки


Покупатели
( ФИО покупателя (РК) , логин покупателя, пароль покупателя, адрес
электронной почты покупателя, полный домашний адрес покупателя, номер счета «WebMoney»
покупателя, размер накопительной скидки покупателя, контактный телефон
покупателя)


Сотрудники
( ФИО сотрудника (РК) , логин сотрудника, пароль сотрудника, должность
сотрудника, адрес электронной почты сотрудника, полный домашний адрес
сотрудника, номер счета «WebMoney»
сотрудника, оклад сотрудника, процентная ставка к зарплате с продажи товара
сотрудника, контактный телефон сотрудника)


Счета
( номер счета (РК) , дата отправки товара, скидка на доставку, способ
доставки, стоимость доставки, ФИО сотрудника (FК),
ФИО покупателя (FК))


Продажа
( номер продажи (РК) , дата продажи, скидка на продажу, количество на
продажу, название игры (FК),
номер счета (FK))


Товар
( название игры (РК) , разработчик игры, издатель игры, дата выпуска игры,
описание игры, количество дисков на складе, процент надбавки на цену покупки у
поставщика для получения прибыли, цена последней поставки)


Партии товара
( номер партии (РК) , количество товара в партии, цена поставки партии,
дата поставки партии, название игры (FK),
название поставщика (FK))


Поставщики
( название поставщика (РК) , адрес электронной почты поставщика, адрес
поставщика, номер счета «WebMoney»
поставщика, контактный телефон поставщика)




3.5 Описание основных сущностей и их
атрибутов




Описание основных сущностей и их атрибутов
приводится в таблице 3.1.




Таблица 3.1. Описание сущностей и атрибутов


Фамилия,
имя, отчество покупателя (первичный ключ)

Логин
покупателя для входа в информационную систему

Пароль
покупателя для входа в информационную систему

Адрес
электронной почты для обратной связи с покупателем

Адрес
места проживания покупателя, куда будут оправлены покупки

Счет
«WebMoney»
покупателя для осуществления безналичных расчетов

Размер
накопительной скидки покупателя

Накопительная
скидка покупателя, зависящая от общей суммы его покупок

Контактный
телефон для обратной связи с покупателем

Фамилия,
имя, отчество сотрудника (первичный ключ)

Логин
сотрудника для входа в информационную систему

Пароль
сотрудника для входа в информационную систему

Адрес
электронной почты для обратной связи с сотрудником

Счет
«WebMoney»
сотрудника для осуществления безналичных расчетов

Оклад,
ежемесячно получаемый сотрудником

Процентная
ставка к зарплате с продажи товара сотрудника

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

Контактный
телефон для обратной связи с сотрудником

Содержит
информацию о счетах покупателей

Дата,
когда будет оправлен покупателю купленный им товар

Скидка
на товар, отправляемый покупателю

Способ
доставки (наземная почта, авиапочта, курьер)

Фамилия,
имя, отчество сотрудника (внешний ключ от сущности «Сотрудники»)

Фамилия,
имя, отчество покупателя (внешний ключ от сущности «Покупатели»)

Название
игры (внешний ключ от сущности «Товар»)

Номер
счета (внешний ключ от сущности «Счета»)

Название
компании-разработчика игры

Дата,
когда игра была отправлена на прилавки магазинов

Хранимое
на складе количество копий данной игры

Краткое
описание сюжета и возможностей игры

Процент
надбавки на цену покупки у поставщика для получения прибыли

Процент
надбавки, который суммируется с ценой последней поставки данной игры

Содержит
информацию о поступивших партиях товаров

Количество
товара в пришедшей на склад партии

Название
игры (внешний ключ от сущности «Товар»)

Название
поставщика (внешний ключ от сущности «Поставщики»)

Название
компании поставщика (первичный ключ)

Адрес
электронной почты для обратной связи с поставщиком

Счет
«WebMoney» поставщика
для осуществления безналичных расчетов

Контактный
телефон для обратной связи с поставщиком

3.6 Выявление связей между
сущностями




В рассматриваемой предметной области можно
выделить связи, приведенные в таблице 3.2:







Поставщики
поставляют Партии товара

В качестве СУБД была выбрана PostgreSQL
по следующим причинам:


·       PostgreSQL
является бесплатной СУБД.


·       Отличная интеграция с языком
высокого уровня Java.


·       Как следствие предыдущего пункта, PostgreSQL
- идеальное решение для реализации web-приложений, написанных на Java.


·       Поддержка БД практически
неограниченного размера.


·       Мощные и надёжные механизмы
транзакций и репликации (механизм синхронизации содержимого нескольких копий
объекта (например, содержимого базы данных). Репликация - это процесс, под
которым понимается копирование данных из одного источника на множество других и
наоборот) [4].


В дальнейшем в работе для создания
концептуальной модели данных используется CASE-средство
ERwin, которое позволяет
быстро и наглядно спроектировать модель в виде диаграмм «сущность-связь», а
затем сгенерировать SQL код базы данных. Так как ERwin
7.3 не поддерживает PostgreSQL,
в качестве СУБД была выбрана MySql 5.x, потому что SQL
синтаксис и основные типы данных в PostgreSQL
и MySql совпадают.




4.1 Логический уровень модели данных




В ERwin
результат проектирования на концептуальном уровне представляется логической
моделью данных (рисунок 4.1).


В логической модели данных отображаются сущности
и атрибуты, ключевые атрибуты в модели представлены в сущности, над чертой.
Внешние ключи (мигрирующие атрибуты из родительской сущности) обозначаются как
(FK - Foreign
Key)[2]. Логический
уровень означает прямое отображение фактов из реальной жизни. Они именуются на
естественном языке, с любыми разделителями слов (пробелы, запятые и т.д.). На
логическом уровне не рассматривается использование конкретной СУБД, не
определяются типы данных (например, целое или вещественное число) и не
определяются индексы для таблиц[2].


Суррогатный ключ - это дополнительное служебное
поле, добавленное к уже имеющимся информационным полям таблицы, единственное
предназначение которого - служить первичным ключом [4].


Главное достоинство суррогатного ключа состоит в
том, что он никогда не изменяется, поскольку не является информативным полем
таблицы (не несёт никакой информации об описываемом записью объекте) [4].


При использовании суррогатных ключей не следует
озадачивать пользователя вводом значений, которые не несут для него никакой
информации. Они генерируются автоматически независимо от пользователя [1].


Введем суррогатные ключи для сущностей
«Покупатели», «Сотрудники», «Поставщики» и «Товар», кроме того, атрибуты «ФИО
покупателя» и «ФИО сотрудника» разделим на три атрибута («фамилия», «имя»,
«отчество») каждый и сгруппируем их в составные альтернативные ключи. Так же
альтернативными ключами сделаем атрибуты «название поставщика» и «название
игры». Альтернативные ключи (AK
- Alternative Key) служат для
ускорения поиска по базе данных.







Рисунок 4.1 - Модель данных на
логическом уровне в нотации IDEF1x




4.2 Физический уровень модели данных




Модель данных на физическом уровне отличается от
модели данных на логическом уровне тем, что она полностью ориентирована на
выбранную СУБД, т.е. в отличие от логической модели, в которой не имеет
значения, какой конкретно тип данных имеет атрибут, в физической модели данных
важно описать информацию о конкретных физических объектах - таблицах, полях,
индексах, процедурах и т.д [2]. Для СУБД PostgreSQL характерно то, что все
объекты базы данных, должны иметь англоязычное наименование.


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







Рисунок 4.2 - Модель данных на
физическом уровне в нотации IDEF1x




Соответствия между объектами логического и
физического уровня показаны в следующих таблицах:




Attribute(s) of "Партии товара"
EntityColumn(s) of "Consignment" Table

Attribute(s) of "Сотрудники"
EntityColumn(s) of "Shop_Staff" Table

Attribute(s) of "Покупатели"
EntityColumn(s) of "Buyers" Table

Attribute(s) of "Поставщики"
EntityColumn(s) of "Vendor" Table

Attribute(s) of "Продажа"
EntityColumn(s) of "Reteil" Table

Attribute(s) of "Счета"
EntityColumn(s) of "Accounts" Table

Attribute(s) of "Товар"
EntityColumn(s) of "Goods" Table

4.3 Сгенерированный в ERwin SQL
код таблиц




(_ID NUMERIC NOT NULL,_Name
VARCHAR(30),VARCHAR(100),VARCHAR(12),VARCHAR(20),_account_number VARCHAR(20),KEY
(Vendor_ID)


(_ID NUMERIC NOT
NULL,VARCHAR(25),VARCHAR(25),VARCHAR(25),TEXT,_of_price_increasing
INTEGER,_at_storehouse NUMERIC,_of_last_delivery DOUBLE PRECISION,_of_release
DATE,VARCHAR(50),KEY (Goods_ID)


(_ID NUMERIC NOT NULL,_date DATE,_ID
NUMERIC NOT NULL,_count INTEGER,_price DOUBLE PRECISION,_ID NUMERIC NOT
NULL,KEY (Consignment_ID),


(Vendor_ID) REFERENCES Vendor
(Vendor_ID),


(Goods_ID) REFERENCES Goods
(Goods_ID)


(_ID NUMERIC NOT NULL,_Name VARCHAR(20),_Name
VARCHAR(20),_Name
VARCHAR(20),VARCHAR(20),VARCHAR(20),VARCHAR(20),_account_number
VARCHAR(20),_address VARCHAR(100),VARCHAR(12),_Discount INTEGER,KEY (Buyer_ID)


(_ID NUMERIC NOT NULL,_Name
VARCHAR(20),_Name VARCHAR(20),_Name
VARCHAR(20),VARCHAR(20),VARCHAR(20),VARCHAR(20),VARCHAR(20),_account_number
VARCHAR(20),_address VARCHAR(100),VARCHAR(12),_rate NUMERIC,DOUBLE
PRECISION,KEY (Employee_ID)


(_ID NUMERIC NOT NULL,_ID NUMERIC
NOT NULL,_of_sending DATE,_on_shipping INTEGER,_ID NUMERIC NOT
NULL,_of_shipping VARCHAR(30),_of_shipping DOUBLE PRECISION,KEY (Account_ID),


(Buyer_ID) REFERENCES Buyers
(Buyer_ID),


(Employee_ID) REFERENCES Shop_Staff
(Employee_ID)


(_ID NUMERIC NOT NULL,_ID NUMERIC
NOT NULL,_count INTEGER,INTEGER,_ID NUMERIC NOT NULL,_of_reteil DATE,KEY
(Reteil_ID),


(Account_ID) REFERENCES Accounts
(Account_ID),


(Goods_ID) REFERENCES Goods
(Goods_ID)


5. Проектирование представлений,
последовательностей, триггеров, хранимых процедур




При использовании суррогатных ключей не следует
озадачивать пользователя вводом значений, которые не несут для него никакой
информации. Эти поля в среде СУБД PostgreSQL заполняются автоматически с
помощью, так называемых последовательностей (Sequences).


id_accounts - последовательность для
суррогатного ключа таблицы Accounts_vendor - последовательность для
суррогатного ключа таблицы Vendor _goods - последовательность для суррогатного
ключа таблицы Goods_reteil - последовательность для суррогатного ключа таблицы
Reteil_buyers - последовательность для суррогатного ключа таблицы Buyers_staff
- последовательность для суррогатного ключа таблицы Shop_Staff_consignment -
последовательность для суррогатного ключа таблицы Consignment




Триггер - это хранимая процедура особого типа,
которую пользователь не вызывает непосредственно, а исполнение которой
обусловлено наступлением определенного события (действием) - по сути
добавлением INSERT или удалением DELETE строки в заданной таблице, или
модификации UPDATE данных в определенном столбце заданной таблицы реляционной
базы данных. Триггеры применяются для обеспечения целостности данных и
реализации сложной бизнес-логики. Триггер запускается сервером автоматически
при попытке изменения данных в таблице, с которой он связан. Все производимые
им модификации данных рассматриваются как выполняемые в транзакции, в которой
выполнено действие, вызвавшее срабатывание триггера [4].


В среде PostgreSQL код триггера содержит только
событие для срабатывания и вызов триггерной функции, в которой содержится вся
логика триггера.


Разработанные триггеры представлены в таблице
5.1.




Таблица 5.1. Описание разработанных триггеров.


Триггер
для таблицы Сonsigment. Проверка даты поставки партии (она должна быть меньше
или равна текущей)

Триггер
для таблицы Goods. Проверка
даты выхода игры (она должна быть меньше или равна текущей)

Триггер
для таблицы Reteil. Проверка
даты продажи (она должна быть меньше или равна текущей)

Триггер
для таблицы Goods.
Автоматическое добавление в поле «Количество на складе» таблицы «Товары»
количества товара, указанного при осуществлении поставки, а также заполнение
поля «Цена последней поставки»

Триггер
для таблицы Reteil.
Автоматическая установка даты отправки товара (дата покупки + 5 дней)

Триггер
для таблицы Reteil. При
осуществлении продажи - автоматическое уменьшение числа товара на складе на
количество проданного товара, а также вывод на экран ошибки в случае, когда
количество на продажу больше, чем количество товара на складе

Триггер
для таблицы Reteil. Подсчет
накопительной скидки для покупателя при осуществлении новой покупки

В отличие от обычных таблиц реляционной БД,
представление не является самостоятельной частью набора данных, хранящегося в
базе. Содержимое представления динамически вычисляется на основании данных,
находящихся в реальных таблицах. Изменение данных в реальной таблице БД
немедленно отражается в содержимом всех представлений, построенных на основании
этой таблицы.




Таблица 5.2. Описание разработанных
представлений.


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

Name
(Название товара), count_at_storehouse (количество товара на складе),
date_of_last_reteil (дата последней продажи товара)

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


Разработанные хранимые процедуры описаны в
таблице 5.3.




Таблица 5.3. Описание разработанных хранимых
процедур.


Summ:
DOUBLE PRECISION (Конечная цена продажи)

Вывод
истории заказов заданного клиента

Name:
VARCHAR (Название
игры), BuyedCount: INTEGER
(Количество купленного товара), DateOfBuy: DATE (Дата
покупки)

Поиск
покупателя, купившего товара на наибольшую сумму

Lname:
VARCHAR (Фамилия
покупателя), Total: DOUBLE
PRECISION (Общая
сумма покупок)

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

Type_of_shiping: VARCHAR (Способ доставки),
Percentage: DOUBLE PRECISION (процет использования)

Подсчет
общей прибыли магазина за заданный период

Begin_Date:
DATE
(Начальная дата подсчета прибыли) End_Date: DATE (Конечная
дата подсчета прибыли)

Cost: DOUBLE PRECISION (Затраты),
Proceeds: DOUBLE PRECISION (Выручка), Profits: DOUBLE
PRECISION
(Прибыль)

LastName: VARCHAR (Фамилия
сотрудника), Post: VARCHAR
(Должность), Salary: DOUBLE PRECISION (Оклад),
Salary_Plus_Wage_ Rate:
DOUBLE PRECISION (Оклад в сумме с процентом от продаж)

Поиск
дисков по названию/разработчику/издателю

whattofind:
VARCHAR (фраза,
по которой будет вестись поиск)

Id: INTEGER (Номер игры),
Name: VARCHAR (Название игры),
Developer: VARCHAR (Разработчик),
Publisher: VARCHAR (Издатель),
Price: DOUBLE PRECISION (Цена)

Поиск
самого популярного товара по результатам продаж

NameOfGood: VARCHAR (Название
игры), SellingCount: INTEGER
(Количество проданных копий)

Поиск
самого активного продавца по количеству оформленных счетов

Name:
VARCHAR (Фамилия
продавца), Selled: INTEGER
(Количество оформленных счетов)

6. Реализация базы данных в среде
серверной СУБД PostgreSQL
8.4




Для реализации базы данных была использована
программа «SQL
Manager 2007 for
PostgreSQL», которая является
GUI-оболочкой, предназначенной для разработки и администрирования баз данных PostgreSQL.


Пример таблицы представлен на рисунке 6.1.




.       Unclaimed_Goods (Вывод товаров, которые
не продавались более месяца).


CREATE OR REPLACE VIEW
"public"."Unclaimed_Goods"
(,_at_storehouse,_of_last_reteil)g.name,.count_at_storehouse,(r.date_of_reteil)
AS date_of_last_reteilgoods g,rg.goods_id = r.goods_id AND


(((SELECT max(r.date_of_reteil) AS
max FROM reteil r WHERE g.goods_id =.goods_id)) + 30) <= now()BY
g.name,.count_at_storehouse;




.       consigment_date_check (Проверка даты
поставки партии (она должна быть меньше или равна текущей))




CREATE TRIGGER
"consigment_date_check" BEFORE INSERT OR UPDATE
"public"."consignment" FOR EACH ROW PROCEDURE
"public"."cons_date_check"();OR REPLACE FUNCTION
"public"."cons_date_check" () RETURNS trigger AS


$body$NEW.consignment_date>now()
THEN EXCEPTION
'Введенная дата больше текущей!';


$body$'plpgsql'ON NULL
INPUTINVOKER100;


Триггеры «goods_date_check», «reteil_date_check»
имеют аналогичный код и результат работы.


.       goods_update_from_consig
(Автоматическое добавление в поле «Количество на складе» таблицы «Товары»
количества товара, указанного при осуществлении поставки, а также заполнение
поля «Цена последней поставки»)




CREATE TRIGGER
"goods_update_from_consig" AFTER INSERT
"public"."consignment" FOR EACH ROW PROCEDURE
"public"."goods_works"();OR REPLACE FUNCTION
"public"."goods_works" () RETURNS trigger AS


$body$goods SET
count_at_storehouse=count_at_storehouse+NEW.goods_countconsignment(goods.goods_id=NEW.goods_id);goods
SET
price_of_last_delivery=NEW.delivery_priceconsignment(goods.goods_id=NEW.goods_id);new;;


$body$'p
Похожие работы на - Проектирование и реализация базы данных в архитектуре 'клиент-сервер' Курсовая работа (т). Информационное обеспечение, программирование.
Реферат по теме Экономический рост в России
Курсовая работа по теме Электрический потенциал
Реферат по теме Предмет, метод и функции политэкономии. Экономические школы. Экономические законы
Контрольная работа: Інстутиційна фінансова інфраструктура України
Курсовая работа: Школа административного управления по А. Файолю
Учебное пособие: Разработка двух уроков по истории Великобритании
Установка печь-ковш
Реферат: Sane Vs Insane Essay Research Paper Sane
Отчет по практике по теме Исследование профессиональных качеств менеджера на примере ООО 'Идеальная кровля'
Интернет Образование Реферат
Реферат по теме Сновидение и бессознательное
Контрольная Работа По Теме Метод Координат B2
Сочинение Характеристика Дубровского 6 Класс
Реферат: Fairy Tale Of A Princess Who Would
Сочинение Письмо Учителю 5 Класс
Образец Реферата По Физкультуре
Доклад по теме Основные возможности изучения поведения потребителя методом “фокус-группа”
Реферат: Оптичні приймальні пристрої
Контрольная Работа По Геометрии 8 Класс Решение
Реферат по теме Газоанализатор КГА-8С
Похожие работы на - Т 34 - оружие Великой Победы: история создания и боевого применения
Реферат: Особенности кровоснабжения отграниченных гемангиом хориоидеи
Похожие работы на - Итальянский и немецкий фашизм

Report Page