Мир InterBase


Рекурсивные хранимые процедуры - часть 2



Создаем одну таблицу GoodsTree, в которой всего 3 поля: ID_GOOD - умн кальный идентификатор категории, ID_PARENT_GOOD - идентификатор кшс гории-родителя для данной категории и GOOD_NAME - наименование катсш- рии. Чтобы обеспечить целостность данных в этой таблице, наложим на эту таблиц} ограничение внешнего ключа: 


ALTER TABLE GoodsTree 

ADD CONSTRAINT FK_goodstree 

FOREIGN KEY (ID_PARENT_GOOD) 

REFERENCES GOODSTPEE (ID__GOOD)


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

Давайте занесем в нашу таблицу следующие данные:

ID_GOOD 


   1 

   2 

   3 

   4 

   5 

   6 

   7 

   8 

   9 

   10 

   11 

   12

 ID_PARENT_GOOD 


   0 

   1 

   1 

   2 

   2 

   4 

   4 

   4 

   5 

   5 

   10 

   10

 GOOD_NAME 


  GOODS

  Бытовая техника 

  Компьютеры и комплектующие

  Холодильники 

  Стиральные машины

  Трехкамерные 

  Двухкамерные 

  Однокамерные 

  Вертикальные 

  Фронтальные 

  Узкие 

  Классические

Теперь, когда у нас есть место для хранения данных, мы можем приступить к созданию хранимой процедуры, выполняющей вывод всех "окончательных" категорий товаров в "развернутом" виде - например, для категории "Трехкамерные" полное имя категории будет выглядеть как "Бытовая техника Холодильники Трехкамерные".




Начало  Назад  Вперед