Реляционная база данных Назад В начало Вперед

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

База данных состоит из двухмерных таблиц (отношений). Каждая таблица задает некоторый класс объектов из прикладной области. Таблица содержит один или несколько столбцов, называемых полями или атрибутами таблицы БД. Набор полей задается при описании таблицы и определяет характеристики хранимых объектов.

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

Строки в реляционной базе данных расположены в произвольном порядке. Все операции определяются только логикой, а не положением строки в таблице. Например, можно запросить все строки, где (x=3), и невозможно запросить первую, третью или пятую строку.

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

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

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

set type
  (
	tNRec = COMP // Тип описания GUID записи таблицы
	...
 );
create table ...
  (
	NRec	 : tNREC  "Номер записи",
	<прикладные поля>
  )
 with index
  (
	PrjMaterials0  = NRec (unique, surrogate, journal),
	...
  );

Все таблицы БД можно разбить на три группы:

Исходно таблицы БД создаются при компиляции описания БД. Если в дальнейшем потребуется изменить состав или структуру таблиц БД, это можно будет сделать с помощью оператора alter table языка VIP. При этом вновь созданные поля в существующих записях заполняются значениями по умолчанию (ноль для числовых, пробел для текстовых, неопределенное значение для дат и времени).

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

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