Реферат: Иерархические структуры данных в реляционных БД

"NAME" VARCHAR(200) CHARACTER SET WIN1251 NOT NULL,

"PARENT_ID" INTEGER

CHECK(

"PARENT_ID" = ANY(SELECT "ID" FROM "CATALOG") or "PARENT_ID" is NULL

),

"LEVEL" INTEGER DEFAULT 1 NOT NULL

);

Структура для хранения иерархии с неограниченным числом уровней вложенности и потомков готова.

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

Ссылка на предка

Информация о первом элементе уровня иерархии

Информация о втором элементе уровня иерархии

Информация о n-ном элементе уровня иерархии, где n – количество максимальное количество потомков

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

В нашем примере мы ограничим количество предков числом 5, тогда SQL-описание таблицы будет выглядеть следующим образом:

CREATE TABLE "CATALOG2" (

"LEVEL" INTEGER NOT NULL,

"OFFSET" SMALLINT NOT NULL CHECK("OFFSET" > 0 and "OFFSET" < 6),

"NAME_1" VARCHAR(200) CHARACTER SET WIN1251,

"NAME_2" VARCHAR(200) CHARACTER SET WIN1251,

"NAME_3" VARCHAR(200) CHARACTER SET WIN1251,

"NAME_4" VARCHAR(200) CHARACTER SET WIN1251,

"NAME_5" VARCHAR(200) CHARACTER SET WIN1251,

"PARENT_LEVEL" INTEGER,

"PARENT_OFFSET" SMALLINT CHECK(("PARENT_OFFSET" > 0 and "PARENT_OFFSET" < 6) or ("PARENT_OFFSET" is NULL)),

CONSTRAINT "PK_CATALOG2" PRIMARY KEY("LEVEL","OFFSET")

);

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

К-во Просмотров: 222
Бесплатно скачать Реферат: Иерархические структуры данных в реляционных БД