
2 Модель бизнес – процесса
Модель бизнес процессов представлена на рисунках 1-5.
Рисунок 1 - Модель бизнес процессов, ветка А-0
Рисунок 2 - Модель бизнес процессов, ветка А0
Рисунок 3 - Модель бизнес процессов, ветка А1
Рисунок 3 - Модель бизнес процессов, ветка А3
Рисунок 4 - Модель бизнес процессов, ветка А2
3 Концептуальная схема
Рисунок 6 – Логическая схема базы данных
Сущность «Препараты» содержит информацию обо всех препаратах, имеющихся в аптеке. Отдельный препарат этой сущности может поставляться различными фирмами и иметь различные цены в различных фирмах, поэтому водиться сущность «Прайс ». Каждый препарат сущности «Прайс » содержит информацию поставляющей фирме и о цене конкретного препарата. Между сущностью «Препараты» и сущностью «Прайс» существует связь типа «1:М», обязательная с обеих сторон (если есть информация о препарате, то есть хотя бы одна фирма, поставляющая данный препарат цена препарата, если есть цена препарата и поставляющая его фирма, то должна быть информация о препарате). Сущность «Фирмы» содержит информацию о фирмах поставляющих препараты. Отдельная фирма этой сущности содержит информацию об одной цене отдельного препарата. Существует связь между сущностью «Фирмы» и сущностью «Прайс» типа «1:М», не обязательная с обеих сторон (ни одна фирма может не поставлять ни одного препарата).
Сущность «Препараты» содержит информацию обо всех препаратах, имеющихся в аптеке. Отдельный препарат этой сущности иметь различные показания к применению, поэтому водиться сущность «Показания к применению». Каждое показание к применению сущности «Показание к применению» содержит информацию применению отдельного препарата. Между сущностью «Препараты» и сущностью «Показания к применению» существует связь типа «1:М», обязательная с обеих сторон (если есть информация о препарате, то обязательно должно быть показание к применению, если есть показание к применению, то обязательно должна быть информация о препарате). Сущность «Заболевания» содержит информацию о показания к применению, ведь при разных заболеваниях показания к применению могут быть различными. Отдельное заболевание сущности «Заболевания» содержит информацию об одном показании к применению одного препарата. Существует связь между сущностью «Заболевания» и сущностью «Показания к применению» типа «1:М», обязательная с обеих сторон (если есть показание к применению, то должно быть и заболевание, для лечения которого оно предназначено).
4 Физическая схема. Стратегии целостности
Рисунок 7 – Физическая схема базы данных
На рисунок 7, можно увидеть какие данные необходимо заносить в определённые поля таблиц, какого типа они должны быть (строки, числа).
Стратегии целостности
Тригеры таблицы «Содержание заказа»:
1. добавление_товара_в_заказ.
При добавлении заказа в таблицу проверяем количество товара в наличие в таблице «Прайс ». Если вводимый заказ больше того, что имеется , то в заказ пишем то количество которое есть в наличие, а в «Прайсе» количество в наличие обнуляем.
USE [Apteka_Aibolit]
GO
/****** Object: Trigger [dbo].[добавление_товара_в_заказ] Script Date: 06/16/2009 02:26:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[добавление_товара_в_заказ]
on [dbo].[Содержимое_заказа]
for insert
as
declare @Kol int, @Kol_Nal int, @NPr int, @Ch_firmi int, @NZakaza int
select @Kol=Кол_заказа from inserted
select @NPr=NПрепарата from inserted
select @NZakaza=NЗаказа from inserted
select @Ch_firmi=Шифр_фирмы from Заказ_по_фирме
where NЗаказа=@NZakaza
select @Kol_Nal=Количество_штук from Прайс_цен
where NПрепарата=@NPr and Шифр_фирмы=@Ch_firmi
if @Kol_Nal<@Kol
begin
update Содержимое_заказа set Кол_заказа=@Kol_Nal
where NПрепарата=@NPr and NЗаказа=@NZakaza
update Прайс_цен set Количество_штук=0
where NПрепарата=@NPr and Шифр_фирмы=@Ch_firmi
end
2. изменение количества в прайсе при добавлении товара в
заказ.
При добавлении заказа в таблицу проверяем количество товара в наличие в таблице «Прайс цен». Если вводимый заказ меньше того, что имеется , то в заказ пишем заказываемое количество, а в «Прайсе цен»количество уменьшаем на величину, равную заказу.
USE [Apteka_Aibolit]
GO
/****** Object: Trigger [dbo].[изменение_количества_в_прайсе_при_добавлении_товара_в_заказ] Script Date: 06/16/2009 02:28:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[изменение_количества_в_прайсе_при_добавлении_товара_в_заказ]
on [dbo].[Содержимое_заказа]
for insert
as
declare @Kol int, @Kol_Nal int, @NPr int, @Ch_firmi int,@NZakaza int
select @Kol=Кол_заказа from inserted
select @NPr=NПрепарата from inserted
select @NZakaza=NЗаказа from inserted
select @Ch_firmi=Шифр_фирмы from Заказ_по_фирме
where NЗаказа=@NZakaza
select @Kol_Nal=Количество_штук from Прайс_цен
where NПрепарата=@NPr and Шифр_фирмы=@Ch_firmi
if @Kol_Nal>@Kol
begin
update Прайс_цен set Количество_штук=@Kol_Nal-@Kol
where NПрепарата=@NPr and Шифр_фирмы=@Ch_firmi
end