Главная Учебники - Разные Лекции (разные) - часть 35
|
Содержание
Тема 1. Информационные системы.. 4
1.2. Факторы, влияющие на развитие корпоративных информационных систем.. 4
1.2.1. Развитие методик управления предприятием.. 4
1.2.2. Развитие общих возможностей и производительности компьютерных систем.. 5
1.2.3. Развитие подходов к технической и программной реализации элементов информационной системы.. 5
1.3. Основные составляющие корпоративных информационных систем.. 5
1.4. Соотношение между составляющими информационной системы.. 6
1.5. Классификация информационных систем.. 7
1.5.1. Классификация по масштабу. 7
1.5.2. Классификация по сфере применения. 8
1.5.3. Классификация по способу организации. 9
1.6. Области применения и примеры реализации информационных систем.. 13
1.6.2. Управление финансовыми потоками. 14
1.6.3. Управление складом, ассортиментом, закупками. 14
1.6.4. Управление производственным процессом.. 14
1.6.5. Управление маркетингом.. 14
1.6.7. Оперативное управление предприятием.. 15
1.6.8. Предоставление информации о фирме. 15
Тема 2. Системы документооборота. LotusNotes. 16
2.2.3. Представления и папки. 17
2.2.4. Коллективные и локальные базы данных. 17
Тема 3. Проектирование корпоративных информационных систем.. 19
3.1. Общие сведения об управлении проектами. 19
3.1.2. Классификация проектов. 21
3.1.3. Основные фазы проектирования информационной системы.. 21
Тема 5. Реляционная модель данных. 23
Тема 6. Выборка данных из БД.. 27
Тема 7. Выборка данных. Соединение. 30
Тема 8: Выборка. Подзапрос. 32
Тема 9. Обновление строк в таблице. 35
Тема 12. Управление транзакциями. 37
12.1. Три проблемы, связанные с параллельностью транзакций. 38
12.1.1. Проблема утраченного обновления. 38
12.1.2. Проблема зависимости от неподтвержденных обновлений. 39
12.1.3. Проблема противоречивости. 39
12.2. Решение проблем параллелизма. 40
12.2.1. Управление с помощью захватов (блокировок)40
12.2.2. Управление на основе многоверсионных объектов с метками времени. 42
Тема 13. Объектно-ориентированное программирование. 44
13.1. Основы языка ObjectPascal44
13.1.1. Структура программы в ObjectPascal44
13.1.3. Простые и структурированные операторы языка. 48
13.1.4. Процедуры и функции. 49
13.1.5. Модули Object Pascal50
13.2. Объектно-ориентированное программирование. 51
13.2.2. Основные концепции. 52
13.2.3. Поля, свойства и методы.. 54
Тема 14. Среда разработки Delphi55
14.1. Быстрая разработка приложений. 55
14.2.1. Палитра компонентов. 55
14.2.2. Инспектор объектов. 56
14.3. Управление проектами. 56
14.4. Основные компоненты для построения простых приложений. 56
14.4.2. Стандартные элементы интерфейса. 57
Тема 15. Доступ к БД в архитектуре фирмы Borland. 58
15.1. Доступ к данным с использованием BDE.. 58
15.2. Компоненты доступа к данным.. 59
Тема 16. Обработка исключительных ситуаций. 64
Тема 1. Информационные системы
Под информационной системой
обычно понимается прикладная программная подсистема, ориентированная на сбор, хранение, поиск и обработку информации. Большинство информационных систем работает в режиме диалога с пользователем. Типовые программные компоненты
, входящие в состав информационной системы, включают: - диалоговый ввод-вывод; - логику диалога; - прикладную логику обработки данных; - логику управления данными; - операции манипулирования файлами и (или) базами данных. Корпоративной информационной системой
(КИС) мы будем называть совокупность специализированного программного обеспечения и вычислительной аппаратной платформы, на которой установлено и настроено программное обеспечение.
1.2. Факторы, влияющие на развитие корпоративных информационных систем
В последнее время все больше руководителей начинают отчетливо осознавать важность построения на предприятии корпоративной информационной системы как необходимого инструментария для успешного управления бизнесом в современных условиях. Можно выделить три наиболее важных фактора
, существенно влияющих на развитие корпоративных информационных систем: - развитие методик управления предприятием; - развитие общих возможностей и производительности компьютерных систем; - развитие подходов к технической и программной реализации элементов информационной системы. Рассмотрим эти факторы более подробно. Теория управления предприятием представляет собой довольно обширный предмет для изучения и совершенствования. Это обусловлено широким спектром постоянных изменений ситуации на мировом рынке. Все время растущий уровень конкуренции вынуждает руководителей компаний искать новые методы сохранения своего присутствия на рынке и поддержания рентабельности своей деятельности. Современная информационная система должна отвечать всем нововведениям в теории и практике менеджмента. Несомненно, это самый главный фактор
, так как построение продвинутой в техническом отношении системы, которая не отвечает требованиям по функциональности, не имеет смысла. Прогресс в области наращивания мощности и производительности компьютерных систем, развитие сетевых технологий и систем передачи данных, широкие возможности интеграции компьютерной техники с самым разнообразным оборудованием позволяют постоянно наращивать производительность информационных систем и их функциональность. Параллельно с развитием аппаратной части информационных систем на протяжении последних лет происходит постоянный поиск новых, более удобных и универсальных, методов программно-технологической реализации информационных систем. Можно выделить три наиболее существенных новшества
, оказавших колоссальное влияние на развитие информационных систем в последние годы: - новый подход к программированию: с
начала 90-х годов объектно-ориентированное программирование фактически вытеснило модульное; до настоящего времени непрерывно совершенствуются методы построения объектных моделей. Благодаря внедрению объектно-ориентированных технологий программирования существенно сокращаются сроки разработки сложных информационных систем, упрощаются их поддержка и развитие; - благодаря развитию сетевых технологий
локальные информационные системы повсеместно вытесняются клиент-серверными и многоуровневыми реализациями; - развитие сети Интернет
принесло большие возможности работы с удаленными подразделениями, открыло широкие перспективы электронной коммерции, обслуживания покупателей через Интернет и многое другое. Более того, определенные преимущества дает использование Интернет - технологий в интрасе-тях предприятия (так называемые интранет - технологии).
1.3. Основные составляющие корпоративных информационных систем
В составе корпоративных информационных систем можно выделить две относительно независимых составляющих
: - компьютерную инфраструктуру
организации, представляющую собой совокупность сетевой, телекоммуникационной, программной, информационной и организационной инфраструктур. Данная составляющая обычно называется корпоративной сетью.
- взаимосвязанные функциональные подсистемы,
обеспечивающие решение задач организации и достижение ее целей. Первая составляющая
отражает системно-техническую, структурную сторону любой информационной системы. По сути, это основа для интеграции функциональных подсистем, полностью определяющая свойства информационной системы, определяющие ее успешную эксплуатацию. Требования к компьютерной инфраструктуре едины и стандартизованы, а методы ее построения хорошо известны и многократно проверены на практике. Вторая составляющая
корпоративной информационной системы полностью относится к прикладной области и сильно зависит от специфики задач и целей предприятия. Данная составляющая полностью базируется на компьютерной инфраструктуре предприятия и определяет прикладную функциональность информационной системы. Требования к функциональным подсистемам сложны и зачастую противоречивы, так как выдвигаются специалистами из различных прикладных областей. Однако, в конечном счете, именно эта составляющая более важна для функционирования организации, так как для нее, собственно, и строится компьютерная инфраструктура.
1.4. Соотношение между составляющими информационной системы
Взаимосвязи между двумя указанными составляющими информационной системы достаточно сложны. С одной стороны, эти две составляющие в определенном смысле независимы. Например, организация сети и протоколы, используемые для обмена данными между компьютерами, абсолютно не зависят от того, какие методы и программы планируется использовать на предприятии для организации бухгалтерского учета.
С другой стороны, указанные составляющие в определенном смысле все же зависят друг от друга. Функциональные подсистемы в принципе не могут существовать без компьютерной инфраструктуры. В то же время компьютерная инфраструктура сама по себе достаточно ограничена, поскольку не обладает необходимой функциональностью. Например, невозможно эксплуатировать распределенную информационную систему при отсутствии сетевой инфраструктуры. Хотя, имея развитую инфраструктуру, можно предоставить сотрудникам организации ряд полезных общесистемных служб (например, электронную почту и доступ в Интернет), упрощающих работу и делающих ее более эффективной (в частности, за счет использования более развитых средств связи).
Таким образом, разработку информационной системы целесообразно начинать с построения компьютерной инфраструктуры (корпоративной сети) как наиболее важной составляющей, опирающейся на апробированные промышленные технологии и гарантированно реализуемой в разумные сроки в силу высокой степени определенности, как в постановке задачи, так и в предлагаемых решениях. Корпоративная сеть создается на многие годы вперед, капитальные затраты на ее разработку и внедрение настолько велики, что практически исключают возможность полной или частичной переделки существующей сети. Функциональные подсистемы, в отличие от корпоративной сети, изменчивы по своей природе, так как в предметной области деятельности организации постоянно происходят более или менее существенные изменения. Функциональность информационных систем сильно зависит от организационно-управленческой структуры организации, ее функциональности, распределения функций, принятых в организации финансовых технологий и схем, существующей технологии документооборота и множества других факторов. Разработку и внедрение функциональных подсистем можно выполнять постепенно. Например, сначала на наиболее важных и ответственных участках выполнять разработки, обеспечивающие прикладную функциональность системы (внедрять системы финансового учета, управления кадрами и т.п.), а затем распространять прикладные программные системы и на другие, первоначально менее значимые области управления предприятием.
1.5. Классификация информационных систем
Информационные системы классифицируются по разным признакам. Рассмотрим наиболее часто используемые способы классификации. По масштабу информационные системы подразделяются на следующие группы (рис. 1.1): - одиночные; - групповые; - корпоративные.
Рис. 1.1. Деление информационных систем по масштабу Одиночные информационные системы
Одиночные информационные системы
реализуются, как правило, на автономном персональном компьютере (сеть не используется). Такая система может содержать несколько простых приложений, связанных общим информационным фондом, и рассчитана на работу одного пользователя или группы пользователей, разделяющих по времени одно рабочее место. Подобные приложения создаются с помощью так называемых настольных
или локальных
систем управления базами данных (СУБД). Среди локальных СУБД наиболее известными являются Clarion, Clipper, FoxPro, Paradox, dBase и MicrosoftAccess. Групповые информационные системы
Групповые информационные системы
ориентированы на коллективное использование информации членами рабочей группы и чаще всего строятся на базе локальной вычислительной сети. При разработке таких приложений используются серверы баз данных (называемые также SQL-серверами) для рабочих групп. Существует довольно большое количество различных SQL-серверов, как коммерческих, так и свободно распространяемых. Среди них наиболее известны такие серверы баз данных, как Oracle, DB2, MicrosoftSQLServer, InterBase, Sybase, Informix. Корпоративные информационные системы
Корпоративные информационные системы
являются развитием систем для рабочих групп, они ориентированы на крупные компании и могут поддерживать территориально разнесенные узлы или сети. В основном они имеют иерархическую структуру из нескольких уровней. Для таких систем характерна архитектура клиент-сервер со специализацией серверов или же многоуровневая архитектура. При разработке таких систем могут использоваться те же серверы баз данных, что и при разработке групповых информационных систем. Однако в крупных информационных системах наибольшее распространение получили серверы Oracle, DB2 и MicrosoftSQLServer. Для групповых и корпоративных систем существенно повышаются требования к надежности функционирования и сохранности данных. Эти свойства обеспечиваются поддержкой целостности данных, ссылок и транзакций в серверах баз данных. По сфере применения информационные системы обычно подразделяются на четыре группы (рис. 1.2): - системы обработки транзакций; - системы принятия решений; - информационно-справочные системы; - офисные информационные системы.
Рис. 1.2. Деление информационных систем по сфере применения Системы обработки транзакций,
в свою очередь, по оперативности обработки данных, разделяются на пакетные информационные системы и оперативные информационные системы. В информационных системах организационного управления преобладает режим оперативной обработки транзакций - OLTP (OnLineTransactionProcessing), для отражения актуального состояния предметной области и любой момент времени, а пакетная обработка занимает весьма ограниченную часть. Для систем OLTP характерен регулярный (возможно, интенсивный) поток довольно простых транзакций, играющих роль заказов, платежей, запросов и т.п. Важными требованиями для них являются: - высокая производительность обработки транзакций; - гарантированная доставка информации при удаленном доступе к БД по телекоммуникациям. Системы поддержки принятия решений -
DSS (DecisionSupportSysteq) - представляют собой другой тип информационных систем, в которых с помощью довольно сложных запросов производится отбор и анализ данных в различных разрезах: временных, географических и по другим показателям. Обширный класс информационно-справочных систем
основам на гипертекстовых документах и мультимедиа. Наибольшее развитие такие информационные системы получили в сети Интернет. Класс офисных информационных систем
нацелен на перевод бумажных документов в электронный вид, автоматизацию делопроизводства и управление документооборотом. ПРИМЕЧАНИЕ:
Следует отметить, что приводимая классификация по сфере применения в достаточной степени условна. Крупные информационные системы очень часто обладают признаками всех перечисленных выше классов. Кроме того, корпоративные информационные системы масштаба предприятия обычно состоят из ряда подсистем, относящихся к различным сферам применения.
По способу организации групповые и корпоративные информационные системы подразделяются па следующие классы (рис. 1.3): - системы на основе архитектуры файл-сервер; - системы на основе архитектуры клиент-сервер; - системы на основе многоуровневой архитектуры; - системы на основе Интернет/ интранет - технологий.
Рис. 1.3. Деление информационных систем по способу организации В любой информационной системе можно выделить необходимые функциональные компоненты (табл. 1.1), которые помогают понять ограничения различных архитектур информационных систем. Рассмотрим более подробно особенности вариантов построения информационных приложений. Таблица 1.1.
Типовые функциональные компоненты информационной системы PresentationServices (средства представления) PresentationLogic (логика представления) Business or Application Logic (прикладная логика) DataLogic (логика управления данными) DataServices (операции с базой данных) FileServices (файловые операции) Архитектура файл-сервер
Архитектура файл-сервер
не имеет сетевого разделения компонентов диалогаPS и
PL
и использует компьютер для функций отображения, что облегчает построение графического интерфейса. Файл-сервер только извлекает данные из файлов, так что дополнительные пользователи и приложения добавляют лишь незначительную нагрузку на центральный процессор. Каждый новый клиент добавляет вычислительную мощность к сети. Объектами разработки в файл - серверном приложении являются компоненты приложения, определяющие логику диалогаPL,
а также логику обработки BL
и управления данными DL
. Разработанное приложение реализуется либо в виде законченного загрузочного модуля, либо в виде специального кода для интерпретации. Однако такая архитектура имеет существенный недостаток: при выполнении некоторых запросов к базе данных клиенту могут передаваться большие объемы данных, загружая сеть и приводя к непредсказуемости времени реакции. Значительный сетевой трафик особенно сильно сказывается при организации удаленного доступа к базам данных на файл-сервере через низкоскоростные каналы связи. Одним из вариантов устранения данного недостатка является удаленное управление файл - серверным приложением в сети. При этом в локальной сети размещается сервер приложений, совмещенный с телекоммуникационным сервером (обычно называемым сервером доступа), в среде которого выполняются обычные файл - серверные приложения. Особенность состоит в том, что диалоговый ввод-вывод поступает от удаленных клиентов через телекоммуникации. Приложения не должны быть слишком сложными, иначе велика вероятность перегрузки сервера, или же нужна очень мощная платформа для сервера приложений. ПРИМЕЧАНИЕ:
Одним из традиционных средств, на основе которых создаются файл-серверные системы, являются локальные СУБД. Однако такие системы, как правило, не отвечают требованиям обеспечения целостности данных (в частности, они не поддерживают транзакции). Поэтому при их использовании задача обеспечения целостности данных возлагается на программы клиентов, что приводит к усложнению клиентских приложений. Однако эти инструменты привлекают своей простотой, удобством использования и доступностью. Поэтому файл-серверные информационные системы до сих пор представляют интерес для малых рабочих групп и, более того, нередко используются в качестве информационных систем масштаба предприятия.
ПРИМЕР:
Архитектура клиент-сервер
Архитектура клиент-сервер
предназначена для разрешения проблем файл-серверных приложений путем разделения компонентов приложения и размещения их там, где они будут функционировать наиболее эффективно. Особенностью архитектуры клиент-сервер является использование выделенных серверов баз данных, понимающих запросы на языке структурированных запросов SQL (StructuredQueryLanguage) и выполняющих поиск, сортировку и агрегирование информации. Большинство конфигураций клиент-сервер использует двухуровневую модель, в которой клиент обращается к услугам сервера. Предполагается, что диалоговые компоненты PS
и PL
размещаются на клиенте, что позволяет обеспечить графический интерфейс. Компоненты управления данными DS
и FS
размещаются на сервере, а диалог (PS, PL), логика BL
и DL
- на клиенте. Двухуровневое определение архитектуры клиент-сервер использует именно этот вариант: приложение работает у клиента, СУБД - на сервере (рис. 1.4.).
Рис. 1.4. Классический вариант клиент - серверной информационной системы Поскольку эта схема предъявляет наименьшие требования к серверу, она обладает наилучшей масштабируемостью. Однако сложные приложения, вызывающие большое взаимодействие с БД, могут жестко загрузить как клиента, так и сеть. Результаты SQL-запроса должны вернуться клиенту для обработки, потому что там находится логика принятия решения. Такая схема приводит к дополнительному усложнению администрирования приложений, разбросанных по различным клиентским узлам. Для сокращения нагрузки на сеть и упрощения администрирования приложений компонентBL
можно разместить на сервере. При этом вся логика принятия решений оформляется в виде хранимых процедур
и выполняется на сервере БД. Хранимая процедура -
процедура с операторами SQL для доступа к БД, вызываемая по имени с передачей требуемых параметров и выполняемая на сервере БД. Хранимые процедуры могут компилироваться, что повышает скорость их выполнения и сокращает нагрузку на сервер. Хранимые процедуры улучшают целостность приложений и БД, гарантируют актуальность коллективно используемых операций и вычислений. Улучшается сопровождение таких процедур, а также безопасность (нет прямого доступа к данным). ПРИМЕЧАНИЕ:
Следует помнить, что перегрузка хранимых процедур прикладной логикой может перегрузить сервер, что приведет к потере производительности. Эта проблема особенно актуальна при разработке крупных информационных систем, в которых к серверу может одновременно обращаться большое количество клиентов. Поэтому в большинстве случаев следует принимать компромиссные решения: часть логики приложения размещать на стороне сервера, часть - на стороне клиента. Такие клиент-серверные системы называются системами с разделенной логикой. Данная схема при удачном разделении логики позволяет получить более сбалансированную загрузку клиентов и сервера, но при этом затрудняется сопровождение приложений.
Двухуровневые схемы архитектуры клиент-сервер могут привести к некоторым проблемам в сложных информационных приложениях с множеством пользователей и запутанной логикой. Решением этих проблем может стать использование многоуровневой архитектуры. ПРИМЕР:
Многоуровневая архитектура
Многоуровневая архитектура стала развитием архитектуры клиент-сервер и в своей классической форме состоит из трех уровней: - нижний уровень представляет собой приложения клиентов, выделенные для выполнения функций и логики представлений PS
и PL
и имеющие программный интерфейс для вызова приложения на среднем уровне; - средний уровень представляет собой сервер приложений, на котором выполняется прикладная логика BL
и с которого логика обработки данных DL
вызывает операции с базой данных DS
; - верхний уровень представляет собой удаленный специализированный сервер базы данных, выделенный для услуг обработки данных DS
и файловых операцийFS
(без риска использования хранимых процедур). Подобную концепцию обработки данных пропагандируют, в частности, фирмы Oracle, Sun, Borland и др. Трехуровневая архитектура позволяет еще больше сбалансировать нагрузку на разные узлы и сеть, а также способствует специализации инструментов для разработки приложений и устраняет недостатки двухуровневой модели клиент-сервер. Централизация логики приложения упрощает администрирование и сопровождение. Четко разделяются платформы и инструменты для реализации интерфейса и прикладной логики, что позволяет с наибольшей отдачей реализовывать их специалистам узкого профиля. Наконец, изменения прикладной логики не затрагивают интерфейса, и наоборот. Но поскольку границы между компонентамиPL, BL и DL
размыты, прикладная логика может появиться на всех трех уровнях. Сервер приложений с помощью монитора транзакций обеспечивает интерфейс с клиентами и другими серверами, может управлять транзакциями и гарантировать целостность распределенной базы данных. Средства удаленного вызова процедур наиболее соответствуют идее распределенных вычислений: они обеспечивают из любого узла сети вызов прикладной процедуры, расположенной на другом узле, передачу параметров, удаленную обработку и возврат результатов. С ростом систем клиент-сервер необходимость трех уровней становится все более очевидной. Продукты для трехзвенной архитектуры, так называемые мониторы транзакций, являются относительно новыми. Эти инструменты в основном ориентированы на среду UNIX, однако прикладные серверы можно строить на базе MicrosoftWindowsNT с использованием вызова удаленных процедур для организации связи клиентов с сервером приложений. На практике в локальной сети могут использоваться смешанные архитектуры (двухуровневые и трехуровневые) с одним и тем же сервером базы данных. С учетом глобальных связей архитектура может иметь больше трех звеньев. В настоящее время появились новые инструментальные средства для гибкой сегментации приложений клиент-сервер по различным узлам сети. Таким образом, многоуровневая архитектура распределенных приложений позволяет повысить эффективность работы корпоративной информационной системы и оптимизировать распределение ее программно-аппаратных ресурсов. Но пока на российском рынке по-прежнему доминирует архитектура клиент-сервер. Интернет/ интранет - технологии
В развитии технологии Интернет/интранет основной акцент пока что делается на разработке инструментальных программных средств. В то же время наблюдается отсутствие развитых средств разработки приложений, работающих с базами данных. Компромиссным решением для создания удобных и простых в использовании и сопровождении информационных систем, эффективно работающих с базами данных, стало объединение Интернет/ интранет - технологии с многоуровневой архитектурой. При этом структура информационного приложения приобретает следующий вид: браузер - сервер приложений - сервер баз данных - сервер динамических страниц - web-сервер. Благодаря интеграции Интернет/ интранет - технологии и архитектуры клиент-сервер процесс внедрения и сопровождения корпоративной информационной системы существенно упрощается при сохранении достаточно высокой эффективности и простоты совместного использования информации.
1.6. Области применения и примеры реализации информационных систем
В последние несколько лет компьютер стал неотъемлемой частью управленческой системы предприятий. Однако современный подход к управлению предполагает еще и вложение денег в информационные технологии. Причем чем крупнее предприятие, тем больше должны быть подобные вложения. Благодаря стремительному развитию информационных технологий наблюдается расширение области их применения. Если раньше чуть ли не единственной областью, в которой применялись информационные системы, была автоматизация бухгалтерского учета, то сейчас наблюдается внедрение информационных технологий во множество других областей. Эффективное использование корпоративных информационных систем позволяет делать более точные прогнозы и избегать возможных ошибок в управлении. Из любых данных и отчетов о работе предприятия можно извлечь массу полезных сведений. И информационные системы как раз и позволяют извлекать максимум пользы из всей имеющейся в компании информации. Именно этим фактом и объясняются жизнеспособность и бурное развитие информационных технологий - современный бизнес крайне чувствителен к ошибкам в управлении, и для принятия грамотного управленческого решения в условиях неопределенности и риска необходимо постоянно держать под контролем различные аспекты финансово-хозяйственной деятельности предприятия (независимо от профиля его деятельности). Поэтому можно вполне обоснованно утверждать, что в жесткой конкурентной борьбе большие шансы на победу имеет предприятие, использующее в управлении современные информационные технологии. Рассмотрим наиболее важные задачи, решаемые с помощью специальных программных средств. Это классическая область применения информационных технологий и наиболее часто реализуемая на сегодняшний день задача. Такое положение вполне объяснимо. Во-первых, ошибка бухгалтера может стоить очень дорого, поэтому очевидна выгода использования возможностей автоматизации бухгалтерии. Во-вторых, задача бухгалтерского учета довольно легко формализуется, так что разработка систем автоматизации бухгалтерского учета не представляет технически сложной проблемы. ПРИМЕЧАНИЕ:
Тем не менее, разработка систем автоматизации бухгалтерского учета является весьма трудоемкой. Это связано с тем, что к системам бухгалтерского учета предъявляются повышенные требования в отношении надежности и максимальной простоты и удобства в эксплуатации.
Внедрение информационных технологий в управление финансовыми потоками также обусловлено критичностью этой области управления предприятия к ошибкам. Неправильно построив систему расчетов с поставщиками и потребителями, можно спровоцировать кризис наличности даже при налаженной сети закупки, сбыта и хорошем маркетинге. И наоборот, точно просчитанные и жестко контролируемые условия финансовых расчетов могут существенно увеличить оборотные средства фирмы. Далее, можно автоматизировать процесс анализа движения товара, тем самым, отследив и зафиксировав те двадцать процентов ассортимента, которые приносят восемьдесят процентов прибыли. Это же позволит ответить на главный вопрос - как получать максимальную прибыль при постоянной нехватке средств? «Заморозить» оборотные средства в чрезмерном складском запасе - самый простой способ сделать любое предприятие, производственное или торговое, потенциальным инвалидом. Можно просмотреть перспективный товар, вовремя не вложив в него деньги. Управление производственным процессом представляет собой очень трудоемкую задачу. Основными механизмами здесь являются планирование и оптимальное управление производственным процессом. Автоматизированное решение подобной задачи дает возможность грамотно планировать, учитывать затраты, проводить техническую подготовку производства, оперативно управлять процессом выпуска продукции в соответствии с производственной программой и технологией. Очевидно, что чем крупнее производство, тем большее число бизнес - процессов участвует в создании прибыли, а значит, использование информационных систем жизненно необходимо. Управление маркетингом подразумевает сбор и анализ данных о фирмах-конкурентах, их продукции и ценовой политике, а также моделирование параметров внешнего окружения для определения оптимального уровня цен, прогнозирования прибыли и планирования рекламных кампаний. Решение большинства этих задач могут быть формализованы и представлены в виде информационной системы, позволяющей существенно повысить эффективность управления маркетингом. Документооборот является очень важным процессом деятельности любого предприятия. Хорошо отлаженная система учетного документооборота отражает реально происходящую на предприятии текущую производственную деятельность и дает управленцам возможность воздействовать на нее. Поэтому автоматизация документооборота позволяет повысить эффективность управления. Информационная система, решающая задачи оперативного управления предприятием, строится на основе базы данных, в которой фиксируется вся возможная информация о предприятии. Такая информационная система является инструментом для управления бизнесом и обычно называется корпоративной информационной системой. Информационная система оперативного управления включает в себя массу программных решений автоматизации бизнес - процессов, имеющих место на конкретном предприятии. Одно из наиболее важных требований, предъявляемых к таким информационным системам, - гибкость, способность к адаптации и дальнейшему развитию. Активное развитие сети Интернет привело к необходимости создания корпоративных серверов для предоставления различного рода информации о предприятии. Практически каждое уважающее себя предприятие сейчас имеет свой web-сервер. Web-сервер предприятия решает ряд задач, из которых можно выделить две основные: - создание имиджа предприятия; - максимальная разгрузка справочной службы компании путем предоставления потенциальным и уже существующим абонентам возможности получения необходимой информации о фирме, предлагаемых товарах, услугах и ценах. Кроме того, использование web-технологий открывает широкие перспективы для электронной коммерции и обслуживания покупателей через Интернет.
Тема 2. Системы документооборота.
LotusNotes LotusNotes является наиболее успешным программным продуктом корпорации LotusDevelopment и относится к категории продуктов группового программного обеспечения
. Notes представляет собой мощный программный продукт с широким набором средств. Большинство этих средств помогает вводить и использовать информацию совместно с другими пользователями. Notes реализует один из способов совместного использования информации, предлагая вам своего рода информационный архив, который вы можете использовать совместно с другими людьми. Этот архив можно интерпретировать как базу данных или как электронную картотеку, в которой вы можете хранить и организовывать определенным образом почти любой вид информации. Notes предоставляет в ваше распоряжение шесть
групп, в которые вы можете организовывать базы данных. Каждая из этих групп называется страницей рабочего пространства
. Эти страницы используются для того, чтобы упорядочить по категориям базы данных. Все вместе эти шесть страниц составляют ваше рабочее пространство
в Notes. В большинстве офисов электронная почта почти полностью заменила бумажную переписку для внутриофисной связи и даже связи между различными компаниями. Одним из наиболее важных компонентов Notesявляется организация почтовой службы. Ваш компьютер и компьютеры ваших коллег соединяются с сервером Notes при помощи сети. Сервер содержит вашу область памяти и ваш почтовый ящик Базы данных предоставляют вам возможность хранить информацию в общедоступном месте. LotusNotes – это совокупность технологий, предназначенных для эксплуатации и разработки систем коллективного пользования. Можно выбелить пять основных взаимосвязанных компонент LotusNotes: 1. Документоориентированные базы данных; 2. Система реплицирования баз данных; 3. Система защиты информации; 4. Электронная почта; 5. Интегрированная среда разработки баз данных. Документоориентированные базы данных
База данных содержит совокупность документов. Документ представляет собой основной модуль информации в LotusNotes и фактически является электронным эквивалентом документа, отпечатанного на бумаге. Большинство документов Notes содержит текст, графику, рисунки. Система реплицирования баз данных
Notes обладает архитектурой клиент / сервер. Информация оптимальным образом распределена между центральным сервером Notes локальными компьютерами пользователей. Notes предоставляет доступ к информации вне зависимости от местонахождения пользователей. Вы можете находится дома или в командировке, работать с копией базы данных и периодически связываться с сервером Notes для синхронизации своей копии базы данных с центральной базой на сервере. Для этого используется реплицирование – мощный и гибкий механизм обмена информацией между центральной базой на сервере и копией базы пользователя. Интегрированная среда разработки баз данных
Интегрированная среда разработки баз данных позволяет разработчикам создавать необходимые им базы данных. Самой важной компонентой LotusNotes являются базы данных. База данных Notes храниться в файле с расширением *.NSF и содержит следующие элементы: - документы с данными, которые надо хранить в базе данных; - формы – бланки, которые используются при создании и отображении этих документов; - списки документов, хранящихся в базе данных; - информация о правах доступа пользователей к базе данных; - специальные программы, называемые агентами, предназначенные для выполнения определенных действий в базе данных. Основная единица хранения базы данных Notes – документ, которые является эквивалентом бумажного документа. Разработчик базы данных заранее определяет, какой тип документов, должен храниться в базе данных, и проектирует одну или несколько форм для создания этих документов. Форма – это некоторый бланк, который должен заполнить пользователь чтобы поместить документ в базу данных. Каждая база данных имеет свой набор форм, подготовленных разработчиком базы. Например, база данных "Секретарь" может иметь формы: - "Корреспонденция"; - "Звонок"; - "Абонент". Формы содержат некоторые области, помеченные уголками. Эти области формы называются полями. В поля вводятся данные, которые должны храниться в базе. Также в форме присутствует некоторая текстовая информация, которую в режиме заполнения формы изменить нельзя (надписи в форме). Другими важными элементами базы данных Notes являются представления и папки. Представления –
это списки документов, находящихся в базе данных, с краткой информацией о содержимом этих документов. Каждая база данных должная иметь по крайней мере одно представление.
Представление может содержать как список всех документов базы данных, так и список части документов, в зависимости от того, как спроектировано представление. Папки
также являются списками документов, но для них не устанавливается никакого критерия отбора документов. В начальном состоянии папка может быть пуста, но в любое время вы можете добавить в нее требуемый документ или переместить его из одной папки в другую. Один и тот же документ может храниться сразу в нескольких папках.
Система Notes построена в архитектуре клиент / сервер. Сервером
Notes
называют компьютер в локальной сети, на котором установлено соответствующее программное обеспечение, организующее совместную работу и обслуживание рабочих станций Notes (клиентов), присоединенных к этой сети. Это программное обеспечение также называют сервером
Notes.
Сервер обычно выполняет задачу хранения общих баз данных, их защиту, управление доступом к базам и обеспечение работы почты Notes. Рабочая станция
– компьютер, подсоединенный к сети, в которой находится сервер Notes и на котором установлено соответствующее программное обеспечение для рабочих станций Notes, называемое клиентом
Notes.
Файл с базой данных может находиться либо на сервере Notes, либо на рабочей станции. Базы данных, расположенные на жестком диске рабочей станции, называются локальными.
Базы данных, расположенные на сервере Notes, называются базами коллективного пользования
или общими
, с ними одновременно могут работать все пользователи, подсоединенные к сети. Для пользователей, работающих на рабочей станции, в том числе и на удаленной (дома), Notes позволяет создать реплику базы данных, расположенной на сервере.
Тема 3. Проектирование корпоративных информационных систем
Разработка корпоративной информационной системы, как правило, выполняется для вполне определенного предприятия
. Особенности предметной деятельности предприятия, безусловно, будут оказывать влияние на структуру информационной системы. Но в то же время структуры разных предприятий в целом похожи между собой
. Каждая организация, независимо от рода ее деятельности, состоит из ряда подразделений, непосредственно осуществляющих тот или иной вид деятельности компании. И эта ситуация справедлива практически для всех организаций, каким бы видом деятельности они ни занимались. Таким образом, любую организацию можно рассматривать как совокупность взаимодействующих элементов (подразделений), каждый из которых может иметь свою, достаточно сложную, структуру. Взаимосвязи между подразделениями тоже достаточно сложны. В общем случае можно выделить три вида связей между подразделениями
предприятия: - функциональные связи
- каждое подразделение выполняет определенные виды работ в рамках единого бизнес процесса; - информационные связи
- подразделения обмениваются информацией (документами, факсами, письменными и устными распоряжениями и т.п.); - внешние связи
- некоторые подразделения взаимодействуют с внешними системами, причем их взаимодействие также может быть как информационным, так и функциональным. Общность структуры разных предприятий позволяет сформулировать некоторые единые принципы построения корпоративных информационных систем
. В общем случае процесс разработки информационной системы может быть рассмотрен с двух точек зрения
: - по содержанию действий разработчиков
(групп разработчиков). В данном случае рассматривается статический аспект процесса разработки, описываемый в терминах основных потоков работ: исполнители, действия, последовательность действий и т. п.; - по времени, или по стадиям жизненного цикла разрабатываемой системы
. В данном случае рассматривается динамическая организация процесса разработки, описываемая в терминах циклов, стадий, итераций и этапов.
3.1. Общие сведения об управлении проектами
Информационная система предприятия разрабатывается как некоторый проект. Многие особенности управления проектами и фазы разработки проекта (фазы жизненного цикла) являются общими, не зависящими не только от предметной области, но и от характера проекта (неважно, инженерный это проект или экономический). Поэтому имеет смысл вначале рассмотреть ряд общих вопросов управления проектами. Проект - это ограниченное по времени целенаправленное изменение отдельной системы с изначально четко определенными целями, достижение которых определяет завершение проекта, а также с установленными требованиями к срокам, результатам, риску, рамкам расходования средств и ресурсов и к организационной структуре. Можно выделить следующие основные отличительные признаки проекта как объекта управления: - изменчивость - целенаправленный перевод системы из существующего в некоторое желаемое состояние, описываемое в терминах целей проекта; - ограниченность конечной цели; - ограниченность продолжительности; - ограниченность бюджета; - ограниченность требуемых ресурсов; - новизна для предприятия, для которого реализуется проект; - комплексность - наличие большого числа факторов, прямо или косвенно влияющих на прогресс и результаты проекта; - правовое и организационное обеспечение - создание специфической организационной структуры на время реализации проекта. Рассматривая планирование проектов и управление ими, необходимо четко осознавать, что речь идет об управлении неким динамическим объектом
. Поэтому система управления проектом должна быть достаточно гибкой
, чтобы допускать возможность модификации без глобальных изменений в рабочей программе. В системном плане проект может быть представлен «черным ящиком», входом которого являются технические требования и условия финансирования, а итогом работы - достижение требуемого результата (рис. 3.1). Выполнение работ обеспечивается наличием необходимых ресурсов: - материалов; - оборудования; - человеческих ресурсов. Эффективность работ достигается за счет управления процессом реализации проекта, которое обеспечивает распределение ресурсов, координацию выполняемой последовательности работ и компенсацию внутренних и внешних возмущающих воздействий.
Рис. 3.1. Представление проекта в виде "черного ящика" С точки зрения теории систем управления проект как объект управления должен быть наблюдаемым
и управляемым
, то есть выделяются некоторые характеристики, по которым можно постоянно контролировать ход выполнения проекта (свойство наблюдаемости
). Кроме того, необходимы механизмы своевременного воздействия на ход реализации проекта (свойство управляемости
). Свойство управляемости особенно актуально в условиях неопределенности и изменчивости предметной области, которые нередко сопутствуют проектам по разработке информационных систем. Для обоснования целесообразности и осуществимости проекта, анализа хода его реализации, а также для заключительной оценки степени достижения поставленных целей проекта и сравнения фактических результатов с запланированными существует ряд характеристик проекта. К важнейшим из них относятся технико-экономические показатели: - объем работ; - сроки выполнения: - себестоимость; - экономическая эффективность, обеспечиваемая реализацией проекта; - социальная и общественная значимость проекта. Проекты могут сильно отличаться по сфере приложения, составу, предметной области, масштабам, длительности, составу участников, степени сложности, значимости результатов и т.п. Проекты могут быть классифицированы по самым различным признакам. Отметим основные из них. Класс проекта
определяется но составу и структуре проекта. Обычно различают: - монопроект
(отдельный проект, который может быть любого типа, вида и масштаба); - мультипроект
(комплексный проект, состоящий из ряда монопроектов и требующий применения многопроектного управления). Тип проекта
определяется по основным сферам деятельности, в которых осуществляется проект. Можно выделить пять основных типов проекта: - технический; - организационный; - экономический; - социальный; - смешанный. ПРИМЕЧАНИЕ: Разработка информационных систем относится, скорее всего, к техническим проектам, которые имеют следующие особенности: - главная цель проекта четко определена
, но отдельные цели должны уточняться по мере достижения частных результатов; - срок завершения и продолжительность проекта определены заранее
, желательно их точное соблюдение, однако они также могут корректироваться в зависимости от полученных промежуточных результатов и общего прогресса проекта. Масштаб проекта
определяется по размерам бюджета и количеству участников: - мелкие проекты; - малые проекты; - средние проекты; - крупные проекты. Можно также рассматривать масштабы проектов в более конкретной форме - отраслевые, корпоративные, ведомственные проекты, проекты одного предприятия. Каждый проект, независимо от сложности и объема работ, необходимых для его выполнения, проходит в своем развитии определенные состояния: от состояния, когда "проекта еще нет", до состояния, когда "проекта уже нет". Совокупность ступеней развития от возникновения идеи до полного завершения проекта принято разделять на фазы
(стадии, этапы). В определении количества фаз и их содержания имеются некоторые отличия, поскольку эти характеристики во многом зависят от условий осуществления конкретного проекта и опыта основных участников. Тем не менее, логика и основное содержание процесса разработки информационной системы почти во всех случаях являются общими. Можно выделить следующие фазы развития информационной системы: - формирование концепции; - разработка технического задания; - проектирование; - изготовление; - ввод системы в эксплуатацию. Рассмотрим каждую из них более подробно. Концептуальная фаза
Главным содержанием работ на этой фазе является определение проекта, разработка его концепции, включающая: - формирование идеи, постановку целей; - формирование ключевой команды проекта; - изучение мотивации и требовании заказчика и других участников: - сбор исходных данных и анализ существующего состояния; - определение основных требований и ограничений, требуемых материальных, финансовых и трудовых ресурсов; - сравнительную оценку альтернатив; - представление предложений, их экспертизу и утверждение. Разработка технического предложения
Главным содержанием этой фазы является разработка технического предложения и переговоры с заказчиком о заключении контракта. Общее содержание работ этой фазы: - разработка основного содержания проекта, базовой структуры проекта; - разработка и утверждение технического задания; - планирование, декомпозиция базовой структурной модели проекта: - составление сметы и бюджета проекта, определение потребности в ресурсах; - разработка календарных планов и укрупненных графиков работ; - подписание контракта с заказчиком; - ввод в действие средств коммуникации участников проекта и контроля за ходом работ. Проектирование
На этой фазе определяются подсистемы, их взаимосвязи, выбираются наиболее эффективные способы выполнения проекта и использования ресурсов. Характерные работы этой фазы: - выполнение базовых проектных работ; - разработка частных технических задании; - выполнение концептуального проектирования; - составление технических спецификаций и инструкций; - представление проектной разработки, экспертиза и утверждение, Разработка
На этой фазе производятся координация и оперативный контроль работ по проекту, осуществляется изготовление подсистем, их объединение и тестирование. Основное содержание: - выполнение работ по разработке программного обеспечения: - выполнение подготовки к внедрению системы; - контроль и регулирование основных показателей проекта. Ввод системы в эксплуатацию
На этой фазе проводятся испытания, опытная эксплуатация системы в реальных условиях, ведутся переговоры о результатах выполнения проекта и о возможных новых контрактах. Основные виды работ: - комплексные испытания; - подготовка кадров для эксплуатации создаваемой системы; - подготовка рабочей документации, сдача системы заказчику и ввод ее в эксплуатацию; - сопровождение, поддержка, сервисное обслуживание; - оценка результатов проекта и подготовка итоговых документов; - разрешение конфликтных ситуации и закрытие работ по проекту; - накопление опытных данных для последующих проектов, анализ опыта, состояния, определение направлений развития. Начальные фазы проекта имеют решающее влияние на достигаемый результат, так как в них принимаются основные решения, определяющие качество информационной системы. При этом обычно 30 % вклада в конечный результат проекта вносят фазы концепции и предложения, 20 % - фаза проектирования, 20 % - фаза изготовления, 30 % - фаза сдачи объекта и завершения проекта.
Кроме того, на обнаружение ошибок, допущенных на стадии системного проектирования, расходуется примерно и два раза больше времени, чем на последующих фазах, а их исправление обходится в пять раз дороже. Поэтому на начальных стадиях проекта разработку следует выполнять особенно тщательно. Наиболее часто на начальных фазах допускаются следующие ошибки: - ошибки в определении интересов заказчика; - концентрация на маловажных, сторонних интересах; - неправильная интерпретация исходной постановки задачи; - неправильное или недостаточное понимание деталей; - неполнота функциональных спецификаций (системных требований); - ошибки в определении требуемых ресурсов и сроков; - редкая проверка на согласованность этапов и отсутствие контроля со стороны заказчика (нет привлечения заказчика). Ядром любой базы данных является модель данных. Модель данных представляет собой множество структур данных, ограничений целостности и операций манипулирования данными. С помощью модели данных могут быть представлены объекты предметной области и взаимосвязи между ними. Модель данных
– совокупность структур данных и операций их обработки. К числу классических относятся следующие модели данных: 1) Иерархическая модель данных. Появление иерархической модели связано с тем, что в реальном мире очень многие связи соответствуют иерархии, когда один объект выступает как родительский, а с ним может быть связано множество подчиненных объектов. 2) Сетевая модель данных. 3) Реляционная модель данных.
Тема 5. Реляционная модель данных
Реляционная модель ориентирована на организацию данных в виде двумерных таблиц. Каждая реляционная таблица обладает следующими свойствами: - каждый элемент таблицы – один элемент данных; - все столбцы в таблице однородные, т.е. все элементы в столбце имеют одинаковый тип (числовой, символьный и т.д.) и длину; - каждый столбец имеет уникальное имя; - одинаковые строки в таблице отсутствуют; - порядок следования строк и столбцов может быть произвольным. Реляционная база данных – это совокупность таблиц, содержащих информацию, которая должна храниться в базе данных. Набор средств для управления подобным хранилищем называется реляционной системой управления базами данных.
Рис. 5.1. Реляционная база данных, состоящая из 1-ой таблицы Рис. 5.2. Реляционная база данных, состоящая из 3-х таблиц Реляционная БД - это БД в которой: - данные воспринимаются пользователем как таблицы и только как таблицы; - операторы, с помощью которых пользователь манипулирует данными, служат для генерации новых таблиц на основе старых. Например, имеется БД из одной таблицы, в которой 3 столбца и 4 строки: Таблица "Винный погреб" С помощью специальных операторов выделим из этой таблицы: а) подмножество строк SELECT Сорт, Год, Количество_бутылок FROM Винный_погреб WHERE Год = 80; В результате получаем: б) подмножество столбцов SELECT Сорт, Количество_бутылок FROM Винный_погреб В результате получаем: Оба результата являются таблицами, а операторы SELECT - это операторы языка запросов к БД, называемого SQL (Structured Query Language – Язык структурированных запросов). Учебная БД состоит из 3 таблиц. 1) Таблица поставщиков товаров "S". 2) Таблица деталей, которые они поставляют "P". 3) Таблица поставок (какой поставщик, какие детали поставляет) "SP". S - поставщики. Каждый поставщик имеет уникальный номер, фамилию (не обязательно уникальную), капитал и местонахождение. P - детали (их виды). Каждый вид детали имеет уникальный номер, название, цвет, вес и город, где хранится этот вид детали. Каждый вид имеет только один вид и вес и хранится на складе только одного города (упрощение). SP - поставки деталей. Связывает между собой две предыдущие таблицы. Например, первая строка связывает поставщика S1 (Смит) с деталью P1 (гайка), т.е. означает поставку трехсот деталей вида P1 поставщиком S1. Пусть для любого поставщика имеется только одна поставка детали некоторого вида, т.е. пара (nomer_s, nomer_p) является уникальной. На этом примере отметим несколько важных для РБД обстоятельств: 1) Значения данных во всех клетках таблицы являются одиночными, а не множествами, поэтому в таблице SP имеем: S2 P1 S2 P2 а не так: S2 {P1, P2} 2) В каждом столбце хранятся данные только одного типа. 3) БД представляется только в виде явных значений данных. Не существует никаких явных связей и указателей, соединяющих одну таблицу с другой. Связь представляется не с помощью указателя, а значениями клеток в таблицах. 4) Строки в таблицах не требуют никакого упорядочивания. 5) Редко возникают ситуации, когда упорядочение столбцов является существенным. Порядок столбцов в РБД, как правило, не имеет значения. Структура БД определяется оператором CREATE. CREATE TABLE S ( nomer CHAR(5), familia CHAR(20), kapital SMALLINT, gorod CHAR(15) ); CREATE TABLE P ( nomer CHAR(6), nazvanie CHAR(20), zvet CHAR(7), ves SMALLINT, gorod CHAR(15) ); CREATE TABLE SP ( nomer_s CHAR(5), nomer_p CHAR(6), kol INTEGER ); Это операторы создания таблиц языка SQL. Они создают имена таблиц, столбцов и типы данных для этих столбцов. Оператор CREATE, как и все операторы SQL, выполняемый. Как только СУБД его исполнит, появится таблица, которая будет пустой, т.е. будет содержать лишь заголовки столбцов. Для наполнения таблиц есть другие операторы. 1. Символьный - CHAR(<длина>). Длина <= 32767. 2. Целочисленный со знаком а) INTEGER <= | 2 147 483 647 | б) SMALLINT <= | 32767 | 3. Действительное число - FLOAT Содержит 7 значащих десятичных цифр (доверительные). 1.175494351E-38 - самое маленькое 3.402823446E+38 - самое большое 4. Дата – DATE. 1 янв 100 ... 29 фев 32768 Пример по учебной БД: Выбрать номера и капиталы всех поставщиков из Парижа.
Выборка данных делается с помощью оператора SELECT. SELECT nomer, kapital FROM S WHERE gorod='Париж' Результат: Общий, но не полный вид оператора SELECT. SELECT [DISTINCT] <список элементов> FROM <список таблиц> [WHERE <условия>] [GROUPBY <список столбцов>] [ORDERBY <список сортировки>] Серия примеров.
1. Простая выборка. Выбрать номера всех поставляемых деталей. SELECT nomer_p FROM SP Результат: 2. Выборка с исключением дубликатов. SELECT DISTINCT nomer_p FROM SP. Результат: 3. Выборка вычисляемых значений. Выбрать номера и капиталы всех поставщиков в рублях, если в таблице S капиталы заданы в $. SELECT nomer, kapital*30 FROM S Результат: Части SELECT и WHERE могут содержать арифметические выражения и константы. SELECT nomer, 'Капитал в рублях =', kapital*30 FROM S Результат: 4. Выборка всех столбцов. Выбрать все сведения обо всех поставщиках. SELECT * FROM S Результат: копия таблицы S. Этот оператор эквивалентен по своему действию оператору: SELECT nomer, familia, kapital, gorod FROM S. Звездочка ("*") обозначает список всех столбцов в таблице(ах), указанных в части FROM в том порядке, в котором эти столбцы заданы в операторе CREATE TABLE. Звездочка может дополняться именем таблицы. SELECT S.* FROM S 5. Ограниченная выборка. Выбрать номера поставщиков из Парижа, капитал которых больше 20. SELECT nomer FROM S WHERE (kapital>20) AND (gorod='Париж') Результат: Условие части WHERE может включать в себя - операции сравнения: =, <>, >, >=, <=, <; - двоичной алгебры: AND, OR, NOT; - операции принадлежности: IN, NOT IN; - операции похожести: LIKE; - скобки: ( ). 6. Выборка с упорядочением. Выбрать номера и капиталы поставщиков из Парижа в порядке убывания их состояния (размера капитала). SELECT nomer, kapital FROM S WHERE gorod='Париж' ORDER BY kapital DESC ASC - упорядочение по возрастанию значений (по умолчанию). DESC - упорядочение по убыванию значений. Каждый столбец, упомянутый в части ORDER BY должен присутствовать в результирующей таблице, поэтому, например, такой оператор недопустим: SELECT nomer FROM S ORDER BY gorod; Правильно будет: SELECT nomer, gorod FROM S ORDER BY gorod; 7. Выборка с применением принадлежности (IN). Выбрать детали, вес которых равен: 12, 16, 17. SELECT * FROM P WHERE ves IN (12, 16, 17); Результат: 8. Выборка с применением похожести (LIKE). Выбрать все детали, название которых начинается с буквы 'в'. SELECT * FROM P WHERE nazvan LIKE 'в%'; Результат: Общий вид оператора похожести: <имя столбца> LIKE <строковая константа> <имя столбца> типа CHAR. <строковая константа> - это образец, в котором: - "_" - любой одиночный символ, - "%" - любое количество любых символов, в том числе нулевое, остальные символы означают сами себя.
Тема 7. Выборка данных. Соединение
Операция, в которой выборка данных проводится более чем из одной таблицы называется "соединение". Результирующая таблица также называется соединением. Простое эквисоединение
Пример: Выбрать все данные о поставщиках и деталях, размещенных в одном и том же городе, то есть соразмещенных. SELECT S.*, P.* FROM S, P WHERE S.gorod=P.gorod; Очевидно, что нужные данные получаются из двух таблиц S и P - они указаны в части FROM, а условие соединения записывается в части WHERE. Поставщик из Сарова не попал в результирующую таблицу, так как в этом городе не хранятся никакие детали. Аналогично, результат не содержит детали P3, так как ее город - Рим. Некоторые замечания - Оба столбца в условии соединения должны быть либо числовыми, либо строковыми. - Совсем не обязательно, чтобы столбцы в условии соединения назывались одинаково, хотя это бывает часто. - В случае операции равенства ("=") в условии соединения, оно называется эквисоединением; в условии соединения могут быть и другие операции. - Часть WHERE может включать и другие дополнительные условия, помимо условия соединения. - Можно предусмотреть выборку не всех, а некоторых столбцов; кроме того, первоначальный оператор можно еще более упростить: SELECT * FROM S, P WHERE S.gorod=P.gorod; - По определению, эквисоединение должно порождать два полностью одинаковых столбца; если исключить один из этих столбцов, то результат будет называться естественным соединением. - Можно образовать соединение любого числа таблиц. Соединение по условию "больше, чем"
Пример: Выбрать все данные о поставщиках и деталях таких, что город поставщика следует за городом, где хранится деталь в алфавитном порядке. SELECT S.*, P.* FROM S, P WHERE S.gorod > P.gorod; Соединение с дополнительным условием
Пример: Выбрать все комбинации номеров поставщиков, номеров деталей и состояний такие, что поставщик и деталь соразмещены. Опустить поставщиков с капиталом 20. SELECT S.nomer, P.nomer, S.kapital FROM S, P WHERE (S.gorod = P.gorod) AND (kapital <> 20); S.gorod = P.gorod - условие соединения kapital <> 20 - дополнительное условие Результат: Соединение таблицы с ней самой
Пример: Выбрать все пары номеров поставщиков такие, что оба поставщика находятся в одном и том же городе. SELECT PERV.nomer, VTOR.nomer FROM S PERV, S VTOR WHERE PERV.gorod = VTOR.gorod; Таблица S дважды упоминается в части FROM, чтобы различать два ее упоминания вводятся произвольные псевдонимы. Результат: Можно привести этот результат в порядок, если расширить часть WHERE. SELECT PERV.nomer, VTOR.nomer FROM S PERV, S VTOR WHERE (PERV.gorod = VTOR.gorod) AND (PERV.nomer < VTOR.nomer); Последнее условие ("<") даст двоякий эффект: а) оно исключает пары номеров вида (x,x); б) гарантирует, что пары вида (x,y) и (y,x) не будут появляться одновременно. Результат: Подзапрос - это SELECT, который вложен во внешний оператор SELECT. Обычно подзапросы требуются для выборки значений, когда во внешнем запросе применяется операция принадлежности (IN). Простой подзапрос
Пример: Выбрать фамилии поставщиков, которые поставляют деталь P2. SELECT familia FROM S WHERE nomer IN (SELECT nomer_s FROM SP WHERE nomer_p = 'P2') Результат: При обработке полного запроса сначала обрабатывается подзапрос. Этот подзапрос возвращает множество номеров поставщиков поставляющих деталь P2, а именно множество: ('S1', 'S2', 'S3', 'S4'). Поэтому первоначальный запрос эквивалентен следующему простому запросу: SELECT familia FROM S WHERE nomer_s IN ('S1', 'S2', 'S3', 'S4'); Задачу из примера можно решить, применяя соединение. SELECT familia FROM S, SP WHERE (S.nomer = SP.nomer_s) AND (nomer_p = 'P2'); Подзапрос с несколькими уровнями вложенности
Пример: Выбрать фамилии поставщиков, которые поставляют, по крайней мере, одну красную деталь. SELECT familia FROM S WHERE nomer_s IN (SELECT nomer_s FROM SP WHERE nomer_p IN (SELECT nomer FROM P WHERE zvet = 'красный')) Результат: Если использовать соединение трех таблиц, то результат следующий: Результат: Подзапрос с операцией отличной от IN
Пример: Выбрать номера поставщиков, находящихся в том же городе, что и поставщик S1. SELECT nomer FROM S WHERE gorod = (SELECT gorod FROM S WHERE nomer = 'S1'); Результат: Если заранее известно, что подзапрос возвратит в точности 1 значение, то вместо IN можно употребить операцию сравнения (=, <>, >, ...). Однако, если подзапрос вернет более одного значения, то возникнет ошибка. Стандартные функции
На вопросы типа "сколько строк в таблице?" отвечают стандартные функции языка SQL (агрегирующие функции): COUNT - количество строк SUM - сумма значений в столбце AVG - среднее арифметическое по значениям в столбце MAX - наибольшее значение в столбце MIN - наименьшее значение в столбце SUM и AVG применяются только к столбцам числового типа. После имени функции, в скобках, нужно записывать имя столбца, а перед ним может присутствовать слово DISTINCT. Оно указывает, что дубликаты следует исключить перед тем как будет применяться функция. Специальный вид функции COUNT(*) предназначен для подсчета всех строк в таблице, без исключения дубликатов. Функция в части SELECT
Пример: Подсчитать общее количество поставщиков. SELECT COUNT(*) FROM S Результат: Функция в части SELECT с исключением дубликатов
Пример: Подсчитать общее количество поставщиков, поставляющих детали. SELECT COUNT(DISTINCT nomer_s) FROM SP; Результат: Функция в части SELECT с условием в части WHERE Пример: Подсчитать общее количество поставляемых деталей P2 (сколько деталей по всем поставкам?). SELECT SUM (kol) FROM SP WHERE nomer_p = 'P2'; Результат: Группирование записей
Пример: Требуется подсчитать общее количество поставляемых деталей по каждому виду деталей. То есть, по каждому виду выдать номер детали и суммарный объем поставок. SELECT nomer_p, SUM(kol) FROM SP GROUP BY nomer_p; Результат: Как исполняется такой оператор? 1) Часть GROUP BY перекомпоновывает таблицу, указанную в части FROM в группы, таким образом, чтобы в каждой группе все строки имели одно и то же значение в столбце, указанном в GROUP BY. 2) К каждой группе перекомпонованной таблицы (а не к каждой исходной строке) применяется часть SELECT. Каждое выражение в части SELECT должно принимать единственное значение для группы. То есть, оно может быть либо самим столбцом в части GROUP BY, либо арифметическим выражением, содержащим такой столбец, либо константой, либо функцией (например, SUM), которая сводит разные значения к одному.
Тема 9. Обновление строк в таблице
Оператор обновления (модификации) строк в одной таблице имеет вид: UPDATE <имя таблицы> SET <имя столбца> = <выражение>{, <имя столбца> = <выражение>} [ WHERE <условие> ]; Все строки в таблице, которые удовлетворяют <условию>, изменяются в соответствии с присваиваниями в части SET. Примеры: Обновление единственной строки
Изменить цвет детали P2 на желтый и увеличить ее вес на 5. UPDATE P SET zvet='желтый', ves=ves+5 WHERE nomer='P2'; Обновление
нескольких
строк
UPDATE S SET kapital=kapital*2 WHERE gorod='Лондон' Обновление нескольких таблиц
Изменить номер поставщика с S2 на S9. UPDATE S SET nomer='S9' WHERE nomer='S2'; UPDATE SP SET nomer='S9' WHERE nomer='S2'; В одном операторе невозможно обновить две таблицы! После первого оператора БД стала противоречивой. Теперь в ней есть поставки у которой нет поставщика. В этом противоречивом состоянии БД будет находиться до завершения второго оператора. Изменения порядка операторов принципиально ничего не меняет. Поэтому, с точки зрения целостности БД важно обеспечить завершение обоих операторов, а не одного из них (см. дальше). DELETE FROM <имя таблицы> [ WHERE <условие> ]; Этот оператор удаляет все строки из таблицы, которые удовлетворяют <условию>. Две формы оператора INSERT а) INSERT INTO <имя таблицы> [ ( <имя столбца>{, <имя столбца>} ) ] VALUES ( <константа>{, <константа>} ); б) INSERT INTO <имя таблицы> [ ( <имя столбца>{, <имя столбца>} ) ] <подзапрос>; В форме (а) в таблицу вставляется строка из констант, перечисленных в части VALUES. Причем, i-ая константа соответствует i-му столбцу в части INTO. В форме (б) сначала вычисляется <подзапрос> (результат которого - таблица) и результат подзапроса вставляется в таблицу <имя таблицы>. Пример: Добавить в таблицу P деталь P7: город Москва, вес 2, название и цвет пока не известны. INSERT INTO P (nomer, gorod, ves) VALUES ('P7', 'Москва', 2); В таблице P появляется новая строка. Порядок столбцов в части INTO не обязательно должен совпадать с порядком столбцов при создании таблицы. Вставка единственной строки с опущенными именами столбцов
Добавить в таблицу P деталь P8: название "звездочка", цвет розовый, вес 14, город Берлин. INSERT INTO P VALUES ('P8', 'звездочка', 'розовый', 14, 'Берлин'); Если имена столбцов не заданы, то предполагается перечисление всех столбцов таблицы в порядке их перечисления в операторе CREATE. Вставка множества строк
Для каждой поставляемой детали получить ее номер и объем ее поставки, сохранить результат в отдельной таблице. CREATE TABLE VREMEN (nomer CHAR(6), sum_postavki INTEGER) INSERT INTO VREMEN SELECT nomer_p, SUM(kol) FROM SPGROUP BY nomer_p
Тема 12. Управление транзакциями
Вернемся к примеру в котором заменяется номер поставщика S2 на S9. Обобщим этот пример. Допустим, есть некий язык программирования, внутри которого можно выполнять операторы SQL. Напишем процедуру, которая будет менять номер поставщика с SX на SY. Trans: proc(SX, SY); ON ERROR: begin ROLLBACK; RETURN end; EXEC UPDATE S SET nomer=SY WHERE nomer=SX; EXEC UPDATE SP SET nomer_s=SY WHERE nomer_s=SX; EXEC COMMIT; end; Эта процедура воспринимается ее пользователем как неделимая (атомарная операция). На самом деле эта процедура состоит из 2-х операторов SQL. И между этими операторами нарушается согласованность БД (есть поставки у которых нет поставщика). Чтобы сохранить согласованность БД нужно уметь выполнять последовательность операторов SQL как неделимую операцию. Транзакция
- это последовательность операторов SQL, которая либо выполняется целиком, либо не выполняется совсем. Предполагается при этом, что транзакция переведет некоторое согласованное состояние БД в другое согласованное состояние, но не гарантирует сохранение согласованности во все промежуточные моменты времени. - Последовательность может состоять из одного оператора SQL. - Транзакцию создает программист. СУБД гарантирует, что если транзакция проводила некоторые изменения в БД (UPDATE, INSERT, DELETE) и затем, по какой-либо причине, произошла ошибка до нормального завершения транзакции, то эти изменения будут отменены. Таким образом, транзакция либо полностью исполняется, либо полностью отменяется, как будто бы она не исполнялась вообще. Вопрос: Как СУБД узнает когда начинается и когда заканчивается транзакция?
Транзакция заканчивается, чаще всего, как и в этом примере, с помощью операторов COMMIT (принять, подтвердить) и ROLLBACK (отменить, откатиться). Оператор COMMIT сообщает СУБД об успешном завершении транзакции, о том, что БД вновь должна находиться в согласованном состоянии и все изменения в БД следует сделать постоянными. Напротив, оператор ROLLBACK сообщает СУБД о неудачном завершении транзакции, о том, что БД находится, возможно, в противоречивом состоянии и что все сделанные внутри транзакции изменения (UPDATE, INSERT, DELETE) следует отменить. Даже если во время исполнения транзакции сломается компьютер, то тот оператор ROLLBACK, который должен был выполняться по ошибке, будет все равно выполнен при рестарте СУБД. Как отменяются изменения?
С помощью журнала, в котором записываются все операции изменения БД. В частности, значения таблиц до и после изменения. Транзакция начинается: - первым оператором, после соединения с БД; - первым оператором, после конца предыдущей транзакции. Транзакция заканчивается: - оператором COMMIT; - оператором ROLLBACK; - отсоединением от БД, причем предполагается ROLLBACK.
12.1. Три проблемы, связанные с параллельностью транзакций
Всякая СУБД, которая позволяет любому количеству пользователей одновременно пользоваться данными в одной и той же БД, должна иметь механизм, обеспечивающий независимость пользователей друг от друга, по крайней мере, кажущуюся. Такой механизм нужен чтобы избежать трех случаев ошибочного исполнения транзакции
, когда транзакция правильная сама по себе, может приводить к ошибочному результату из-за вмешательства со стороны некоторой другой транзакции, тоже правильной. Таким образом, будем обсуждать чередование операторов SQL, по крайней мере, в двух параллельных и правильных транзакциях, которое может привести к ошибочному в целом результату. -------------------------+-----------------------+----------------- Время TA ! Значения ! TB -------------------------+-----------------------+----------------- t0 start ! ! t1 Сч1=SELECT R ! Сч1(TA)=50, R=50 ! t2 ! ! start t3 ! Сч1(TB)=50, R=50 ! Сч1=SELECT R t4 UPDATE R=Сч1+15 ! R=65 ! t5 COMMIT ! ! t6 ! R=40 ! UPDATE R=Сч1-10 t7 ! ! COMMIT -------------------------+-----------------------+----------------- TA выбирает строку R в t1, TB - в t3. TA обновляет R в t4, исходя из значений "увиденных" в t1, а TB обновляет эту же строку в t6, исходя из значений "увиденных" в t3. Очевидно, что в итоге в R остается лишь значение записанное TB, которая перекрывает значение записанное TA не глядя на него. Возникает в том случае, если одной транзакции позволяется выбрать данные из строки, которая уже была обновлена другой транзакцией, но не успела подтвердить обновление. ------------------------+-----------------------+----------------- Время TA ! Значения ! TB ------------------------+-----------------------+----------------- t0 ! R=50 ! start t1 ! R=20 ! UPDATE R=20 t2 start ! ! t3 Сч1=SELECT R ! Сч1(TA)=20 ! t4 ! R=50, Сч1(TA)=20 ! ROLLBACK ------------------------+------------------------+----------------- TA "видит" неподтвержденное изменение, которое позже отменяется TB. Следовательно, TA работает при ошибочном предположении, что R имеет значение 20, а на самом деле оно 50. -------------------------+-----------------------+----------------- Время TA ! Значения ! TB -------------------------+-----------------------+----------------- t0 start ! R1=40, R2=50, R3=30 ! t1 Сч1=SELECT R1 ! Сч1(TA)=40,Сум(TA)=40 ! t2 Сч2=SELECT R2 ! Сч2(TA)=50,Сум(TA)=90 ! t3 ! ! start t4 ! Сч3(TB)=30 ! Сч3=SELECT R3 t5 ! R3=20 ! UPDATE R3=Сч3-10 t6 ! Сч1(TB)=40 ! Сч1=SELECT R1 t7 ! R1=50 ! UPDATE R1=Сч1+10 t8 ! ! COMMIT t9 Сч3=SELECT R3 ! Сч3(TA)=20,Сум(TA)=110! ------------------------+------------------------+----------------- Сум(TA) должна = 120 Здесь TA суммирует остатки на счетах, а TB переносит сумму 10 со счета 3 на счет 1. В результате параллельного выполнения TA получает неверную сумму. Различия между этой и предыдущей проблемой в том, что здесь TA не зависит от неподтвержденных изменений, поскольку TB сделало все изменения постоянными еще до того, как TA "увидела" счет 3. Все три случая ошибочного выполнения транзакций возникают только тогда, когда хотя бы одна транзакция изменяет данные в БД. Конфликтов не бывает, когда все транзакции только выбирают (читают) данные.
12.2. Решение проблем параллелизма
Существует два основных подхода к управлению параллельными транзакциями: - основанный на захвате объекта БД (блокировке); - основанный на метках времени (многоверсионных объектах). Главная идея захвата проста: если для транзакции нужно, чтобы некоторый объект БД (обычно строка таблицы) не изменялся до ее завершения, то она устанавливает захват этого объекта. Захват заключается в том, что объект изолируется от других транзакций. Различают два вида режимов захвата: 1) совместный режим (режим С) и 2) монопольный режим (режим М). Ради упрощения будем обсуждать захваты только одной строки в таблице. Алгоритм захватов
1. Если TA устанавливает М-захват строки R, то запрос из TB на любого типа захват строки R приведет к тому, что TB перейдет в состояние блокировки. TB будет находиться в этом состоянии, пока TA не снимет захват. 2. Если TA устанавливает С-захват на строку R, то: а) запрос из TB на М-захват строки R заставит TB перейти в состояние блокировки и TB будет заблокирована, пока TA не снимет свой захват. б) запрос из TB на С-захват строки R будет удовлетворен, то есть TB также будет удерживать С-захват строки R. Обсуждение п.2: - в отсутствии захватов строки R будет удовлетворен запрос на захват любого вида этой строки; - во время М-захвата строки R в запросе любого вида на захват R будет отказано; - во время С-захвата строки R будут удовлетворяться только С-запросы. 3. Запросы транзакций на захват строки всегда являются неявными. Когда транзакция исполняет оператор SELECT она автоматически устанавливает С-захват. Когда транзакция изменяет, добавляет, удаляет строку, она автоматически устанавливает М-захват. Если же транзакция получила строку R в С-захват, а потом стала изменять строку R, то транзакция автоматически повышает вид захвата с С на М. Решение трех проблем с помощью механизма блокировок в СУБД
SQL
Anywhere
1*) Решение первой проблемы (утраченное обновление)
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||