Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Изучение системных свойств символа в диалекте языка ЛИСП(1).doc
Скачиваний:
8
Добавлен:
01.05.2014
Размер:
172.03 Кб
Скачать

Раздел 3

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

Реляционная база данных (РБД) описывает состояние объектов предметной области и связи между ними. Каждый объект характеризуется набором свойств. Любое свойство задается на множестве его допустимых значений, называемом доменом. Объекты, имеющие одинаковые свойства, объединяются в отношение (relation). ОтношениеRстепениnможно определить как подмножество декартова произведенияnдоменов, при условии чтоi-ый домен задает множество допустимых значенийi–го атрибута объекта.

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

Рассмотрим достаточно простой пример описания результатов аэрофотосъемки. Каждый объект в нашем случае будет определяться набором значений его свойств: шифр снимка, экспозиция, тип леса, водоток, крутизна склона. Для удобства рассмотрения примера будем использовать русские буквы в названии атрибутов и их значений. Если при написании программы на определенном диалекте ЛИСПа такой возможности не будет, придется заменить русские буквы на их транскрипцию в латинском алфавите.

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

Табл. 3.1

Шифр

Экспозиция

Тип_леса

Водоток

Крутизна_склона

С20-1

Север

Брусничник

Нет

(2 5)

С20-2

Северо-запад

Брусничник

Есть

(3 5)

С20-3

Восток

Щирокотравный

Нет

(0 0)

С20-4

Юг

Черничник

Нет

(7 9)

3.1. Описание реляционной базы данных с помощью списка свойств символов (Common lisp)

Для того, чтобы запомнить данные табл. 3.1 в виде списков свойств определенных объектов, необходимо дать им имена.

Пусть имена объектов задаются на ЛИСПе в виде списка.

(SETQ PRED ‘(PR1 PR2 PR3 PR4))

Каждый объект соответствует определенной строке таблицы 3.1, в которой записаны значения его свойств. Сопоставим к-ому объекту к-ую строку таблицы для к = 1, 2, 3, 4. Например, для объекта PR4 в четвертой строке таблицы:

Шифр = С20-4

Экспозиция = Юг

Тип_леса = Черничник

Водоток = Нет

Крутизна_склона = (7 9)

Отметим, что значением свойства Крутизна_склона является список, задающий пределы изменения этого параметра.

Теперь произведем обращения к функциям CommonLispдля запоминания списков свойств четырех объектов.

(SETF (GET PR1 ‘шифр) ‘С20-1)

(SETF(GETPR1 ‘экспозиция) ‘север)

(SETF(GETPR1 ‘тип_леса) ‘брусничник)

(SETF(GETPR1 ‘водоток) ‘нет)

(SETF (GET PR1 ‘крутизна_склона) ‘(2 5))

(SETF (GET PR2 ‘шифр) ‘С20-2)

(SETF(GETPR2 ‘экспозиция) ‘северо-запад)

(SETF(GETPR2 ‘тип_леса) ‘брусничник)

(SETF(GETPR2 ‘водоток) ‘есть)

(SETF(GETPR2 ‘крутизна_склона) ‘(3 5))

(SETF (GET PR3 ‘шифр) ‘С20-3)

(SETF(GETPR3 ‘экспозиция) ‘восток)

(SETF(GETPR3 ‘тип_леса) ‘широкотравный)

(SETF(GETPR3 ‘водоток) ‘нет)

(SETF(GETPR3 ‘крутизна_склона) ‘(0 0))

(SETF (GET PR4 ‘шифр) ‘С20-4)

(SETF(GETPR4 ‘экспозиция) ‘юг)

(SETF(GETPR4 ‘тип_леса) ‘черничник)

(SETF(GETPR4 ‘водоток) ‘нет)

(SETF(GETPR4 ‘крутизна_склона) ‘(7 10))

После запоминания начального состояния РБД в виде списков свойств 4 объектов мы можем вывести любой список целиком, обратившись к функции SYMBOL-PLIST. Например,

(SYMBOL-PLISTPR4)

(крутизна_склона (7 10) водоток нет тип_леса черничник экспозиция юг шифр ‘С20-1)