Dediğim olay
sorun çıkarmaz. Örneğin Donanım kategorisi bilgisayara bağlı ise (yani 1'e bağlı ise) Donanımı alıp bilgisayardan çıkartmak için sadece ana_id'sini değiştireceğiz. Örneğin 0 yaparsak kendisi bir ana kategori olacaktır. Dikkat ederseniz donanımın alt kategorilerine hiçbir işlem yapmadık, çünkü alt kategoriler "donanımın" "id" alanına göreydi. Ne ismiyle ne ana kategorisiyle işimiz yoktu.
Yani; bir kategoriyi başka bir kategoriye bağlamak için sadece "ana_id" değerine bağlamak istediğiniz kategoriyi yazmanız yeterli olacaktır (Eğer ana kategori olacak ise 0 yazılacak.)
Verdiğiniz bağlantıdaki olaya göz ucuyla baktım sanırım sağlı sollu değer vererek aradaki değerlere sahip kayıtları almış. Yani örneğin id'de 1 ile 18 arasında
bilgisayar ürünlerini, 2 ile 4 arası
bilgisayarın donanım kategorileri gibi. Bunları da
SQL deki BETWEEN komutu ile alıyor. Yani tüm
bilgisayar kategorilerini bulmak için 1 ile 18 diyor (1 ile 18'i left ve right sütunlarından buluyor) Yeni kayıt eklenince tabii bu değerleri de genişletmek gerekiyor. Bence daha zahmetli bir yol. Oldukça fazla kategori altında örneğin 1000 tane alt kategori olunca yeni bir kategoriyi araya eklemek için 900 tane kaydı güncellemek gerekecek vs.
Özetlemek Gerekirse:
- Bir kategoride sadece bir üst kategorinin değeri tutulduğu için üst kategoriyi alıp bir yere taşıdığımız zaman alt kategoriler için herhangi bir işlem yapmamız gerekmeyecek.
- Kategori ismi değiştiği zaman herhangi bir
sorun çıkarmayacak (Çünkü bizim işimiz otomatik olarak verilen numarayla)
- İstediğimiz an bir kategoriyi tüm alt kategorileriyle birlikte başka bir kategoriye aktarmak için yapacağımız tek şey "ana_id" alanının güncellemek olacak
- Üstelik bunlar ağaç yapısına hiçbir zarar vermeyecek.