
ЗКИ 4 ПрПр(2) / Потменский пособие по ПРПР
.pdf
цель и создают некоторый вид выхода.
Активность:
—представлена в модели поименованным процессом, функцией или задачей;
—происходит в течение определенного периода времени;
—имеет распознаваемые результаты.
Все активности в процессе документирования должны быть названы и определены. Имена обычно имеют формат <гла-гол> <существительное>. Определения не должны быть длинными, они должны полностью объяснять, что такое действие в каждой активности, и они должны быть задокументированы во время создания.
Примеры:
1.Обработка кандидатов: эта активность относится к полному циклу обработки кандидатов в избирательной кампании.
2.Подготовка ответов на запросы заявлений: эта активность относится к процессу получения запросов, заявлений и ответов, основываясь на типе запроса: либо отправка заявлений, либо посылка информационных брошюр или планирование интервью.
3.Отправка писем: эта активность включает определение правильной стоимости пересылки (внутренняя, междугородная) и надлежащую маркировку писем почтовым индексом, возвращение в почтовую службу.
Глагол или глагольная фраза имени в активности должна быть глаголом действия. Необходимо учитывать, что нет мгновенных активностей. Между началом и концом активности должно пройти некоторое количество времени. Когда выполняется активность, энергия расходуется. Энергия может быть физическая, механическая или электрическая.
Выходом активности должен быть результат. Все активности должны быть помечены глагольными фразами, а стрелки — существительными. Активности в сфере бизнеса могут иметь в качестве результата производство добавленной стоимости.
Активности могут быть представлены либо в виде дерева узлов активностей (рис. 8.3.1), либо в виде диаграмм декомпозиции.
Рис. 8.2. Дерево узлов активностей
Активности представлены на рис. 3.
Стрелки на квадратах, которые обозначают активности, обозначают:
101

I = Input (вход) — нечто, используемое в процессе;
С = Control (управление), ограничение на активность процесса; О = Output (выход) — нечто, являющееся результатом процесса;
М = Mechanism (механизм), нечто используемое для выполнения процесса.
Пятый тип стрелки: стрелка запроса.
В то время как активности — это всегда глаголы или гла-гольные фразы, стрелки — всегда существительные.
Рис. 8.3. Представление активностей на схеме
Стрелки входа. Вход представляет собой материал или информацию, которая используется или преобразовывается активностью, чтобы произвести выходы. Возможно, что некоторые активности не будут иметь никаких стрелок входа.
Стрелки управления. Управление регулирует, как и когда выполняется активность и какие выходы производятся. Управления бывают в форме правил регулирования стратегий, процедур или стандартов. Каждая активность должна иметь по крайней мере одно управление.
Рис. 8.4. Система учета движения кассет
Стрелки выхода. Выходы — это материал или информация, производимая активностью. Каждая активность должна иметь по крайней мере хотя бы одну стрелку выхода.
102

Стрелки механизма. Механизмы — это ресурсы, которые выполняют активность. Под действием управления активность преобразует входы в выходы, используя механизмы.
Модель начинается с отдельного прямоугольника, обозначающего изучаемую систему.
Рис. 8.5. Контекстная диаграмма для пункта продажи и проката видеокассет
Явные стрелки имеют источником и местом единственную активность.
Разветвление стрелок
Более детальные компоненты могут ответвляться от более общей стрелки.
103

Например, от Income (доход) ответвляется Rental Income (доход от сдачи в аренду) и Sales Income (доход от продажи).
Слияние стрелок
Стрелки могут сливаться.
Например, в нашем примере Damaged Tapes, Defective Tapes, Returns и Retired Tapes сливаются в Lost Tape Inventory.
Рис. 8.6. Дерево узлов «Отправка факсов» Отправка факса — корневая активность.
104

8.4. Структурный язык запросов (SQL)
SQL — обычно произносится «сиквел» — структурный язык запросов (Structured Query Language). Он позволяет создавать реляционные базы данных.
Указанная таблица создается в соответствии с директивой: Примеры базы данных:
Salespeople
SNUM |
SNAME |
CITY |
COMM |
1001 |
Peel |
London |
*12 |
1002 |
Serries |
San Jose |
*13 |
|
|
|
|
1004 |
Motika |
London |
*11 |
1007 |
Ritfkin |
Barcelona |
*15 |
1003 |
Axelrod |
New York |
*10 |
CREATE TABLE SALESPEOPLE
(snum integer not null unique, sname char(10) not null unique, city char(10) check (city in ('London', 'New York', 'San Jose', 'Barcelona')), comm decimal check (comm<1);.
Customers
CNUM |
CNAME |
CITY |
RATIN |
SNUM |
2001 |
Hoffman |
London |
100 |
1001 |
2002 |
Giovanni |
Rome |
200 |
1003 |
2003 |
Liu |
San Jose |
200 |
1002 |
2004 |
Grass |
Berlin |
300 |
1002 |
2006 |
Clemens |
London |
100 |
1001 |
|
|
|
|
|
2008 |
Cisneros |
San Jose |
300 |
1007 |
2007 |
Pereira |
Rome |
100 |
1004 |
CREATE TABLE CUSTOMERS
(cnum integer not null, cname char (10) not null, city char (10), rating integer, snum integer not null, UNIQUE (cnum, snum));.
105

Orders
ONU |
АМТ |
ODAT |
CNUM |
SNUM |
|
|
|
|
|
3001 |
18.69 |
10.03.90 |
2008 |
1007 |
3003 |
717.19 |
10.03.90 |
2001 |
1001 |
|
|
|
|
|
3002 |
1900.10 |
10.03.90 |
2007 |
1004 |
|
|
|
|
|
3005 |
5160.45 |
10.03.90 |
2003 |
1002 |
3006 |
1098.16 |
10.03.90 |
2008 |
1007 |
|
|
|
|
|
3009 |
1713.23 |
10.04.90 |
2002 |
1003 |
3007 |
75.75 |
10.04.90 |
2004 |
1002 |
3008 |
4723.00 |
10.05.90 |
2006 |
100 |
|
|
|
|
|
3010 |
1309.95 |
10.06.90 |
2004 |
1002 |
|
|
|
|
|
3011 |
9891.88 |
10.06.90 |
2006 |
1001 |
CREATE TABLE ORDERS
(onum integer not null unique, amt decimal, odate char (10) not null check (odate LIKE ' '), cnum integer not null, snum integer not null).
В SQL каждому полю присваиваются типы данных:
—INTEGER, запрещается использовать цифры справа от запятой и представлять числа с запятой;
—CHAR — отводится участок поля, достаточный для хранения строки максимальной длины;
—VARCHAR, DATE, MONEY, BINARY — для переменных этих типов память выделяется по мере необходимости.
Команды или сообщения — это инструкции, которые даются базе данных SQL. Команды состоят из одной или более логических частей, называемых предложениями (фразами, clauses). Предложения начинаются с какого-нибудь слова, по которому они обычно и называются, и состоят из ключевых слов и аргументов.
|
Наименования полей |
Поле |
Наименование |
|
|
snum |
Уникальный табельный номер продавца |
sname |
Фамилия продавца |
city |
Город местонахождения продавца |
comm |
Комиссионные продавца в форме с плавающей запятой |
|
|
cnum |
Уникальный номер клиента |
|
|
cname |
Фамилия покупателя |
|
|
rating |
Цифровой код рейтинга доверия к клиенту |
onum |
Уникальный номер заказа |
amt |
Количество |
|
|
odate |
Дата покупки |
Примерами предложений являются:
106
SELECT *
From Salespeople Where city = 'London';.
Аргументы заканчивают предложения или модифицируют его смысл. В приведенных примерах «London» является аргументом предложения WHERE. Объекты — это структуры в базе данных, которые имеют имена и хранятся в памяти. Они включают базовые таблицы, представления и индексы.
Команды языка SQL
Команда SELECT, пример:
SELECT snum, sname, city, comm from Salespeople;
SELECT — оператор выборки, за которым следуют имена выдаваемых столбцов таблицы, после ключевого слова FROM следует имя таблицы
Salespeople;.
Чтобы увидеть все колонки таблицы, можно набрать:
SELECT * FROM Salespeople.
Устранение избыточности в выдаваемых данных достигается использованием ключевого слова DISTINCT. Например, приведенное ниже предложение приводит к выдаче только различающихся значений поля Snum:
SELECT DISTINCT snum From Orders;.
Условие отбора записей создается при помощи ключевого слова WHERE, например:
SELECT sname, city FROM Salespeople WHERE city = 'London';.
Предложение GROUP BY позволяет группировать данные по значению атрибута.
Пример:
SELECT snum, odate, max (amt) FROM Order
GROUP BY snum, odate;
В результате получим:
|
SNUM |
ODATE |
|
|
|
|
|
|
|
|
|
|
1001 |
100 390 |
|
767.19 |
|
|
|
|
|
|
|
|
1001 |
100 590 |
|
4723.00 |
|
|
|
|
|
|
|
|
1001 |
100 690 |
|
9891.88 |
|
|
1002 |
100 390 |
|
5160.45 |
|
|
1002 |
100 490 |
|
75.75 |
|
|
1002 |
100 690 |
|
1309.95 |
|
|
|
|
|
|
|
|
1003 |
100 490 |
|
1713.23 |
|
|
1004 |
100 390 |
|
1900.10 |
|
|
1007 |
100 390 |
|
1098.16 |
|
Предложение HAVING |
определяет |
критерий, согласно которому |
|||
|
|
|
107 |
определяемые группы исключаются из списка выходных данных.
SELECT snum, odate, max (amt) FROM Order
GROUP BY snum, odate HAVING max (amt) > 3000.00;.
Результат представляет собой таблицу следующего вида:
SNUM |
ODATE |
|
1001 |
100 590 |
4723.00 |
1001 |
100 690 |
9 891.88 |
1002 |
100 390 |
5160.45 |
|
|
|
Запрос:
SELECT snum, max (amt) FROM Order
GROUP BY snum
HAVING snum IN (1002, 1007);.
приводит к получению следующих данных:
SNUM |
|
1002 |
5160.45 |
|
|
1007 |
1098.16 |
|
|
Упорядочение выходных полей достигается путем использования ключевого слова ORDER BY в порядке возрастания (DESC) или убывания
(ASC).
SELECT * FROM ORDERS ORDER BY cnum DESC;.
Использование множества таблиц в одном запросе
Одна из наиболее важных черт запросов SQL состоит в их способности определять связи между множеством таблиц и отображать содержащуюся в них информацию в терминах этих связей в рамках единственной команды. Операция такого рода называется соединением (join)- При операции соединения таблицы перечисляются в предложении запроса FROM, имена таблиц разделяются запятыми.
Полное имя столбца состоит из имени таблицы, непосредственно за которой стоит точка, а за ней имя столбца.
Salespeople, snum, Customers.city, Orders.odate.
Предположим, нужно установить связь между продавцами (Salespeople) и покупателями (Customers):
SELECT Customer.cname, Salespeople.sname, Salespeople.city
FROM Salespeople, Customers
WHERE Salespeople.city = Customers.city;.
108
Соединения, использующие предикаты, основанные на равенствах, называются эквисоединениями. Приведенный выше пример относится именно к этой категории, поскольку все условия в предложении WHERE базируются на математических выражениях, использующих символ равенства:
city = 'London'. Salespeople.snum = Orders.snum.
Запрос:
SELECT * FROM Customers WHERE rating >=200;
иллюстрирует использование операторов сравнения в запросах. Запрос:
SELECT * FROM Customers WHERE city = 'San Jose'
OR NOT rating >200;
иллюстрирует использование оператора NOT. В запросе:
SELECT * FROM Customers WHERE NOT city = 'San Jose' OR rating >200;
NOT относится только к city = 'San Jose'.
В запросе:
SELECT * FROM Customers WHERE NOT (city = 'San Jose' OR rating >200);
NOT относится целиком к условию, заключенному в скобки.
Использование значений из заданного списка в условиях поиска показывает следующий запрос:
SELECT *
FROM Salespeople
WHERE snum IN (1001,1007,1004).
Оператор BETWEEN, задающий интервал значений, иллюстрируется следующим запросом:
SELECT *
FROM Salespeople
WHERE (coram BETWEEN. 10, AND. 12) AND NOT Comm IN (.10,. 12);.
Оператор LIKE
LIKE применим только к типу CHAR и VARCHAR, поскольку он используется для поиска подстрок. Другими словами, он осуществляет просмотр строки для выяснения: входит ли данная подстрока в указанное поле.
С этой же целью используются шаблоны — специальные символы, которые могут обозначать все что угодно. Существуют два типа шаблонов, используемых с LIKE:
—символ «подчеркивание» (_) заменяет один любой символ.
109
Например, образцу b_t соответствует bat, bit, but, но не brat;
—символ % заменяет последовательность символов произвольной длины, а также и нулевой.
Например, образцу %p%t соответствует put, posit, opt, но не spite. Можно найти покупателей, фамилии которых начинаются на «G»:
SELECT * FROM Customers WHERE cname LIKE 'G%'.
Суммирование данных с помощью функции агрегирования
Функция агрегирования:
—count — количество строк, выбранных на запрос,
—sum — арифметическая сумма всех выбранных значений,
—avg — среднее значение для выбранных значений,
—max — максимальное из выбранных,
—min — минимальное из выбранных.
Примеры: |
|
SELECT SUM (amt) From Orders; |
SELECT COUNT (DISTINCT snum) |
подсчитывает сумму по столбцу amt |
From Orders; подсчитывает число |
|
строк с отличающимися |
|
значениями столбца snum. |
SELECT AVG (amt) From Orders; |
SELECT MAX (SUM (amt)) From |
подсчитывает среднее значение по |
Orders; подсчитывает |
столбцу amt |
максимальное значение по столбцу |
|
amt |
Использование оператора < для лексиграфического упорядочивания иллюстрируется следующим запросом:
SELECT sname, cname FROM Salespeople, Customers WHERE sname < cname
AND rating < 200;.
В результате получим ответ на запрос в виде следующей таблицы:
sname |
cname |
Peel |
Pereira |
Motika |
Pereira |
Axelrod |
Hoffman |
Axelrod |
Clemens |
|
|
Axelrod |
Pereira |
|
|
Алиасы
Соединение таблицы с ее же копией означает следующее: любую строку таблицы можно комбинировать с ее копией и с любой другой строкой этой же таблицы. Это позволяет комбинировать определенные виды связи между
110