Кубанский государственный университет
Опубликован: 24.12.2013 | Доступ: свободный | Студентов: 647 / 5 | Длительность: 24:28:00
Лекция 12:

Семантика баз данных

< Лекция 11 || Лекция 12: 1234567891011

12.3 Данные и семантика данных

12.3.1 Данные и смыслы. Роль активности. Какие смыслы обычно используются

Обычно в базах данных семантика представляется тремя элементами: типами данных, ограничениями целостности и метаданными. Их реализация возможна благодаря свойству активности базы, реализуемому либо внутренними процедурами СУБД, либо триггерами. Промышленные СУБД реагируют на события из следующего набора: вставка, обновление и удаление записей и, может быть, так называемые серверные события, например, log in, log off и другие. В экспериментальных реализациях и исследовательских работах набор событий может быть значительно расширен за счет включения временн'ых, транзакционных событий, событий исполнения методов, чтения и доступа.

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

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

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

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

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

Данные и смыслы

Рис. 12.19. Данные и смыслы

Одно замечание о месте и/или способе прикрепления элементов семантики к фразам исходного языка или элементам данных. Так, в естественных языках семантические структуры прикрепляются к слову, словосочетанию, фразе, тексту или корпусу текстов. Процесс смыслообразования управляется ходом анализа фразы в некотором контексте. В языках программирования смыслы могут прикрепляться к токенам, конструкциям языка или программам. Роль контекста значительно ниже, но пренебрегать им не стоит.

Есть основания считать, что в современных базах данных смыслы более локализованы, чем в естественных языках, способы прикрепления семантики к данным проще, и процесс смыслообразования примитивен.

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

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

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

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

12.3.2 Классификация смыслов

Современные информационные системы (ИС), как правило, хранят лишь незначительную часть семантики моделируемой предметной области и решаемых задач. Большая часть информации, собранной в процессе анализа предметной области, в лучшем случае остается в документации, предназначенной для человека, в худшем —просто теряется. Приятное исключение — системы типа Oracle Designer и Unify.

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

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

Второе основание для классификации — место нахождения. Это память человека, база данных, интерфейс пользователя и т.д. Здесь мы будем рассматривать только смыслы, размещенные в базе данных.

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

  • смыслы, которые не могут быть реализованы в базе данных непосредственно (например, смыслы, относящиеся к интерфейсам пользователя или связанные со сценариями, реализуемыми вне базы данных);
  • смыслы, внесение которых в базу уже предусмотрено используемыми языками или СУБД (например, в SQL это метаданные, а именно: схема базы, типы данных, ключи, домены, процедурные и декларативные ограничения целостности);
  • смыслы, которые могут быть внесены в базу данных, но обычно передаются в ведение пользователя.

Поясним последний вид смыслов. Обычно неявно предполагается, что пользователь умный (а с другой стороны, усложнение программы нам ни к чему), то есть он, как сейчас говорят, "в теме" и правильно понимает семантику предметной области. Например, он не будет писать запрос, в котором складываются рост и вес сотрудников. А может быть, даже помнит, что измерение успеваемости выполняется в шкале порядка, а потому средний балл — это неадекватная статистика.

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

Четвертое основание классификации смыслов — место прикрепления. Учтем, что современные базы данных могут иметь многослойные модели. Например, данные столбца реляционной таблицы могут разбираться с помощью регулярных выражений, в столбце может храниться содержимое файла XML и т.д. Поэтому смыслы в табличных базах могут прикрепляться к следующим объектам:

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

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

Обратим внимание на то, что столбец, таблица, схема как элементы метаданных могли бы быть связаны со смыслами в словаре, если бы СУБД позволяла это.

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

Отметим, что строки и значения в выбранной строке и столбце, то есть ячейки таблицы, в метаданных не представляются. Пары понятий "строка — таблица" и "ячейка — столбец" интересны тем, что они представляют каждая экстенсионал и интенсионал одного и того же понятия. У любого элемента такой пары могут быть свои смыслы. Например, столбец "Дата рождения" в некоторой таблице представляет интенсионал понятия "Время начала существования". Если имеется смысл "Надежность сведений о дате рождения", то его значения относятся к конкретным значениям дат, представляющим экстенсионал понятия, а не ко всему столбцу "Дата рождения". Поскольку прикрепление возможно только к элементам схемы, описываемым метаданными, то столбец смысла "Надежность сведений о дате рождения" будет прикрепляться к столбцу "Дата рождения", но интерпретироваться будет в соответствии с его назначением на ячейку.

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

  • тип данных (пользовательский или для второго слоя базы);
  • шкала измерений и/или интерпретации данных;
  • единица измерения;
  • наличие функциональных зависимостей, например, выводимые столбцы, столбцы, пересчитываемые при изменении каких-то данных;
  • контекст, в котором используются данные;
  • темпоральные свойства, например, столбцы начала и конца существования;
  • указатели роли атрибута в какой-нибудь структуре на атрибутах.

К строке могут быть подключены смыслы, представляющие оценки строк, и структуры, построенные на этих строках, например:

  1. оценки надежности данных;
  2. характеристики источника данных.

Некоторые смыслы, прикрепляемые к таблице:

  • роль таблицы (сущность, атрибут, связь, таблица в составе индекса полнотекстового поиска, таблица итоговых данных, таблица dimension и т.д.) и свойства этой роли;
  • наличие структур хранимых в таблице (деревья, сети, в том числе семантические, сети Петри и т.д.).

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

Последнее пятое основание классификации смыслов, хранящихся в базе данных — особенности активизации и сценарий реализации — мы рассмотрим для баз данных реляционного типа в разделе "Способы реализации смыслов".

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

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

Значениями признака "предметная область" являются модель предметной области, концептуальная модель базы, база (логическая или физическая модель), эмулированная структура данных, хранящаяся в базе, другие компоненты информационной системы — такие, как интерфейс пользователя, приложения middletier и т.п.

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

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

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

Будем называть задачей любое действие, возникающее вне базы данных и реализуемое с использованием данных и смыслов базы. С задачей может быть связана своя система смыслов. Несовместимость смыслов задачи и базы может привести к появлению решений, не имеющих предметного смысла. Так, в таблице, содержащей два столбца "Рост" и "Вес", можно предположить наличие дерева, связанного этими столбцами, и получить результаты с непонятной интерпретацией.

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

< Лекция 11 || Лекция 12: 1234567891011
Андрей Шадурский
Андрей Шадурский
Россия, Санкт-Петербург
Berkut Molodoy
Berkut Molodoy
Россия