Автор работы: Пользователь скрыл имя, 18 Июля 2013 в 14:33, курсовая работа
В связи с этим книжному бизнесу, как главной в распространении книг отрасли, отведена важная социально значимая функция: формирова-ние эффективных коммуникационных стратегий книжного дела на рынке информационных услуг. Обеспечить выполнение этой задачи возможно с помощью использо¬вания всего арсенала современных информационных технологий, поиска рациональных способов продвижения изданий, выбо-ра рентабельных инструментов и каналов распространения информации, оптимального распределения имеющихся средств, организации действен-ного контроля за эффективностью коммуникаций с каждым субъектом книжного рынка и их целевыми группами.
ВВЕДЕНИЕ 3
1 Описание книжного магазина 4
1.1 Характеристика книжного магазина 4
1.2 Организационная структура книжного магазина 5
2 Анализ процесса обработки и выполнения распоряжений 7
2.1 Построение DFD-диаграмм 7
2.2 Словарь данных 11
2.3 Миниспецификация процессов 15
3 Постановка задачи 21
3.1 Характеристика подсистемы 21
3.2 Выходные данные 21
3.3 Входные и выходные данные 22
3.4 Входные данные 22
4 Проектирование информационного обеспечения системы с
помощью методологии ERD и CASE-средства ERwin 24
4.1 Проектирование ER-модели 25
4.2 Создание логической модели данных 31
4.3 Создание физической модели данных 32
5 Объектно-ориентированное проектирование информационной
системы с использованием методологии UML и CASE-средства
Rational Rose 34
5.1 Описание методологии UML 34
5.2 Создание диаграммы прецедентов использования (Use case
diagram) 36
5.3 Создание диаграммы классов 37
5.4 Создание диаграммы кооперации 38
5.5 Создание диаграммы последовательности 40
5.6 Создание диаграммы компонентов 42
5.7 Тестирование диаграмм 43
5.8 Генерация программного кода 46
ЗАКЛЮЧЕНИЕ 48
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
(
Номер_скважины ASC,
Номер_сотрудника ASC
);
ALTER TABLE Скважины
ADD CONSTRAINT XPKСкважины PRIMARY
KEY (Номер_скважины,Номер_
CREATE TABLE Сотрудники
(
Номер_сотрудника integer Number NOT NULL ,
ФИО varchar(30) String NOT NULL ,
Должность varchar(30) String NOT NULL ,
Стаж integer Number NOT NULL ,
Место_работы varchar(30) String NOT NULL ,
Номер_плана integer Number NOT NULL
);
CREATE UNIQUE INDEX XPKСотрудники ON Сотрудники
(
Номер_сотрудника ASC
);
ALTER TABLE Сотрудники
ADD CONSTRAINT XPKСотрудники PRIMARY KEY (Номер_сотрудника);
ALTER TABLE Отделы
ADD (CONSTRAINT R_6 FOREIGN KEY (Номер_сотрудника) REFERENCES Сотрудники(Номер_сотрудника));
ALTER TABLE Скважины
ADD (CONSTRAINT R_4 FOREIGN KEY (Номер_сотрудника) REFERENCES Сотрудники(Номер_сотрудника));
ALTER TABLE Сотрудники
ADD (CONSTRAINT R_5 FOREIGN KEY (Номер_плана) REFERENCES Планы(Номер_плана) ON DELETE SET NULL);
CREATE TRIGGER tI_Отделы BEFORE INSERT ON Отделы for each row
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
-- INSERT trigger on Отделы
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 24 апреля 2013 г. 3:39:05 */
/* Сотрудники R/6 Отделы on child insert restrict */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="Отделы"
P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="R/6",
FK_CONSTRAINT="R_6", FK_COLUMNS="Номер_сотрудника" */
SELECT count(*) INTO NUMROWS
FROM Сотрудники
WHERE
/* %JoinFKPK(:%New,Сотрудники," = "," AND") */
:new.Номер_сотрудника = Сотрудники.Номер_сотрудника;
IF (
/* %NotnullFK(:%New," IS NOT NULL AND") */
NUMROWS = 0
)
THEN
raise_application_error(
-20002,
'Cannot insert Отделы because Сотрудники does not exist.'
);
END IF;
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
END;
/
CREATE TRIGGER tU_Отделы AFTER UPDATE ON Отделы for each row
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
-- UPDATE trigger on Отделы
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 24 апреля 2013 г. 3:39:05 */
/* Сотрудники R/6 Отделы on child update restrict */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="Отделы"
P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="R/6",
FK_CONSTRAINT="R_6", FK_COLUMNS="Номер_сотрудника" */
SELECT count(*) INTO NUMROWS
FROM Сотрудники
WHERE
/* %JoinFKPK(:%New,Сотрудники," = "," AND") */
:new.Номер_сотрудника = Сотрудники.Номер_сотрудника;
IF (
/* %NotnullFK(:%New," IS NOT NULL AND") */
NUMROWS = 0
)
THEN
raise_application_error(
-20007,
'Cannot update Отделы because Сотрудники does not exist.'
);
END IF;
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
END;
/
CREATE TRIGGER tD_Планы AFTER DELETE ON Планы for each row
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
-- DELETE trigger on Планы
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 24 апреля 2013 г. 3:39:05 */
/* Планы R/5 Сотрудники on parent delete set null */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="Сотрудники"
P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="R/5",
FK_CONSTRAINT="R_5", FK_COLUMNS="Номер_плана" */
UPDATE Сотрудники
SET
/* %SetFK(Сотрудники,NULL) */
Сотрудники.Номер_плана = NULL
WHERE
/* %JoinFKPK(Сотрудники,:%Old," = "," AND") */
Сотрудники.Номер_плана = :old.Номер_плана;
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
END;
/
CREATE TRIGGER tU_Планы AFTER UPDATE ON Планы for each row
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
-- UPDATE trigger on Планы
DECLARE NUMROWS INTEGER;
BEGIN
/* Планы R/5 Сотрудники on parent update set null */
/* ERWIN_RELATION:CHECKSUM="0000e
CHILD_OWNER="", CHILD_TABLE="Сотрудники"
P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="R/5",
FK_CONSTRAINT="R_5", FK_COLUMNS="Номер_плана" */
IF
/* %JoinPKPK(:%Old,:%New," <> "," OR ") */
:old.Номер_плана <> :new.Номер_плана
THEN
UPDATE Сотрудники
SET
/* %SetFK(Сотрудники,NULL) */
Сотрудники.Номер_плана = NULL
WHERE
/* %JoinFKPK(Сотрудники,:%Old," = ",",") */
Сотрудники.Номер_плана = :old.Номер_плана;
END IF;
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
END;
/
CREATE TRIGGER tI_Скважины BEFORE INSERT ON Скважины for each row
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
-- INSERT trigger on Скважины
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 24 апреля 2013 г. 3:39:05 */
/* Сотрудники R/4 Скважины on child insert restrict */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="Скважины"
P2C_VERB_PHRASE="R/4", C2P_VERB_PHRASE="R/4",
FK_CONSTRAINT="R_4", FK_COLUMNS="Номер_сотрудника" */
SELECT count(*) INTO NUMROWS
FROM Сотрудники
WHERE
/* %JoinFKPK(:%New,Сотрудники," = "," AND") */
:new.Номер_сотрудника = Сотрудники.Номер_сотрудника;
IF (
/* %NotnullFK(:%New," IS NOT NULL AND") */
NUMROWS = 0
)
THEN
raise_application_error(
-20002,
'Cannot insert Скважины because Сотрудники does not exist.'
);
END IF;
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
END;
/
CREATE TRIGGER tU_Скважины AFTER UPDATE ON Скважины for each row
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
-- UPDATE trigger on Скважины
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 24 апреля 2013 г. 3:39:05 */
/* Сотрудники R/4 Скважины on child update restrict */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="Скважины"
P2C_VERB_PHRASE="R/4", C2P_VERB_PHRASE="R/4",
FK_CONSTRAINT="R_4", FK_COLUMNS="Номер_сотрудника" */
SELECT count(*) INTO NUMROWS
FROM Сотрудники
WHERE
/* %JoinFKPK(:%New,Сотрудники," = "," AND") */
:new.Номер_сотрудника = Сотрудники.Номер_сотрудника;
IF (
/* %NotnullFK(:%New," IS NOT NULL AND") */
NUMROWS = 0
)
THEN
raise_application_error(
-20007,
'Cannot update Скважины because Сотрудники does not exist.'
);
END IF;
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
END;
/
CREATE TRIGGER tI_Сотрудники BEFORE INSERT ON Сотрудники for each row
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
-- INSERT trigger on Сотрудники
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 24 апреля 2013 г. 3:39:05 */
/* Планы R/5 Сотрудники on child insert set null */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="Сотрудники"
P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="R/5",
FK_CONSTRAINT="R_5", FK_COLUMNS="Номер_плана" */
UPDATE Сотрудники
SET
/* %SetFK(Сотрудники,NULL) */
Сотрудники.Номер_плана = NULL
WHERE
NOT EXISTS (
SELECT * FROM Планы
WHERE
/* %JoinFKPK(:%New,Планы," = "," AND") */
:new.Номер_плана = Планы.Номер_плана
)
/* %JoinPKPK(Сотрудники,:%New," = "," AND") */
and Сотрудники.Номер_сотрудника = :new.Номер_сотрудника;
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
END;
/
CREATE TRIGGER tD_Сотрудники AFTER DELETE ON Сотрудники for each row
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
-- DELETE trigger on Сотрудники
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 24 апреля 2013 г. 3:39:05 */
/* Сотрудники R/4 Скважины on parent delete restrict */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="Скважины"
P2C_VERB_PHRASE="R/4", C2P_VERB_PHRASE="R/4",
FK_CONSTRAINT="R_4", FK_COLUMNS="Номер_сотрудника" */
SELECT count(*) INTO NUMROWS
FROM Скважины
WHERE
/* %JoinFKPK(Скважины,:%Old," = "," AND") */
Скважины.Номер_сотрудника = :old.Номер_сотрудника;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20001,
'Cannot delete Сотрудники because Скважины exists.'
);
END IF;
/* ERwin Builtin 24 апреля 2013 г. 3:39:05 */
/* Сотрудники R/6 Отделы on parent delete restrict */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="Отделы"
P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="R/6",
FK_CONSTRAINT="R_6", FK_COLUMNS="Номер_сотрудника" */
SELECT count(*) INTO NUMROWS
FROM Отделы
WHERE
/* %JoinFKPK(Отделы,:%Old," = "," AND") */
Отделы.Номер_сотрудника = :old.Номер_сотрудника;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20001,
'Cannot delete Сотрудники because Отделы exists.'
);
END IF;
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
END;
/
CREATE TRIGGER tU_Сотрудники AFTER UPDATE ON Сотрудники for each row
-- ERwin Builtin 24 апреля 2013 г. 3:39:05
-- UPDATE trigger on Сотрудники
DECLARE NUMROWS INTEGER;
BEGIN
/* ERwin Builtin 24 апреля 2013 г. 3:39:05 */
/* Сотрудники R/4 Скважины on parent update restrict */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="Скважины"
P2C_VERB_PHRASE="R/4", C2P_VERB_PHRASE="R/4",
FK_CONSTRAINT="R_4", FK_COLUMNS="Номер_сотрудника" */
IF
/* %JoinPKPK(:%Old,:%New," <> "," OR ") */
:old.Номер_сотрудника <> :new.Номер_сотрудника
THEN
SELECT count(*) INTO NUMROWS
FROM Скважины
WHERE
/* %JoinFKPK(Скважины,:%Old," = "," AND") */
Скважины.Номер_сотрудника = :old.Номер_сотрудника;
IF (NUMROWS > 0)
THEN
raise_application_error(
-20005,
'Cannot update Сотрудники because Скважины exists.'
);
END IF;
END IF;
/* ERwin Builtin 24 апреля 2013 г. 3:39:05 */
/* Сотрудники R/6 Отделы on parent update restrict */
/* ERWIN_RELATION:CHECKSUM="
CHILD_OWNER="", CHILD_TABLE="Отделы"
P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="R/6",