Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
основная часть.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.66 Mб
Скачать

2 Модель бизнес – процесса

Модель бизнес процессов представлена на рисунках 1-5.

Рисунок 1 - Модель бизнес процессов, ветка А-0

Рисунок 2 - Модель бизнес процессов, ветка А0

Рисунок 3 - Модель бизнес процессов, ветка А1

Рисунок 3 - Модель бизнес процессов, ветка А3

Рисунок 4 - Модель бизнес процессов, ветка А2

3 Концептуальная схема

Рисунок 6 – Логическая схема базы данных

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

Сущность «Препараты» содержит информацию обо всех препаратах, имеющихся в аптеке. Отдельный препарат этой сущности иметь различные показания к применению, поэтому водиться сущность «Показания к применению». Каждое показание к применению сущности «Показание к применению» содержит информацию применению отдельного препарата. Между сущностью «Препараты» и сущностью «Показания к применению» существует связь типа «1:М», обязательная с обеих сторон (если есть информация о препарате, то обязательно должно быть показание к применению, если есть показание к применению, то обязательно должна быть информация о препарате). Сущность «Заболевания» содержит информацию о показания к применению, ведь при разных заболеваниях показания к применению могут быть различными. Отдельное заболевание сущности «Заболевания» содержит информацию об одном показании к применению одного препарата. Существует связь между сущностью «Заболевания» и сущностью «Показания к применению» типа «1:М», обязательная с обеих сторон (если есть показание к применению, то должно быть и заболевание, для лечения которого оно предназначено).

4 Физическая схема. Стратегии целостности

Рисунок 7 – Физическая схема базы данных

На рисунок 7, можно увидеть какие данные необходимо заносить в определённые поля таблиц, какого типа они должны быть (строки, числа).

Стратегии целостности

    1. Тригеры таблицы «Содержание заказа»:

    2. 1. добавление_товара_в_заказ.

    3. При добавлении заказа в таблицу проверяем количество товара в наличие в таблице «Прайс ». Если вводимый заказ больше того, что имеется , то в заказ пишем то количество которое есть в наличие, а в «Прайсе» количество в наличие обнуляем.

    4. USE [Apteka_Aibolit]

    5. GO

    6. /****** Object: Trigger [dbo].[добавление_товара_в_заказ] Script Date: 06/16/2009 02:26:48 ******/

    7. SET ANSI_NULLS ON

    8. GO

    9. SET QUOTED_IDENTIFIER ON

    10. GO

    11. ALTER trigger [dbo].[добавление_товара_в_заказ]

    12. on [dbo].[Содержимое_заказа]

    13. for insert

    14. as

    15. declare @Kol int, @Kol_Nal int, @NPr int, @Ch_firmi int, @NZakaza int

    16. select @Kol=Кол_заказа from inserted

    17. select @NPr=NПрепарата from inserted

    18. select @NZakaza=NЗаказа from inserted

    19. select @Ch_firmi=Шифр_фирмы from Заказ_по_фирме

    20. where NЗаказа=@NZakaza

    21. select @Kol_Nal=Количество_штук from Прайс_цен

    22. where NПрепарата=@NPr and Шифр_фирмы=@Ch_firmi

    23. if @Kol_Nal<@Kol

    24. begin

    25. update Содержимое_заказа set Кол_заказа=@Kol_Nal

    26. where NПрепарата=@NPr and NЗаказа=@NZakaza

    27. update Прайс_цен set Количество_штук=0

    28. where NПрепарата=@NPr and Шифр_фирмы=@Ch_firmi

    29. end

    30. 2. изменение количества в прайсе при добавлении товара в

    31. заказ.

    32. При добавлении заказа в таблицу проверяем количество товара в наличие в таблице «Прайс цен». Если вводимый заказ меньше того, что имеется , то в заказ пишем заказываемое количество, а в «Прайсе цен»количество уменьшаем на величину, равную заказу.

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