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

Хранение данных и доступ к ним

11.2 Словари в базах данных

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

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

Структура словаря не может изменяться пользователем базы. Кроме того, пользователь не может манипулировать данными словаря, содержащими метаданные, непосредственно. Он выполняет некоторые действия в базе, а СУБД, проверяя возможность исполнения действия, сама анализирует словарь и, при необходимости, вносит в него изменения.

Например, прежде чем выполнить запрос SELECT * FROM emp, СУБД проверит существует ли таблица с именем emp, а затем прочитает перечень имен столбцов этой таблицы, чтобы заменить им символ *. После этого запрос будет выполнен.

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

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

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

В объектно-реляционной модели могут быть добавлены:

  • объектные таблицы,
  • объектные типы,
  • объектные представления.

Существуют объекты не зависимые или не обязательно зависимые от схемы:

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

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

11.2.1 О структурах словаря

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

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

Таблица 11.1. Некоторые представления словаря Oracle
Название представления Назначение Название столбца Назначение столбца
ALL_TABLES Список таблиц

TABLE_NAME

OWNER

NUM_ROWS

имя таблицы

владелец

количество строк

ALL_VIEWS Список представлений

VIEW_NAME

OWNER

TEXT

TABLE_NAME

имя представления

владелец

текст запроса

имя таблицы

ALL_TAB_COLUMNS Столбцы всех таблиц и представлений

TABLE_NAME

COLUMN_NAME

DATA_TYPE

DATA_LENGTH

DATA_PRECISION

DATA_SCALE

DATA_DEFAULT

NULLABLE CONSTRAINT_NAME

имя таблицы или

представления

имя столбца

тип данных

длина данных

точность

число знаков после десятичной точки

значение по умолчанию

допустимость NULL

имя ограничения

ALL_TRIGGERS Триггеры

OWNER

TRIGGER_NAME

TRIGGER_TYPE

TRIGGERING_EVENT

DESCRIPTION

владелец

название триггера

тип триггера

событие, запускающее триггер

тело триггера

Обратите внимание на то, что в Oracle имя схемы совпадает с именем владельца схемы, так что поле OWNER можно еще читать как СХЕМА.

Метаданные управления доступом к данным также слишком отличаются, чтобы можно было представить какую-то общую структуру.

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