
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ХАРЧОВИХ ТЕХНОЛОГІЙ
Кафедра інформаційних систем
Розрахункова робота з дисципліни: “Проектування інформаційних систем”
Тема: «Організація роботи відділу статистики Городищенського районного територіального медичного об’єднання »
Виконала:
студентка групи АКС 4-4
Скримська Л.В.
Перевірив викладач:
М’якшило О.М.
Київ 2013
Зміст
1.Report Model Properties.
2. Функціональна модель (середовище BPWin).
3. Модель DFD.
4. Логічна модель бази даних на рівні Definition.
5. Логічна модель бази даних на рівні атрибутів.
6. Фізична модель бази даних(середовище ERWin).
7. SQL-код генерації БД в MS SQL Server.
8. Діаграма бази даних в MS SQL Server.
9. Протоколи зв’язку між моделями.
10. Протоколи функціонального вартісного аналізу.
1. Report Model Properties.
Model Name: Організація роботи відділу статистики Городищенського РТМО
Definition: 1. Яку роботу виконує відділ статистики?
2. До складу якого підприємства належить?
3. Які посади входять до відділу?
4. Які документи формуються в результаті виконаної роботи?
5. Облік яких даних проводить відділ?
6. Хто забезпечує прийом запиту?
7. На основі чого формуються, а потім приймаються рішення?
8. Які дані аналізуються в результаті роботи відділу?
Scope: Виконати завдання, починаючи від надходження даних і закінчуючи формуванням звітних документів
Viewpoint: Оцінка діяльності відділу з точки зору начальника Городищенського районного територіального медичного об'єднання
Time Frame: (TO-BE)
Status: WORKING
User Last Revision Date: 29.12.2013
System Last Revision Date: 30.10.2013
Creation Date: 18.09.2013
Author Name: Скримська
Source: Нормативні документи
штатно-посадові інструкції
звіти про проведену роботу
Purpose: Дослідити діяльність відділу статистики Городищенського РТМО з метою його автоматизації
2. Функціональна модель (середовище BPWin).
3.Модель DFD.
Створення індексів
Валідація (обмеження):
4. Логічна модель бази даних на рівні Definition.
5. Логічна модель бази даних на рівні атрибутів.
6. Фізична модель бази даних(середовище ERWin).
7. SQL-код генерації БД в MS SQL Server.
CREATE RULE обмеження_віку
AS @col BETWEEN '0' AND '150'
Execution Successful
CREATE RULE кількість_апаратів
AS @col BETWEEN '0' AND '2000'
Execution Successful
CREATE RULE обмеження_на_місяці
AS @col BETWEEN '1' AND '12'
Execution Successful
CREATE RULE обмеження_на_роки
AS @col BETWEEN 1700 AND 2013
Execution Successful
CREATE RULE Обмеження_на_квартали
AS @col BETWEEN '1' AND '4'
Execution Successful
CREATE TABLE Апарат
(
Код_апарата int IDENTITY ( 1,1 ) ,
Назва_апарата char(25) NULL ,
Призначення char(40) NULL ,
Вартість_грн real NULL ,
Дата_надходження datetime NULL
)
Execution Successful
ALTER TABLE Апарат
ADD CONSTRAINT XPKАпарат PRIMARY KEY CLUSTERED (Код_апарата ASC)
Execution Successful
CREATE TABLE Вид_медперсоналу
(
Код_виду int IDENTITY ( 1,1 ) ,
Назва_виду char(25) NULL ,
Кількість_медперсоналу integer NULL
)
Execution Successful
ALTER TABLE Вид_медперсоналу
ADD CONSTRAINT XPKВид_медперсоналу PRIMARY KEY CLUSTERED (Код_виду ASC)
Execution Successful
CREATE TABLE Журнал_даних
(
Код_журналу int IDENTITY ( 1,1 ) ,
Кількість_хворих integer NULL ,
Наслідки_хвороби char(20) NULL ,
Код_хвороби integer NOT NULL ,
Код_закладу integer NOT NULL ,
Код_періоду integer NOT NULL
)
Execution Successful
ALTER TABLE Журнал_даних
ADD CONSTRAINT XPKЖурнал_даних PRIMARY KEY CLUSTERED (Код_журналу ASC)
Execution Successful
CREATE TABLE Категорія
(
Код_категорії int IDENTITY ( 1,1 ) ,
Вік char(25) NULL ,
Назва_категорії char(25) NULL ,
Код_хвороби integer NULL
)
Execution Successful
ALTER TABLE Категорія
ADD CONSTRAINT XPKКатегорія PRIMARY KEY CLUSTERED (Код_категорії ASC)
Execution Successful
CREATE TABLE Медичний_заклад
(
Код_закладу int IDENTITY ( 1,1 ) ,
Тип char(25) NOT NULL ,
Код_пункту integer NULL ,
Код_виду integer NULL
)
Execution Successful
ALTER TABLE Медичний_заклад
ADD CONSTRAINT XPKМед_заклад PRIMARY KEY CLUSTERED (Код_закладу ASC)
Execution Successful
CREATE TABLE Населений_пункт
(
Код_пункту int IDENTITY ( 1,1 ) ,
Назва_пункту char(25) NOT NULL ,
Кількість_жителів integer NULL
Execution Successful
ALTER TABLE Населений_пункт
ADD CONSTRAINT XPKНаселений_пункт PRIMARY KEY CLUSTERED (Код_пункту ASC)
Execution Successful
CREATE NONCLUSTERED INDEX XIE1Населений_пункт ON Населений_пункт
(
Назва_пункту ASC
)
Execution Successful
CREATE TABLE Період
(
Код_періоду int IDENTITY ( 1,1 ) ,
Місяць integer NULL ,
Квартал integer NOT NULL ,
Рік integer NULL
)
Execution Successful
ALTER TABLE Період
ADD CONSTRAINT XPKПеріод PRIMARY KEY CLUSTERED (Код_періоду ASC)
Execution Successful
CREATE TABLE Поставка
(
Код_поставки int IDENTITY ( 1,1 ) ,
Кількість_апаратів integer NULL ,
Код_закладу integer NULL ,
Код_періоду int NULL ,
Код_апарата integer NULL
)
Execution Successful
ALTER TABLE Поставка
ADD CONSTRAINT XPKПоставка PRIMARY KEY CLUSTERED (Код_поставки ASC)
Execution Successful
CREATE TABLE Хвороба
(
Код_хвороби int IDENTITY ( 1,1 ) ,
Назва_хвороби char(25) NOT NULL ,
Ознаки_хвороби char(30) NULL
)
Execution Successful
ALTER TABLE Хвороба
ADD CONSTRAINT XPKХвороба PRIMARY KEY CLUSTERED (Код_хвороби ASC)
Execution Successful
CREATE VIEW Апарат_Поставка(Назва_апарата,Кількість_апаратів,Тип,Код_пункту,Місяць,Квартал,Рік)
AS
SELECT Апарат.Назва_апарата,Поставка.Кількість_апаратів,Медичний_заклад.Тип,Медичний_заклад.Код_пункту,Період.Місяць,Період.Квартал,Період.Рік
FROM Апарат,Період,Поставка,Медичний_заклад
WHERE Апарат.Код_апарата=Поставка.Код_апарата AND Поставка.Код_періоду=Період.Код_періоду AND Поставка.Код_закладу=Медичний_заклад.Код_закладу
WITH CHECK OPTION
Execution Successful
ALTER TABLE Журнал_даних
ADD CONSTRAINT R_7 FOREIGN KEY (Код_хвороби) REFERENCES Хвороба(Код_хвороби)
ON UPDATE CASCADE
Execution Successful
ALTER TABLE Журнал_даних
ADD CONSTRAINT R_8 FOREIGN KEY (Код_закладу) REFERENCES Медичний_заклад(Код_закладу)
ON UPDATE CASCADE
Execution Successful
ALTER TABLE Журнал_даних
ADD CONSTRAINT R_18 FOREIGN KEY (Код_періоду) REFERENCES Період(Код_періоду)
ON UPDATE CASCADE
Execution Successful
exec sp_bindrule 'обмеження_віку', 'Категорія.Вік'
Execution Successful
ALTER TABLE Категорія
ADD CONSTRAINT R_13 FOREIGN KEY (Код_хвороби) REFERENCES Хвороба(Код_хвороби)
ON DELETE CASCADE
ON UPDATE CASCADE
Execution Successful
ALTER TABLE Медичний_заклад
ADD CONSTRAINT R_17 FOREIGN KEY (Код_пункту) REFERENCES Населений_пункт(Код_пункту)
ON UPDATE CASCADE
Execution Successful
ALTER TABLE Медичний_заклад
ADD CONSTRAINT R_19 FOREIGN KEY (Код_виду) REFERENCES Вид_медперсоналу(Код_виду)
ON UPDATE CASCADE
Execution Successful
exec sp_bindrule 'обмеження_на_місяці', 'Період.Місяць'
Execution Successful
exec sp_bindrule 'Обмеження_на_квартали', 'Період.Квартал'
Execution Successful
exec sp_bindrule 'обмеження_на_роки', 'Період.Рік'
Execution Successful
ALTER TABLE Поставка
ADD CONSTRAINT R_10 FOREIGN KEY (Код_закладу) REFERENCES Медичний_заклад(Код_закладу)
ON UPDATE CASCADE
Execution Successful
ALTER TABLE Поставка
ADD CONSTRAINT R_11 FOREIGN KEY (Код_апарата) REFERENCES Апарат(Код_апарата)
ON UPDATE CASCADE
Execution Successful
ALTER TABLE Поставка
ADD CONSTRAINT R_27 FOREIGN KEY (Код_періоду) REFERENCES Період(Код_періоду)
ON UPDATE CASCADE
Execution Successful
CREATE TRIGGER tI_Апарат ON Апарат FOR INSERT AS
/* ERwin Builtin Trigger */
/* INSERT trigger on Апарат */
BEGIN
DECLARE @NUMROWS int,
@nullcnt int,
@validcnt int,
@errno int,
@errmsg varchar(255)
SELECT @NUMROWS = @@rowcount
/* ERwin Builtin Trigger */
/* Апарат доставляється Поставка on parent insert cascade */
/* ERWIN_RELATION:CHECKSUM="0000a866", PARENT_OWNER="", PARENT_TABLE="Апарат"
CHILD_OWNER="", CHILD_TABLE="Поставка"
P2C_VERB_PHRASE="доставляється", C2P_VERB_PHRASE="",
FK_CONSTRAINT="R_11", FK_COLUMNS="Код_апарата" */
/* Application specific. Left out intentionally. */
/* ERwin Builtin Trigger */
RETURN
ERROR:
raiserror @errno @errmsg
rollback transaction
END
Execution Successful
CREATE TRIGGER tU_Вид_медперсоналу ON Вид_медперсоналу FOR UPDATE AS
/* ERwin Builtin Trigger */
/* UPDATE trigger on Вид_медперсоналу */
BEGIN
DECLARE @NUMROWS int,
@nullcnt int,
@validcnt int,
@insКод_виду int,
@errno int,
@errmsg varchar(255)
SELECT @NUMROWS = @@rowcount
/* ERwin Builtin Trigger */
/* Вид_медперсоналу Медичний_заклад on parent update cascade */
/* ERWIN_RELATION:CHECKSUM="00018891", PARENT_OWNER="", PARENT_TABLE="Вид_медперсоналу"
CHILD_OWNER="", CHILD_TABLE="Медичний_заклад"
P2C_VERB_PHRASE="", C2P_VERB_PHRASE="надає робочі місця",
FK_CONSTRAINT="R_19", FK_COLUMNS="Код_виду" */
IF
/* %ParentPK(" OR",UPDATE) */
UPDATE(Код_виду)
BEGIN
IF @NUMROWS = 1
BEGIN
SELECT @insКод_виду = inserted.Код_виду
FROM inserted
UPDATE Медичний_заклад
SET
/* %JoinFKPK(Медичний_заклад,@ins," = ",",") */
Медичний_заклад.Код_виду = @insКод_виду
FROM Медичний_заклад,inserted,deleted
WHERE
/* %JoinFKPK(Медичний_заклад,deleted," = "," AND") */
Медичний_заклад.Код_виду = deleted.Код_виду
END
ELSE
BEGIN
SELECT @errno = 30006,
@errmsg = 'Cannot cascade Вид_медперсоналу update because more than one row has been affected.'
GOTO ERROR
END
END
/* ERwin Builtin Trigger */
RETURN
ERROR:
raiserror @errno @errmsg
rollback transaction
END
Execution Successful
CREATE TRIGGER tI_Журнал_даних ON Журнал_даних FOR INSERT AS
/* ERwin Builtin Trigger */
/* INSERT trigger on Журнал_даних */
BEGIN
DECLARE @NUMROWS int,
@nullcnt int,
@validcnt int,
@errno int,
@errmsg varchar(255)
SELECT @NUMROWS = @@rowcount
/* ERwin Builtin Trigger */
/* Хвороба заноситься Журнал_даних on child insert cascade */
/* ERWIN_RELATION:CHECKSUM="0003a764", PARENT_OWNER="", PARENT_TABLE="Хвороба"
CHILD_OWNER="", CHILD_TABLE="Журнал_даних"
P2C_VERB_PHRASE="заноситься", C2P_VERB_PHRASE="",
FK_CONSTRAINT="R_7", FK_COLUMNS="Код_хвороби" */
IF
/* %ChildFK(" OR",UPDATE) */
UPDATE(Код_хвороби)
BEGIN
INSERT Хвороба (Код_хвороби)
SELECT Код_хвороби
FROM inserted
WHERE
/* %NotnullFK(inserted," IS NOT NULL AND") */
NOT EXISTS (
SELECT * FROM Хвороба
WHERE
/* %JoinFKPK(inserted,Хвороба," = "," AND") */
inserted.Код_хвороби = Хвороба.Код_хвороби
)
END
/* ERwin Builtin Trigger */
/* Медичний_заклад входить Журнал_даних on child insert cascade */
/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Медичний_заклад"
CHILD_OWNER="", CHILD_TABLE="Журнал_даних"
P2C_VERB_PHRASE="входить", C2P_VERB_PHRASE="",
FK_CONSTRAINT="R_8", FK_COLUMNS="Код_закладу" */
IF
/* %ChildFK(" OR",UPDATE) */
UPDATE(Код_закладу)
BEGIN
INSERT Медичний_заклад (Код_закладу)
SELECT Код_закладу
FROM inserted
WHERE
/* %NotnullFK(inserted," IS NOT NULL AND") */
NOT EXISTS (
SELECT * FROM Медичний_заклад
WHERE
/* %JoinFKPK(inserted,Медичний_заклад," = "," AND") */
inserted.Код_закладу = Медичний_заклад.Код_закладу
)
END
/* ERwin Builtin Trigger */
/* Період Журнал_даних on child insert restrict */
/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Період"
CHILD_OWNER="", CHILD_TABLE="Журнал_даних"
P2C_VERB_PHRASE="", C2P_VERB_PHRASE="вміщує в себе",
FK_CONSTRAINT="R_18", FK_COLUMNS="Код_періоду" */
IF
/* %ChildFK(" OR",UPDATE) */
UPDATE(Код_періоду)
BEGIN
SELECT @nullcnt = 0
SELECT @validcnt = count(*)
FROM inserted,Період
WHERE
/* %JoinFKPK(inserted,Період) */
inserted.Код_періоду = Період.Код_періоду
/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," and") */
IF @validcnt + @nullcnt != @NUMROWS
BEGIN
SELECT @errno = 30002,
@errmsg = 'Cannot insert Журнал_даних because Період does not exist.'
GOTO ERROR
END
END
/* ERwin Builtin Trigger */
RETURN
ERROR:
raiserror @errno @errmsg
rollback transaction
END
Execution Successful
Schema Generation Complete
62 query succeeded.