МОДЕЛИ И СТРУКТУРЫ ДАННЫХ

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

Модель (лат. «modulus» – мера) – это объект-заместитель объекта-оригинала, обеспечивающий изучение некоторых свойств последнего; это и упрощенное представление системы, формируемое для её анализа и предсказания, а также получения качественных и количественных результатов, необходимых для принятия правильного управленческого решения.

Объект – это совокупность свойств элемента, которые могут быть исследованы и описаны.

Примеры объектов: студент или группа студентов, аудитория, время занятий, слова, числа и т.д. Обычно считается, что быть объектом – значит быть дискретным и различимым. По-видимому, примеры «необъектов» это мир, время, материя, смысл и т.п. При этом можно представить БД, в которой хранятся сведения об этих категориях.

Объекты могут быть простыми и сложными. Простые объекты представляются совокупностью характеризующих их свойств. Внутренняя структура простого объекта не раскрывается. Сложные объекты имеют определенный состав и структуру. Например: студент Петров учится в группе СЦИ-201.
Объект может быть материальным (служащий, изделие или населенный пункт) и нематериальным (имя, понятие, абстрактная идея).

Объект имеет различные свойства (например, цвет, вес, имя), которые важны для нас в то время, когда мы обращаемся к объекту (например, выбираем среди множества других) с какой-либо целью его использования. Причем свойства объекта можно задавать как отдельными однозначно интерпретируемыми количественными показателями, так и словесными нечеткими описаниями, допускающими разную трактовку, зависящую, например, от точки зрения и наличных знаний воспринимающего субъекта.

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

Для создания описательных текстовых информационных моделей обычно используют естественные языки. Наряду с естественными языками (русский, английский и т.д.) разработаны и используются формальные языки: системы счисления, алгебра высказываний, языки программирования и др. С помощью формальных языков строят информационные модели определенного типа – формально-логические модели.

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

Базовая модель – это основная модель БД. Она содержит описание функций, процессов, объектов, правил, организационной структуры, которые поддерживаются программными модулями типовой БД.

Информационная база (БД) состоит из двух компонент:
1) коллекции записей собственно данных;
2) описания этих данных – метаданных.

Типовые модели описывают конфигурации информационной системы для определённых отраслей или типов производства. Модель конкретной организации строится путём выбора фрагментов основной или типовой модели в соответствии со специфическими особенностями организации, или путём автоматизированной адаптации этих моделей в результате экспертного опроса. Для формирования моделей используют различные методы моделирования.

Разработка модели системы в общем случае означает объединение отдельных составляющих системы в единую модель. При этом каждая составляющая (подсистема) изолирована от других частей модели и решает собственные задачи. Количество связей между элементами системы (подсистемы), в том числе с внутренней и внешней средой, может быть значительным. Учесть все связи не представляется возможным, поэтому при разработке модели ограничиваются наиболее важными из них. Таким образом, реализуются несложные модели, в которых возможно разделить и взаимно независимо рассмотреть отдельные аспекты функционирования реального объекта. Моделирование облегчает изучение объекта с целью его создания, дальнейшего преобразования и развития.

При моделировании сложных объектов недопустима разобщенность решаемых задач. Она приводит к значительным ресурсным затратам и потерям при реализации модели на конкретном объекте. Поэтому в данном случае требуется одновременное исследование взаимосвязей объекта и с внешней средой, другими элементами метасистемы.

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

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

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

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

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

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

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

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

Информационная модель – это модель объекта, процесса или явления, в которой представлены информационные аспекты моделируемого объекта, процесса или явления.

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

Формирование и исследование моделей осуществляется с помощью различных методов моделирования. Процессы моделирования всё чаще осуществляются с использованием специальных компьютерных программных средств, позволяющих автоматизировать эту деятельность.

Организация данных в ИС
Информационная база (БД) состоит из двух компонент:
1) коллекции записей собственно данных;
2) описания этих данных – метаданных.

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

Тип данных в таблице характеризует вид хранящихся в поле данных.

В современных СУБД допускаются следующие типы данных: символьные (текстовые), числовые, битовые строки, логические, MEMO, счетчик, гиперссылки, поле объекта OLE и специализированные данные.

К специализированным типам данных в СУБД относят: время, денежные единицы, дата, временной интервал.

Запись – это упорядоченная в соответствии с характером взаимосвязей совокупность полей (элементов) данных, размещаемых в памяти в соответствии с их типом.

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

Структура данных – здесь способ отображения значений в памяти: размер области и порядок ее выделения (который и определит характер процедуры адресации/выборки).

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

Если бы назначением базы данных было только хранение и поиск данных в массивах записей, то структура системы и самой базы была бы простой. Причина сложности в том, что практически любой объект характеризуется не только параметрами-величинами, но и взаимосвязями частей или состояний. Есть различия и в характере взаимосвязей между объектами предметной области: одни объекты могут использоваться только как характеристики остальных объектов, другие – независимы и имеют самостоятельное значение.

Логическую структуру хранимых в базе данных называют моделью представления данных.
К основным моделям представления данных (моделям данных) относят: иерархическую, сетевую, реляционную, а также постреляционную, многомерную и объектно-ориентированную модели.

Используются и другие модели данных, расширяющие возможности названных моделей. К ним относят объектно-реляционные, семантические, концептуальные и ориентированные модели. Некоторые из этих моделей служат для интеграции баз данных, баз знаний и языков программирования.

В иерархической модели связи между данными можно описать с помощью упорядоченного графа (или дерева).
Тип «дерево» является составным. Он включает в подтипы, каждый из которых является типом «дерево». Каждый из типов «дерево» состоит из одного «корневого» типа и упорядоченного набора (возможно, пустого) подчиненных типов. Каждый из элементарных типов, включенных в тип «дерево» - простой или составной тип «запись». Простая «запись» состоит из одного типа, например числового, а составная «запись» объединяет совокупность типов, например целое, строку символов и указатель (ссылку).

Сетевая модель данных позволяет отображать разные взаимосвязи элементов данных в виде произвольного графа, обобщая таким образом иерархическую модель данных.
Для описания схемы сетевой БД используют две группы типов: «запись» и «связь». Тип «связь» определяется для двух типов «запись»: предка и потомка. Переменные типа «связь» являются экземплярами связей. Сетевая БД состоит из набора записей и набора соответствующих связей. На формирование связи особых ограничений не накладывается. В иерархических структурах запись-потомок может иметь только одну запись-предка. В сетевой модели данных запись-потомок может иметь произвольное число записей-предков (сводных родителей).
Физическое размещение данных в базах сетевого типа может быть организовано практически теми же методами, что и в иерархических базах данных.
Недостаток сетевой модели данных - высокая сложность и жесткость схемы БД, построенной на ее основе; сложность для понимания и выполнения обработки информации в БД обычным пользователем. Кроме того, в сетевой модели данных ослаблен контроль целостности связей вследствие допустимости установления произвольных связей между записями.

Реляционная модель данных основана на понятии отношение (relation).
Отношение - это множество элементов. Наглядной формой представления отношения является двумерная таблица.

Обычно используются отношения «один-к-одному», «один-ко-многим» и «многие-ко-многим». .
Отношение «один-к-одному» возникает, когда одной записи в родительской таблице соответствует одна запись в дочерней таблице.
Родительская реляция (таблица) – таблица, поля которой входят в другую таблицу.
Дочерняя реляция (таблица) – таблица, поля которой используют информацию из полей другой таблицы, являющейся по отношению к данной родительской.
Отношение «один-ко-многим» возникает, когда одной записи в родительской таблицы соответствует несколько записей в дочерней таблице.
Отношение «многие-ко-многим» возникает, когда многим записям в родительской таблицы соответствуют несколько записей в дочерней таблице.
Для реализации отношения «многие-ко-многим» обычно создают таблицу пересечения, представляющую элементы двух других таблиц, находящихся в отношении «многие-ко-многим».

В реляционной БД в качестве объектов рассматриваются отношения, которые можно представить в виде таблиц. Таблицы между собой связываются по общим полям, т.е. полям, имеющимся в обеих таблицах, одинаковым по форматам и, как правило, по названию.

Таблица содержит строки (записи) и столбцы (колонки). Каждая строка таблицы имеет одинаковую структуру и состоит из полей. Столбцам таблицы соответствуют атрибуты отношения.
С помощью одной таблицы удобно описывать простые связи между данными. Хранящаяся в таблице информация разбивается на множество подобъектов, каждый из которых представляет собой строку или запись таблицы. Каждый из подобъектов имеет одинаковую структуру или свойства, описываемые соответствующими значениями полей записей. Например, в таблице могут размещаться сведения об обучаемых, о каждом из которых известны такие характеристики, как: фамилия, имя и отчество, пол, возраст, образование.
В рамках одной таблицы обычно не удается описать сложные логические структуры данных из предметной области. Для решения этой проблемы применяют связывание таблиц.

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

Поле таблицы данных – это ячейка внутри таблицы или столбец.

Ключевое поле – это одно или несколько полей, комбинация значений которых однозначно определяет каждую запись в таблице; это уникальный идентификатор записей, используемый для поиска записей и объединения таблиц. При ссылке на ключевое поле из другой таблицы оно называется полем внешнего ключа.

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

Запись данных – это полный набор данных об определенном объекте; это любая строка в таблице данных.

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

Современные версии реляционных СУБД обычно обладают некоторыми свойствами объектно-ориентированных систем (например, Oracle 8.x.). Такие СУБД называют объектно-реляционными.
Классическая реляционная модель предполагает неделимость хранящихся в полях записей таблиц данных. При этом информация в таблице представляется в первой нормальной форме. Существует ряд случаев, когда это ограничение мешает эффективной реализации приложений.

Постреляционная модель данных представляет расширенную реляционную модель, решающую проблему делимости хранящихся в записях таблиц данных. Постреляционная модель данных допускает многозначные поля. Набор значений многозначных полей считается самостоятельной таблицей, встроенной в основную таблицу. При этом на длину полей и количество полей в записях таблицы требование постоянства не накладывается. Это означает, что структура данных и таблиц обладает большой гибкостью.
Достоинство постреляционной модели - возможность представления совокупности связанных реляционных таблиц одной постреляционной таблицей, что обеспечивает высокую наглядность представления информации и повышение эффективности ее обработки.
Недостатком постреляционной модели является сложность решения проблемы обеспечения целостности и непротиворечивости хранимых данных.

Создание инфологической и логической моделей базы данных
Разработка информационно-логической модели реляционной БД начинается с рассмотрения необходимых для её создания информационных объектов. Рассмотрим вариант БД «Деканат». Выделим три объекта, не обладающие избыточностью – "Студенты", "Дисциплины" и "Преподаватели".

Представим состав реквизитов этих объектов в виде перечней:
"Студенты" (код студента, фамилия, имя, отчество, номер группы, дата рождения, стипендия, оценки),
"Дисциплины" (код дисциплины, название дисциплины),
"Преподаватели" (код преподавателя, фамилия, имя, отчество, дата рождения, телефон, заработная плата).

Рассмотрим связь между объектами "Студенты" и "Дисциплины". Студент изучает несколько дисциплин (многозначная связь). Каждая дисциплина изучается множеством студентов – это тоже многозначная связь. Следовательно, связь между объектами "Студенты" и "Дисциплины" является отношением «Многие-ко-многим» (М : N).

Множественные связи усложняют управление базой данных, поэтому их нежелательно использовать. Обычно строят реляционную модель, не содержащую связей типа «Многие-ко-многим».

В Access для контроля целостности данных с возможностью каскадного обновления и удаления данных создают вспомогательный объект связи, состоящий из ключевых реквизитов связываемых объектов, который может быть дополнен описательными реквизитами. В данном случае таким новым объектом для связи может быть объект «Оценки». Его реквизиты: код студента, код дисциплины и собственно оценки. Каждый студент имеет оценки по нескольким дисциплинам. При этом связь между объектами «Студенты» и «Оценки» будет «Один-ко-многим» (1 : М). Каждую дисциплину сдаёт множество студентов, поэтому связь между объектами «Дисциплины» и «Оценки» тоже «Один-ко-многим» (1 : М). В результате получается следующая информационно-логическая модель базы данных.

После определения структуры системы (БД): объектов (таблиц), состава их полей (структуры таблиц) и связей между таблицами приступают к непосредственному формированию структуры таблиц.

В данном случае необходимо создать структуры четырёх таблиц: «Студенты», «Оценки», «Дисциплины» и «Преподаватели». При этом учитываются общие поля, используемые в таблицах для обеспечения связности данных.

В таблицах «Студенты» и «Оценки» общим полем может быть «Код студента», в таблицах «Дисциплины» и «Оценки» – «Код дисциплины», в таблицах «Преподаватели» и «Дисциплины» – «Код дисциплины».

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

Заполнять поля таблиц лучше в специально созданные для этого формы. Для заполнения полей «Фамилия» и «Название дисциплины» вместо текста выбираем цифровые коды, что позволяет уменьшить объёмом информации в таких полях, а значит и в самой БД (например, число «2» по количеству символов значительно меньше слова «математика»).

Нормализация
Алгоритм нормализации (т.е. алгоритм приведения отношений к 3НФ) описывается следующим образом.

Шаг 1 (Приведение к 1НФ). На первом шаге задается одно или несколько отношений, отображающих понятия предметной области. По модели предметной области выписываются обнаруженные функциональные зависимости. Все отношения автоматически находятся в 1НФ.

Шаг 2 (Приведение к 2НФ). Если в некоторых отношениях обнаружена зависимость атрибутов от части сложного ключа, то проводят декомпозицию этих отношений на несколько отношений следующим образом: те атрибуты, которые зависят от части сложного ключа выносятся в отдельное отношение вместе с этой частью ключа.

Шаг 3 (Приведение к 3НФ). Если в некоторых отношениях обнаружена зависимость некоторых неключевых атрибутов других неключевых атрибутов, то проводят декомпозицию этих отношений следующим образом: те неключевые атрибуты, которые зависят от других неключевых атрибутов выносятся в отдельное отношение.

На практике, при создании логической модели данных, как правило, не следуют прямо приведенному алгоритму нормализации. Опытные разработчики обычно сразу строят отношения в 3НФ. Основным средством разработки логических моделей данных являются различные варианты ER-диаграмм. Особенность этих диаграмм в том, что они сразу позволяют создавать отношения в 3НФ.

Форма является видом представления таблицы. Спроектированная форма позволяет пользователям эффективно работать с БД. При этом пользователи могут ничего не знать о том, как устроена эта БД и о базах данных вообще. В форму можно включать рисунки и текстовые комментарии, объясняющие какие данные в какие поля следует вводить.

После создания всех таблиц необходимо сформировать схему данных, т.е. создать связи между таблицами. Так, например, задание каскадного обновления связанных полей и каскадного удаления связанных записей в таблицах «Дисциплины» и «Оценки» позволяет редактировать записи, связанные с дисциплинами, только в таблице «Дисциплины». В таблице «Оценки» эти действия со связанными записями будут выполняться автоматически. Если удалить из таблицы «Дисцип-лины» один предмет, то в таблице «Оценки» удалятся все строки, связанные с этим предметом.

Затем создают формы всех таблиц и, по мере необходимости, заполняют их необходимыми данными.

Формирование запросов
Обычно в существующей БД необходимо найти какие-то данные. Реализация данной потребности осуществляется путём использования запросов. Запрос – это вопрос к БД. При сохранении запроса остаётся только его структура: перечень таблиц, список полей, порядок сортировки, ограничения на записи, тип запроса и т.д. Результирующий набор данных запроса не сохраняется и при каждом выполнении запроса он создаётся снова. Поэтому запрос автоматически отображает любые изменения, происшедшие в базовых таблицах с момента последнего его запуска.

В общем случае запросы делятся на простые и сложные. Простой запрос на выборку из определённых полей таблиц или других запросов в Access можно сформировать с помощью Мастера запросов.

В Access можно создавать следующие типы запросов:
• запрос на выборку;
• запрос на выборку с параметрами;
• перекрестный запрос;
• запрос на изменение (удаление, обновление и добавление записей, на создание таблицы);
• запросы SQL (запросы на объединение, запросы к серверу, управляющие запросы,
• подчиненные запросы.

Наиболее часто используется Запрос на выборку.

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

При выполнении запроса на выборку данные, удовлетворяющие условиям отбора, выбираются из одной или из нескольких таблиц и выводятся в определённом порядке. Например, из таблицы «Преподаватели» можно вывести на экран данные о фамилиях доцентов, стаж которых более 15 лет.

Можно использовать запрос на выборку с целью группировки записи для вычисления сумм, средних значений, пересчёта и других действий. Например, используя запрос на выборку из таблицы «Преподаватели» можно получить данные о среднем стаже доцентов и профессоров.

Запрос с параметрами (на выборку) подразумевает формирование диалогового окна, в которое пользователь должен ввести данные, на основе которых будет выполняться запрос. Например, чтобы узнать какую (или какие) дисциплину ведёт конкретный преподаватель можно создать один запрос, в котором в качест-ве параметра будет использоваться фамилия преподавателя, а для получения списка преподавателей, ведущих одну дисциплину, можно создать другой запрос, в котором в качестве параметра будет использоваться название дисциплины. При каждом вызове такого запроса необходимо в специально появляющееся окно ввести фамилию преподавателя или название дисциплины на экран появится таблица, в которых будут присутствовать следующие поля, например, фамилия, имя, отчество преподавателя и читаемая им дисциплина или фамилии, имена, отчества и другие поля, характеризующие преподавателей, ведущих запрошенную дисциплину. А можно подобный запрос сформировать с двумя, последовательно появ-ляющимися параметрами. Например запрос, в котором выводятся оценки студентов заданной группы по заданной дисциплине, то есть последовательно будут появляться диалоговые окна, при этом в первое надо будет ввести номер группы, а во второе – фамилию студента.

Формирование сложных запросов
Остальные типы запросов классифицируются как сложные.

В перекрёстном запросе отображаются результаты статистических расчётов, выполненных по данным из одного поля таблицы. Эти результаты группируются по двум наборам данных, один из которых расположен в левом столбце таблицы, а второй – в верхней строке. Например, надо узнать средний стаж работы ассистентов, доцентов и профессоров на разных кафедрах (таблица «Преподаватели»). Перекрёстный запрос позволит создать таблицу, в которой заголовками строк будут должности, а заголовками столбцов – названия кафедр. В ячейках будут рассчитаны средние значения стажа преподавателей.

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

Запрос на обновление записей вносит общие изменения в группу записей одной или нескольких таблиц. Например, на 10% увеличилась заработная плата ассистентов. Запрос на обновление позволит быстро внести эти изменения в таблицу «Преподаватели».

Запрос на добавление добавляет группу записей из одной или нескольких таблиц в конец одной или нескольких таблиц. Например, появилось несколько новых преподавателей, а также база данных, содержащая сведения о них. Чтобы не вводить все данные вручную, их можно добавить в таблицу «Преподаватели».

Запрос на удаление удаляет группу записей, удовлетворяющих заданным условиям, из одной или нескольких таблиц. С помощью запроса на удаление можно удалять только всю запись, а не отдельные поля внутри неё. Например, запрос на удаление из базы отчисленных студентов.

Запрос на создание таблицы создаёт новую таблицу на основе всех или части данных из одной или нескольких таблиц. Например, из таблицы «Преподаватели» можно создать новую таблицу, содержащую данные только о профессорах. Также можно сформировать запрос на создание базы данных отличников. vЗапрос SQL создаётся при помощи инструкций SQL. Этот тип запросов обычно используется опытными пользователями, имеющими навыки программирования и общения с серверами баз данных.