Файл: СПОСОБЫ ПРЕДОСТАВЛЕНИЯ ДАННЫХ В ИНФОРМАЦИОННЫХ СИСТЕМАХ (Данные и модели данных).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 04.04.2023

Просмотров: 295

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Обобщенный тип обладает всеми свойствами, общими для базовых знаков или типов. Или, иначе, – все свойства обобщенного типа могут быть унаследованы базовыми типами. Однако, можно явно запретить наследование определенных свойств. Кроме того, можно указать, что некоторые свойства характеризуют тип в целом, и они не будут наследоваться. Свойство иметь заработную плату наследуется от типа СЛУЖАЩИЙ каждым конкретным экземпляром служащего. Свойство иметь фамилию, адрес и возраст наследуется каждым подтипом типа ЛИЧНОСТЬ (СЛУЖАЩИЙ и СТУДЕНТ). В то же время, средняя заработная плата есть специфическое свойство типа СЛУЖАЩИЙ и оно не наследуется. Обобщение на уровне типов предполагает ряд обобщений на уровне знаков, относящихся к подтипам. Например, тот факт, что ЛИЧНОСТЬ есть обобщение типа СЛУЖАЩИЙ, подразумевает, что каждый конкретный служащий может рассматриваться как личность. Агрегация есть абстракция, посредством которой объект конструируется из других, базовых объектов. Например, личность может характеризоваться своей фамилией, адресом, возрастом. Агрегация может использоваться как на уровне знаков, так и на уровне типов. Тип СЛУЖАЩИЙ может быть сконструирован из типов свойств ФАМИЛИЯ, ВОЗРАСТ, АДРЕС (рис. 2.2). Свойства-типы по своей природе являются дефиниционными (от англ. definition – определение) и называются интенсиональными. Конкретная реализация типа СЛУЖАЩИЙ, относящаяся, например, к Иванову, конструируется из знаков «Иванов» (фамилия), «29» (возраст), «Таганрог, ул. Греческая, 82» (адрес). Свойства-знаки по своей природе являются фактическими и называются экстенсиональными. Различие между интенсиональными и экстенсиональными свойствами в моделировании данных имеет важное значение и далее будет рассматриваться более детально.[14]

Агрегация на уровне типов предполагает множество агрегаций на уровне знаков. Некоторый тип может выступать и как обобщение, и как агрегат одновременно. Например, тип ЛИЧНОСТЬ есть обобщение двух типов служащий и студент. В то же время тип ЛИЧНОСТЬ является одновременно агрегатом свойств ФИО, ВОЗРАСТ, АДРЕС (см. рис. 2.1). Агрегация позволяет раскрыть структуру объектов. Допускается многократное применение агрегации. Процесс обратный агрегации носит название пошаговой детализации и широко применяется в программировании. Обобщение и агрегация соотносятся с понятиями ЕСТЬ_ЧАСТЬ и ЕСТЬ _ НЕК, используемыми в проблематике искусственного интеллекта. Понятие ЕСТЬ _ ЧАСТЬ выражает тот факт, что тип объекта есть агрегат других типов (например, ФАМИЛИЯ ЕСТЬ_ЧАСТЬ СЛУЖАЩИЙ). Понятие ЕСТЬ_НЕК выражает факт обобщения одним типом объекта другого типа объекта (например, СЛУЖАЩИЙ ЕСТЬ_НЕК ЛИЧНОСТЬ). Оба эти понятия определяют связи между типами, подразумевающие и связи между знаками. Однако на уровне знаков эти понятия, как правило, не употребляются. Абстракции неформально давно применяются в управлении данными: агрегация – при конструировании файла для группирования полей в запись, обобщение – для представления множества записей общим типом объекта – файлом, а также для выборки из файла подмножества записей. Агрегация и обобщение могут применяться взаимодополняющим образом и выражать структурные и классификационные аспекты типизации. Структуру типа можно представить как агрегат базовых типов, а сам агрегат может служить объектом обобщения (классификации). Классификация типов может быть выражена иерархией обобщения, а структура – иерархией агрегации. Рис. 2.3 иллюстрирует абстракцию личности.[15]


Применяя подход «снизу вверх», абстракцию можно представить как процесс синтеза сложных объектов из простых. Вначале классификация знаков позволяет сформировать типы, затем путем обобщения и агрегации синтезируются новые обобщенные и агрегированные объекты. С другой стороны, аналитический подход «сверху вниз» дает возможность, начав со сложных объектов, путем их декомпозиции с применением специализации и порождения реализации, прийти к уровню знаков. Обычно подход «сверху вниз» применяют с целью понять сложные явления, а подход «снизу вверх» для конструирования сложных объектов. Оба подхода могут применяться одновременно. Множества: домены и атрибуты. Множество это собрание правильно идентифицированных объектов, удовлетворяющих условию принадлежности. Условие принадлежности может быть например сформулировано следующим образом: «все четные, целые, положительные» (т, е. {2, 4, 6, ...}) или «все десятичные цифры» (т. е. {0, 1, 2, ...9}). Множество бывает конечным или бесконечным. Так, первое из приведенных множеств является бесконечным, а второе конечным. Само множество может быть элементом других множеств (например, {{0}, {1, 3, 5, 7}, {2, 4, 6, 8}}). Пустое множество, обозначаемое { } или ∅, всегда является элементом множества множеств. В классической теории множеств не подразумевается упорядоченности элементов множества, а дубликаты не имеют смысла; кроме того, условие принадлежности не зависит от представления элементов множества. Поэтому, например, множества {1, 2, 3} и {3, 2, 3, 1, 3} считаются эквивалентными. Эквивалентными считаются множества {а / а = 0, 1} и {b / b – есть двоичная цифра};

они оба определяют множество двоичных цифр {0, 1}. В моделировании данных теория множеств применяется неформальным образом и ряд теоретических результатов классической теории не используется. Как уже отмечалось, понятие классического множества не связано с какой-либо упорядоченностью его элементов. Упорядоченность классического множества может быть задана с помощью двухместных кортежей. Например, упорядоченный вариант множества {а, b, с} это множество, состоящее из двухместных кортежей: {< 1, а >, < 2, b >, < 3, с >}. Двухместные кортежи определяются через вложение множеств. Так, множество множеств {{1}, {1, а}} определяет кортеж < 1, а >. Такое представление порядка носит достаточно произвольный характер и при нечетко зафиксированных соглашениях может привести к неоднозначности толкования. Проблема еще более усложняется при n-местных кортежах. В этом случае требуется ввести точные предположения относительно способа спецификации вложений.[16]


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

1.3. Типы данных

Данным приписываются несколько классификационных признаков. Важнейшим из них является тип данных. Тип данных определяет:

· набор их допустимых значений;

· правила их обработки (преобразования);

· порядок их размещения в ОЗУ и ВЗУ при хранении;

· порядок доступа к ним (т.е. обращение и извлечение при необходимости с места хранения).[17]

Допустимый набор типов данных и их особенности определяются программной системой или языком программирования, на котором система написана. При этом возможности языков по разнообразию допустимых типов данных, а также построению новых типов различаются весьма сильно. Ясно, что чем более широкой и гибкой оказывается типизация данных в программной системе или языке, тем больше возможностей предоставляется пользователю в решении задачи оптимального представления, хранения и применения данных. Типизация данных влияет и на компактность самой исполняемой программы. Например, в языке BASIC отсутствует тип данных «записи»; в результате для создания и использования базы данных пришлось бы организовывать параллельную обработку нескольких массивов.[18]

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

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


Элементарные данные являются «кирпичиками», путем объединения которых строятся сложные данные. Вариантов объединения существует много - это приводит к появлению множества типов структур данных.

Информационный массив, объединяющий данные и связи (отношения) между ними называется структурированными данными.

Перечень объединяемых одиночных данных, их характеристики, а также особенности связей между ними образуют структуру данных.

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

Перечень допустимых структур данных, как уже было сказано, определяется языком программирования или прикладной программой. Он может быть фиксированным (нерасширяемым), как в языке BASIC или прикладных программах без встроенных возможностей программирования. В развитых языках программирования (PASCAL, С и др.) и ряде прикладных систем наряду с зарезервированными типами структур данных допускается создание новых типов, причем, элементами структуры могут быть сложные данные, например, массив записей.

Сложные данные, как и элементарные, имеют значения и идентификаторы. Значения размещаются в ячейках ОЗУ по определенным схемам (см. п.6.3.3.). Правила построения идентификаторов устанавливаются языком программирования или программной системой. Исключение составляют правила формирования имен файлов - они задаются операционной системой и должны соблюдаться всеми работающими в ней программами и языками. Например, в MS-DOS в качестве имен файлов допустимы комбинации из латинских букв, цифр и некоторых спецсимволов общей длиной не более 8 знаков; в Windows 95 (98), имеющую 32-х разрядную файловую систему, разрешены имена длиной до 255 знаков без ограничений применяемого набора символов.[20]

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


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

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

· определить способы представления элементарных (простых) данных;

· определить способы объединения данных в структуры;

· установить способы размещения информации на материальном носителе.[21]

Выделяют три уровня представления данных - концептуальный, логический и физический. На концептуальном уровне определяется общая структура информационного массива - она называется моделью данных. Известны и используются несколько моделей данных: иерархическая, сетевая, реляционная, объектно-ориентированная. В соответствии с выбранной моделью данных строится информационная система, в которой данные будут храниться, а также программы, ведущие их обработку (манипулирование данными). Логический уровень определяет способы представления элементарных данных, их перечень при объединении в структуру, а также характер связей между ними в рамках выбранной модели данных. Физический уровень определяет форматы размещения созданной логической структуры данных на внешних носителях информации (магнитных или оптических дисках, бумаге, в памяти компьютера). Представление данных является важным фактором, обеспечивающим компактный (т.е. экономный с точки зрения расходования носителя) способ записи информации при хранении и быстрый доступ к нужным данным при их использовании. [22]