Рефераты

Разработка программного обеспечения для Отделения Реанимации и Интенсивной Терапии новорожденных МГБ N1 г. Сургута

Разработка программного обеспечения для Отделения Реанимации и Интенсивной Терапии новорожденных МГБ N1 г. Сургута

Министерство общего и профессионального образования РФ

Сургутский государственный университет

Факультет информационных технологий

Кафедра информатики и вычислительной техники

Дипломная работа

На тему

«Разработка программного обеспечения для Отделения Реанимации и Интенсивной

Терапии Новорожденных при Муниципальной Городской Больнице № 1 города

Сургута»

Выполнил: Юрий В. Гудонис

Руководитель: Челноков С. Б.

Рецензент: Шепелев А.С.

Сургут 1998г.

Содержание

Введение |4 | |

|Постановка задачи |5 |

Основы современных баз данных

| |6 |

1. Базы данных и файловые системы

| |6 |

1.1. Файловые системы

| |8 |

1. Структуры файлов

| |9 |

2. Именование файлов

| |11 |

3. Защита файлов

| |13 |

4. Режим многопользовательского доступа

| |14 |

1. Области применения файлов

| |15 |

2. Потребности информационных систем

| |16 |

2. Функции СУБД. Типовая организация СУБД. Примеры

| |21 |

1. Основные функции СУБД

| |22 |

1. Непосредственное управление данными во внешней памяти

| |22 |

2. Управление буферами оперативной памяти

| |22 |

3. Управление транзакциями

| |23 |

4. Журнализация

| |24 |

5. Поддержка языков БД

| |27 |

2. Типовая организация современной СУБД

| |29 |

3. Ранние подходы к организации БД. Системы, основанные на инвертированных

списках, иерархические и сетевые СУБД. Примеры. Сильные места и

недостатки ранних систем

| |31 |

1. Основные особенности систем, основанных на инвертированных списках

| |33 |

1. Структуры данных

| |33 |

2. Манипулирование данными

| |34 |

3. Ограничения целостности

| |35 |

2. Иерархические системы

| |35 |

1. Иерархические структуры данных

| |35 |

2. Манипулирование данными

| |37 |

3. Ограничения целостности

| |37 |

|3.3. Сетевые системы |38 |

|3.3.1. Сетевые структуры данных |38 |

3. Манипулирование данными

| |40 |

4. Ограничения целостности

| |41 |

4. Достоинства и недостатки

| |41 |

5. Теоретические основы

| |41 |

6. Общие понятия реляционного подхода к организации БД. Основные концепции

и термины

| |43 |

1. Базовые понятия реляционных баз данных

| |44 |

1. Тип данных

| |44 |

2. Домен

| |45 |

3. Схема отношения, схема базы данных

| |45 |

4. Кортеж, отношение

| |46 |

7. Методы использованные для решения задачи.

| |48 |

8. Открытая архитектура Delphi

| |48 |

9. Полученные результаты

| |56 |

|Модуль «Администратор программы «ОРИТН в порядке»» |58 |

|Заключение |62 |

10. Литература

| |63 |

|12. Приложение 1 «Задание на дипломное проектирование» |64 |

|13. Приложение 2 Исходные тексты программы Модуль «Администратор |65 |

|программы «ОРИТН в порядке»» | |

Введение

Отделение Реанимации Новорожденных уже в течение семи лет занимается

спасением жизней еще не познавших самой жизни младенцев. Демографическая

ситуация нашего региона достаточно благополучная. Рождаемость год от года

не только не падает но еще и растет, но тяжелые условия крайнего севера и

постоянно ухудшающиеся условия окружающей среды вносят свои коррективы в

полноценность подростающего поколения. За период с 1991 года количество

поступающих в отделение ежегодно детей возросло почти в два раза,

соответственно возрос и поток информации необходимой для создания и анализа

статистических отчетов. До последнего времени ввод и анализ данных

производился практически вручную, что называется на пальцах. Не

существовало единого стандарта на отчеты, что затрудняло анализ данных

необходимых для принятия правильных решений в выборе методов лечения.

Сургутское отделение ОРИТН на сегодняшний день является лучшим по России,

что позволило принять его “столицей” в данной области медицины. По этому на

отделение возложена обязанность по стандартизации исходных данных и

отчетов. С 1996 года в Сургуте функционирует окружной учебно-

консультативный центр на базе отделения ОРИТН МГБ №1. Основной задачей

центра является повышение квалификации врачей и консультативно-методическая

помощь. Создание на основе сети Интернет статистического сервера в городе

Сургуте на который будет стекаться информация со всего региона, позволит

центру практически молниеносно разрешить любую проблему, с которой к нему

обращаются врачи всего региона. За основу данной системы будет взята

модель АСУ построенная нами в ходе дипломного проектирования.

Постановка задачи.

Разработка модели АСУ ОРИТН. Реализация модели АСУ ОРИТН на языке Delphi

корпорации Inprise. Внедрение программного продукта.

Основы современных баз данных

Базы данных и файловые системы

Рассмотрим общий смысл понятий БД и СУБД. Начнем с того, что с самого

начала развития вычислительной техники образовались два основных

направления ее использования. Первое направление - применение

вычислительной техники для выполнения численных расчетов, которые слишком

долго или вообще невозможно производить вручную. Становление этого

направления способствовало интенсификации методов численного решения

сложных математических задач, развитию класса языков программирования,

ориентированных на удобную запись численных алгоритмов, становлению

обратной связи с разработчиками новых архитектур ЭВМ.

Второе направление, которое непосредственно касается темы нашего дипломного

проекта, это использование средств вычислительной техники в автоматических

или автоматизированных информационных системах. В самом широком смысле

информационная система представляет собой программный комплекс, функции

которого состоят в поддержке надежного хранения информации в памяти

компьютера, выполнении специфических для данного приложения преобразований

информации и/или вычислений, предоставлении пользователям удобного и легко

осваиваемого интерфейса. Обычно объемы информации, с которыми приходится

иметь дело таким системам, достаточно велики, а сама информация имеет

достаточно сложную структуру. Классическими примерами информационных систем

являются банковские системы, системы резервирования авиационных или

железнодорожных билетов, мест в гостиницах и т.д. Не является исключением

и разработанная нами система «ОРИТН».

На самом деле, второе направление возникло несколько позже первого. Это

связано с тем, что на заре вычислительной техники компьютеры обладали

ограниченными возможностями в части памяти. Понятно, что можно говорить о

надежном и долговременном хранении информации только при наличии

запоминающих устройств, сохраняющих информацию после выключения

электрического питания. Оперативная память этим свойством обычно не

обладает. В начале использовались два вида устройств внешней памяти:

магнитные ленты и барабаны. При этом емкость магнитных лент была достаточно

велика, но по своей физической природе они обеспечивали последовательный

доступ к данным. Магнитные же барабаны (они больше всего похожи на

современные магнитные диски с фиксированными головками) давали возможность

произвольного доступа к данными, но были ограниченного размера.

Легко видеть, что указанные ограничения не очень существенны для чисто

численных расчетов. Даже если программа должна обработать (или произвести)

большой объем информации, при программировании можно продумать расположение

этой информации во внешней памяти, чтобы программа работала как можно

быстрее.

С другой стороны, для информационных систем, в которых потребность в

текущих данных определяется пользователем, наличие только магнитных лент и

барабанов неудовлетворительно. Представьте себе покупателя билета, который

стоя у кассы должен дождаться полной перемотки магнитной ленты. Одним из

естественных требований к таким системам является средняя быстрота

выполнения операций.

Как кажется, именно требования к вычислительной технике со стороны не

численных приложений вызвали появление съемных магнитных дисков с

подвижными головками, что явилось революцией в истории вычислительной

техники. Эти устройства внешней памяти обладали существенно большей

емкостью, чем магнитные барабаны, обеспечивали удовлетворительную скорость

доступа к данным в режиме произвольной выборки, а возможность смены

дискового пакета на устройстве позволяла иметь практически неограниченный

архив данных.

С появлением магнитных дисков началась история систем управления данными во

внешней памяти. До этого каждая прикладная программа, которой требовалось

хранить данные во внешней памяти, сама определяла расположение каждой

порции данных на магнитной ленте или барабане и выполняла обмены между

оперативной и внешней памятью с помощью программно-аппаратных средств

низкого уровня (машинных команд или вызовов соответствующих программ

операционной системы). Такой режим работы не позволяет или очень затрудняет

поддержание на одном внешнем носителе нескольких архивов долговременно

хранимой информации. Кроме того, каждой прикладной программе приходилось

решать проблемы именования частей данных и структуризации данных во внешней

памяти.

1.1. Файловые системы

Историческим шагом явился переход к использованию централизованных систем

управления файлами. С точки зрения прикладной программы файл - это

именованная область внешней памяти, в которую можно записывать и из которой

можно считывать данные. Правила именования файлов, способ доступа к данным,

хранящимся в файле, и структура этих данных зависят от конкретной системы

управления файлами и, возможно, от типа файла. Система управления файлами

берет на себя распределение внешней памяти, отображение имен файлов в

соответствующие адреса во внешней памяти и обеспечение доступа к данным.

Первая развитая файловая система была разработана фирмой IBM для ее серии

360. К настоящему времени она очень устарела, и мы не будем рассматривать

ее подробно. Заметим лишь, что в этой системе поддерживались как чисто

последовательные, так и индексно-последовательные файлы, а реализация во

многом опиралась на возможности только появившихся к этому времени

контроллеров управления дисковыми устройствами. Если учесть к тому же, что

понятие файла в OS/360 было выбрано как основное абстрактное понятие,

которому соответствовал любой внешний объект, включая внешние устройства,

то работать с файлами на уровне пользователя было очень неудобно.

Требовался целый ряд громоздких и перегруженных деталями конструкций. Все

это хорошо знакомо программистам среднего и старшего поколения, которые

прошли через использование отечественных аналогов компьютеров IBM.

1.1.1. Структуры файлов

Дальше мы будем говорить о более современных организациях файловых систем.

Начнем со структур файлов. Прежде всего, практически во всех современных

компьютерах основными устройствами внешней памяти являются магнитные диски

с подвижными головками, и именно они служат для хранения файлов. Такие

магнитные диски представляют собой пакеты магнитных пластин (поверхностей),

между которыми на одном рычаге двигается пакет магнитных головок. Шаг

движения пакета головок является дискретным, и каждому положению пакета

головок логически соответствует цилиндр магнитного диска. На каждой

поверхности цилиндр "высекает" дорожку, так что каждая поверхность содержит

число дорожек, равное числу цилиндров. При разметке магнитного диска

(специальном действии, предшествующем использованию диска) каждая дорожка

размечается на одно и то же количество блоков таким образом, что в каждый

блок можно записать по максимуму одно и то же число байтов. Таким образом,

для произведения обмена с магнитным диском на уровне аппаратуры нужно

указать номер цилиндра, номер поверхности, номер блока на соответствующей

дорожке и число байтов, которое нужно записать или прочитать от начала

этого блока.

Однако эта возможность обмениваться с магнитными дисками порциями меньше

объема блока в настоящее время не используется в файловых системах. Это

связано с двумя обстоятельствами. Во-первых, при выполнении обмена с диском

аппаратура выполняет три основных действия: подвод головок к нужному

цилиндру, поиск на дорожке нужного блока и собственно обмен с этим блоком.

Из всех этих действий в среднем наибольшее время занимает первое. Поэтому

существенный выигрыш в суммарном времени обмена за счет считывания или

записывания только части блока получить практически невозможно. Во-вторых,

для того, чтобы работать с частями блоков, файловая система должна

обеспечить соответствующего размера буфера оперативной памяти, что

существенно усложняет распределение оперативной памяти.

Поэтому во всех файловых системах явно или неявно выделяется некоторый

базовый уровень, обеспечивающий работу с файлами, представляющими набор

прямо адресуемых в адресном пространстве файла блоков. Размер этих

логических блоков файла совпадает или кратен размеру физического блока

диска и обычно выбирается равным размеру страницы виртуальной памяти,

поддерживаемой аппаратурой компьютера совместно с операционной системой.

В некоторых файловых системах базовый уровень доступен пользователю, но

более часто прикрывается некоторым более высоким уровнем, стандартным для

пользователей. Распространены два основных подхода. При первом подходе,

свойственном, например, файловым системам операционных систем фирмы DEC RSX

и VMS, пользователи представляют файл как последовательность записей.

Каждая запись - это последовательность байтов постоянного или переменного

размера. Записи можно читать или записывать последовательно или

позиционировать файл на запись с указанным номером. Некоторые файловые

системы позволяют структурировать записи на поля и объявлять некоторые поля

ключами записи. В таких файловых системах можно потребовать выборку записи

из файла по ее заданному ключу. Естественно, что в этом случае файловая

система поддерживает в том же (или другом, служебном) базовом файле

дополнительные, невидимые пользователю, служебные структуры данных.

Распространенные способы организации ключевых файлов основываются на

технике кэширования и B-деревьев. Существуют и много ключевые способы

организации файлов.

Второй подход, ставший распространенным вместе с операционной системой

UNIX, состоит в том, что любой файл представляется как последовательность

байтов. Из файла можно прочитать указанное число байтов либо начиная с его

начала, либо предварительно произведя его позиционирование на байт с

указанным номером. Аналогично, можно записать указанное число байтов в

конец файла, либо предварительно произведя позиционирование файла. Заметим,

что тем не менее скрытым от пользователя, но существующим во всех

разновидностях файловых систем ОС UNIX, является базовое блочное

представление файла.

Конечно, для обоих подходов можно обеспечить набор преобразующих функций,

приводящих представление файла к некоторому другому виду. Примером тому

служит поддержание стандартной файловой среды системы программирования на

языке Си в среде операционных систем фирмы DEC.

1.1.2. Именование файлов

Остановимся коротко на способах именования файлов. Все современные файловые

системы поддерживают многоуровневое именование файлов за счет поддержания

во внешней памяти дополнительных файлов со специальной структурой -

каталогов. Каждый каталог содержит имена каталогов и/или файлов,

содержащихся в данном каталоге. Таким образом, полное имя файла состоит из

списка имен каталогов плюс имя файла в каталоге, непосредственно содержащем

данный файл. Разница между способами именования файлов в разных файловых

системах состоит в том, с чего начинается эта цепочка имен.

В этом отношении имеются два крайних варианта. Во многих системах

управления файлами требуется, чтобы каждый архив файлов (полное дерево

справочников) целиком располагался на одном дисковом пакете (или логическом

диске, разделе физического дискового пакета, представляемом с помощью

средств операционной системы как отдельный диск). В этом случае полное имя

файла начинается с имени дискового устройства, на котором установлен

соответствующий диск. Такой способ именования используется в файловых

системах фирмы DEC, очень близко к этому находятся и файловые системы

персональных компьютеров. Можно назвать эту организацию поддержанием

изолированных файловых систем.

Другой крайний вариант был реализован в файловых системах операционной

системы Multics. Эта система заслуживает отдельного большого разговора, в

ней был реализован целый ряд оригинальных идей, но мы остановимся только на

особенностях организации архива файлов. В файловой системе Miltics

пользователи представляли всю совокупность каталогов и файлов как единое

дерево. Полное имя файла начиналось с имени корневого каталога, и

пользователь не обязан был заботиться об установке на дисковое устройство

каких-либо конкретных дисков. Сама система, выполняя поиск файла по его

имени, запрашивала установку необходимых дисков. Такую файловую систему

можно назвать полностью централизованной.

Конечно, во многом централизованные файловые системы удобнее изолированных:

система управления файлами принимает на себя больше рутинной работы. Но в

таких системах возникают существенные проблемы, если кому-то требуется

перенести поддерево файловой системы на другую вычислительную установку.

Компромиссное решение применено в файловых системах ОС UNIX. На базовом

уровне в этих файловых системах поддерживаются изолированные архивы файлов.

Один из этих архивов объявляется корневой файловой системой. После запуска

системы можно "смонтировать" корневую файловую систему и ряд изолированных

файловых систем в одну общую файловую систему. Технически это производится

с помощью заведения в корневой файловой системе специальных пустых

каталогов. Специальный системный вызов курьер ОС UNIX позволяет подключить

к одному из этих пустых каталогов корневой каталог указанного архива

файлов. После монтирования общей файловой системы именование файлов

производится так же, как если бы она с самого начала была централизованной.

Если учесть, что обычно монтирование файловой системы производится при

раскрутке системы, то пользователи ОС UNIX обычно и не задумываются об

исходном происхождении общей файловой системы.

1.1.3. Защита файлов

Поскольку файловые системы являются общим хранилищем файлов, принадлежащих,

вообще говоря, разным пользователям, системы управления файлами должны

обеспечивать авторизацию доступа к файлам. В общем виде подход состоит в

том, что по отношению к каждому зарегистрированному пользователю данной

вычислительной системы для каждого существующего файла указываются

действия, которые разрешены или запрещены данному пользователю.

Существовали попытки реализовать этот подход в полном объеме. Но это

вызывало слишком большие накладные расходы как по хранению избыточной

информации, так и по использованию этой информации для контроля

правомочности доступа.

Поэтому в большинстве современных систем управления файлами применяется

подход к защите файлов, впервые реализованный в ОС UNIX. В этой системе

каждому зарегистрированному пользователю соответствует пара целочисленных

идентификаторов: идентификатор группы, к которой относится этот

пользователь, и его собственный идентификатор в группе. Соответственно, при

каждом файле хранится полный идентификатор пользователя, который создал

этот файл, и отмечается, какие действия с файлом может производить он сам,

какие действия с файлом доступны для других пользователей той же группы, и

что могут делать с файлом пользователи других групп. Эта информация очень

компактна, при проверке требуется небольшое количество действий, и этот

способ контроля доступа удовлетворителен в большинстве случаев.

1.1.4. Режим многопользовательского доступа

Последнее, на чем мы остановимся в связи с файлами, - это способы их

использования в многопользовательской среде. Если операционная система

поддерживает многопользовательский режим, вполне реальна ситуация, когда

два или более пользователей одновременно пытаются работать с одним и тем же

файлом. Если все эти пользователи собираются только читать файл, ничего

страшного не произойдет. Но если хотя бы один из них будет изменять файл,

для корректной работы этой группы требуется взаимная синхронизация.

Исторически в файловых системах применялся следующий подход. В операции

открытия файла (первой и обязательной операции, с которой должен начинаться

сеанс работы с файлом) помимо прочих параметров указывался режим работы

(чтение или изменение). Если к моменту выполнения этой операции от имени

некоторой программы A файл уже находился в открытом состоянии от имени

некоторой другой программы B (правильнее говорить "процесса", но мы не

будем вдаваться в терминологические тонкости), причем существующий режим

открытия был несовместимым с желаемым режимом (совместимы только режимы

чтения), то в зависимости от особенностей системы программе A либо

сообщалось о невозможности открытия файла в желаемом режиме, либо она

блокировалась до тех пор, пока программа B не выполнит операцию закрытия

файла.

Заметим, что в ранних версиях файловой системы ОС UNIX вообще не были

реализованы какие бы то ни было средства синхронизации параллельного

доступа к файлам. Операция открытия файла выполнялась всегда для любого

существующего файла, если данный пользователь имел соответствующие права

доступа. При совместной работе синхронизацию следовало производить вне

файловой системы (и особых средств для этого ОС UNIX не предоставляла). В

современных реализациях файловых систем ОС UNIX по желанию пользователя

поддерживается синхронизация при открытии файлов. Кроме того, существует

возможность синхронизации нескольких процессов, параллельно модифицирующих

один и тот же файл. Для этого введен специальный механизм синхронизационных

захватов диапазонов адресов открытого файла.

1.2. Области применения файлов

После этого краткого экскурса в историю файловых систем рассмотрим

возможные области их применения. Прежде всего, конечно, файлы применяются

для хранения текстовых данных: документов, текстов программ и т.д. Такие

файлы обычно образуются и модифицируются с помощью различных текстовых

редакторов. Структура текстовых файлов обычно очень проста: это либо

последовательность записей, содержащих строки текста, либо

последовательность байтов, среди которых встречаются специальные символы

(например, символы конца строки).

Файлы с текстами программ используются как входные тексты компиляторов,

которые в свою очередь формируют файлы, содержащие объектные модули. С

точки зрения файловой системы, объектные файлы также обладают очень простой

структурой - последовательность записей или байтов. Система

программирования накладывает на эту структуру более сложную и специфичную

для этой системы структуру объектного модуля. Подчеркнем, что логическая

структура объектного модуля неизвестна файловой системе, эта структура

поддерживается программами системы программирования.

Аналогично обстоит дело с файлами, формируемыми редакторами связей и

содержащими образы выполняемых программ. Логическая структура таких файлов

остается известной только редактору связей и загрузчику - программе

операционной системы. Примерно такая же ситуация с файлами, содержащими

графическую и звуковую информацию.

Одним словом, файловые системы обычно обеспечивают хранение слабо

структурированной информации, оставляя дальнейшую структуризацию прикладным

программам. В перечисленных выше случаях использования файлов это даже

хорошо, потому что при разработке любой новой прикладной системы опираясь

на простые, стандартные и сравнительно дешевые средства файловой системы

можно реализовать те структуры хранения, которые наиболее естественно

соответствуют специфике данной прикладной области.

1.3. Потребности информационных систем

Однако ситуация коренным образом отличается для упоминавшихся в начале

лекции информационных систем. Эти системы главным образом ориентированы на

хранение, выбор и модификацию постоянно существующей информации. Структура

информации зачастую очень сложна, и хотя структуры данных различны в разных

информационных системах, между ними часто бывает много общего. На начальном

этапе использования вычислительной техники для управления информацией

проблемы структуризации данных решались индивидуально в каждой

информационной системе. Производились необходимые надстройки над файловыми

системами (библиотеки программ), подобно тому, как это делается в

компиляторах, редакторах и т.д.

Но поскольку информационные системы требуют сложных структур данных, эти

дополнительные индивидуальные средства управления данными являлись

существенной частью информационных систем и практически повторялись от

одной системы к другой. Стремление выделить и обобщить общую часть

информационных систем, ответственную за управление сложно

структурированными данными, явилось, на наш взгляд, первой побудительной

причиной создания СУБД. Очень скоро стало понятно, что невозможно обойтись

общей библиотекой программ, реализующей над стандартной базовой файловой

системой более сложные методы хранения данных.

Покажем это на примере. Предположим, что мы хотим реализовать простую

информационную систему, поддерживающую учет сотрудников некоторой

организации. Система должна выполнять следующие действия: выдавать списки

сотрудников по отделам, поддерживать возможность перевода сотрудника из

одного отдела в другой, приема на работу новых сотрудников и увольнения

работающих. Для каждого отдела должна поддерживаться возможность получения

имени руководителя этого отдела, общей численности отдела, общей суммы

выплаченной в последний раз зарплаты и т.д. Для каждого сотрудника должна

поддерживаться возможность выдачи номера удостоверения по полному имени

сотрудника, выдачи полного имени по номеру удостоверения, получения

информации о текущем соответствии занимаемой должности сотрудника и о

размере его зарплаты.

Предположим, что мы решили основывать эту информационную систему на

файловой системе и пользоваться при этом одним файлом, расширив базовые

возможности файловой системы за счет специальной библиотеки функций.

Поскольку минимальной информационной единицей в нашем случае является

сотрудник, естественно потребовать, чтобы в этом файле содержалась одна

запись для каждого сотрудника. Какие поля должна содержать такая запись?

Полное имя сотрудника (СОТР_ИМЯ), номер его удостоверения (СОТР_НОМЕР),

информацию о его соответствии занимаемой должности (для простоты, "да" или

"нет") (СОТР_СТАТ), размер зарплаты (СОТР_ЗАРП), номер отдела

(СОТР_ОТД_НОМЕР). Поскольку мы хотим ограничиться одним файлом, та же

запись должна содержать имя руководителя отдела (СОТР_ОТД_РУК).

Функции нашей информационной системы требуют, чтобы обеспечивалась

возможность много ключевого доступа к этому файлу по уникальным ключам (не

дублируемым в разных записях) СОТР_ИМЯ и СОТР_НОМЕР. Кроме того, должна

обеспечиваться возможность выбора всех записей с общем значением

СОТР_ОТД_НОМЕР, то есть доступ по неуникальному ключу. Для того, чтобы

получить численность отдела или общий размер зарплаты, каждый раз при

выполнении такой функции информационная система должна будет выбрать все

записи о сотрудниках отдела и посчитать соответствующие общие значения.

Таким образом мы видим, что даже для такой простой системы ее реализация на

базе файловой системы, во-первых, требует создания достаточно сложной

надстройки для много ключевого доступа к файлам, и, во-вторых, вызывает

требование существенной избыточности хранения (для каждого сотрудника

одного отдела повторяется имя руководителя) и выполнение массовой выборки и

вычислений для получения суммарной информации об отделах. Кроме того, если

в ходе эксплуатации системы нам захочется, например, выдавать списки

сотрудников, получающих заданную зарплату, то придется либо полностью

просматривать файл, либо реструктуризовывать его, объявляя ключевым поле

СОТР_ЗАРП.

Первое, что приходит на ум, - это поддерживать два много ключевых файла:

СОТРУДНИКИ и ОТДЕЛЫ. Первый файл должен содержать поля СОТР_ИМЯ,

СОТР_НОМЕР, СОТР_СТАТ, СОТР_ЗАРП и СОТР_ОТД_НОМЕР, а второй - ОТД_НОМЕР,

ОТД_РУК, ОТД_СОТР_ЗАРП (общий размер зарплаты) и ОТД_РАЗМЕР (общее число

сотрудников в отделе). Большинство неудобств, перечисленных в предыдущем

абзаце, будут преодолены. Каждый из файлов будет содержать только не

дублируемую информацию, необходимости в динамических вычислениях суммарной

информации не возникает. Но заметим, что при таком переходе наша

информационная система должна обладать некоторыми новыми особенностями,

сближающими ее с СУБД.

Прежде всего, система должна теперь знать, что она работает с двумя

информационно связанными файлами (это шаг в сторону схемы базы данных),

должна знать структуру и смысл каждого поля (например, что СОТР_ОТД_НОМЕР в

файле СОТРУДНИКИ и ОТД_НОМЕР в файле ОТДЕЛЫ означают одно и то же), а также

понимать, что в ряде случаев изменение информации в одном файле должно

автоматически вызывать модификацию во втором файле, чтобы их общее

содержимое было согласованным. Например, если на работу принимается новый

сотрудник, то необходимо добавить запись в файл СОТРУДНИКИ, а также

соответствующим образом изменить поля ОТД_ЗАРП и ОТД_РАЗМЕР в записи файла

ОТДЕЛЫ, описывающей отдел этого сотрудника.

Понятие согласованности данных является ключевым понятием баз данных.

Фактически, если информационная система (даже такая простая, как в нашем

примере) поддерживает согласованное хранение информации в нескольких

файлах, можно говорить о том, что она поддерживает базу данных. Если же

некоторая вспомогательная система управления данными позволяет работать с

несколькими файлами, обеспечивая их согласованность, можно назвать ее

системой управления базами данных. Уже только требование поддержания

согласованности данных в нескольких файлах не позволяет обойтись

библиотекой функций: такая система должна иметь некоторые собственные

данные (метаданные) и даже знания, определяющие целостность данных.

Но это еще не все, что обычно требуют от СУБД. Во-первых, даже в нашем

примере неудобно реализовывать такие запросы как "выдать общую численность

отдела, в котором работает Петр Иванович Сидоров". Было бы гораздо проще,

если бы СУБД позволяла сформулировать такой запрос на близком пользователям

языке. Такие языки называются языками запросов к базам данных. Например, на

языке SQL наш запрос можно было бы выразить в форме:

SELECT ОТД_РАЗМЕР

FROM СОТРУДНИКИ, ОТДЕЛЫ

WHERE СОТР_ИМЯ = "ПЕТР ИВАНОВИЧ СИДОРОВ"

AND СОТР_ОТД_НОМЕР = ОТД_НОМЕР

Таким образом, при формулировании запроса СУБД позволит не задумываться о

том, как будет выполняться этот запрос. Среди ее метаданных будет

содержаться информация о том, что поле СОТР_ИМЯ является ключевым для файла

СОТРУДНИКИ, а ОТД_НОМЕР - для файла ОТДЕЛЫ, и система сама воспользуется

этим. Если же возникнет потребность в получении списка сотрудников, не

соответствующих занимаемой должности, то достаточно предъявить системе

Страницы: 1, 2, 3


© 2010 Современные рефераты