Bu makalemde sizlere VeriTabaninda hiyerarsik Kategorilemeyi anlaticam. Yani bir agaç yapisini (Treeview)tabloda nasil tutariz bunu anlaticam. VeriTabani olarak SQL Server kullanicam. Tabi siz istediginiz bir veritabaninda yapabilirsiniz. Öncelikle bir Kategoriler tablosu tasarlayalim asagidaki gibi.

|
CREATE TABLE [dbo].[Kategoriler](
[KategoriNo] [int] IDENTITY(1,1) NOT NULL,
[KategoriAd] [varchar](75) NULL,
[UstKategoriNo] [int] NULL CONSTRAINT [DF_Hiyerarsi_ParentCategoryID] DEFAULT ((0)),
CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED
(
[KategoriNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
|
Yapi nasil isleyecek?
Öncelike bu tabloya bir AnaKategori ekleyecegimiz zaman UstKategoriNo alanina 0 degeri giricez. Diger AltKategorileri girerkende UstKategoriNo alanina, bagli oldugu UstKategorinin KategoriNo alanindaki degeri giricez. Mantik bundan ibarettir.
Daha sonra Kategoriler Tablosuna asagidaki gibi örnek veriler girebilirsiniz.

Simdi yukaridaki tablodaki verileri inceleyecek olursak;
Daha önce dedigim gibi UstKategoriNo alaninda 0 “Sifir” varsa o Kategori, Ana Kategoridir.
Yukaridaki tablodada iki Tane Ana Kategori var.
Bunlar; Bilgisayar ve Kitap Kategorileridir.
Ana Kategori Listesini elde etmek için;
|
select * from Kategoriler where UstKategoriNo=0
|
Kategorinin Alt Kategorisini Elde Etmek için ;

Tabi su an pek kullanisli gözükmüyor. Daha sonra bunun programatik kisimda Treview(Aga Yapisi) Nesnesi üzerinde, Farkli uygulamalarda(Web, Windows) gösterimini anlaticam.