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

CREATE TABLE "CATALOG3_LEVEL1" (

"ID" INTEGER NOT NULL PRIMARY KEY,

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

);

CREATE TABLE "CATALOG3_LEVEL2" (

"ID" INTEGER NOT NULL UNIQUE,

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

"PARENT_ID" INTEGER NOT NULL REFERENCES "CATALOG3_LEVEL1"("ID"),

PRIMARY KEY("ID","PARENT_ID")

);

CREATE TABLE "CATALOG3_LEVEL3" (

"ID" INTEGER NOT NULL UNIQUE,

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

"PARENT_ID" INTEGER NOT NULL REFERENCES "CATALOG3_LEVEL1"("ID"),

"PARENT_ID2" INTEGER NOT NULL REFERENCES "CATALOG3_LEVEL2"("ID"),

PRIMARY KEY ("ID", "PARENT_ID", "PARENT_ID2")

);

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

Последний из видов иерархии – иерархия с ограниченной вложенностью и ограниченным числом потомков. Многие из реальных задач, встречавшихся мне, в той или иной степени можно было свести к этому виду иерархии. Так, например, наша задача с каталогом библиотеки, хотя в строгом виде и является иерархией с неограниченным числом потомков узла и вложенностью, может быть сведена к рассматриваемому типу иерархии. Вполне можно ограничить количество элементов на одном уровне значением 9 (или другим достаточно большим числом) и 5 уровнями вложенности. Зачем? Затем, что в данном типе иерархии при определенной организации первичного ключа можно существенно упростить работу с иерархией. Для хранения данного вида иерархии можно использовать ранее описанные структуры иерархий с неограниченной вложенностью и количеством потомков и иерархий с ограниченным количеством уровней и неограниченным числом потомков. Однако есть две модификации структур специфичных для данного типа иерархии.

Первый тип приведен ниже:

CREATE TABLE "CATALOG4" (

"ID" DECIMAL(5) NOT NULL PRIMARY KEY,

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

);

Весь фокус в принципе формирования первичного ключа ID. Позиция последнего ненулевого десятичного разряда ключа – это уровень элемента, а цифра в этой позиции – номер элемента на данном уровне. Например, первый элемент первого уровня будет иметь ID = 00001, второй – 00002. На втором уровне третий элемент, имеющий предком первый элемент первого уровня, будет иметь ID = 00031, и т.д. Данная структура хороша при равномерном распределении элементов по уровням. Ее мы назовем структурой с поразрядным ключом. В зависимости от того, справа или слева находится разряд, кодирующий первый уровень, можно выделить структуру с поразрядным правым ключом и структуру с поразрядным левым ключом. В нашем случае я описал правый ключ. Если же максимальное число элементов конечно, но различно для различных ветвей дерева, и хотя бы приблизительно может быть оценено для каждой ветви, можно воспользоваться следующей структурой:

CREATE TABLE "CATALOG5" (

"ID" INTEGER NOT NULL PRIMARY KEY,

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

"PARENT_ID" INTEGER

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