क्लोजर टेबल
ancestor_id descendant_id distance
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
2 3 1
उपयोगकर्ता 10 जोड़ने के लिए, उपयोगकर्ता 3 द्वारा संदर्भित। (मुझे नहीं लगता कि सोच आपको इन दो सम्मिलनों के बीच तालिका को लॉक करने की आवश्यकता है):
insert into ancestor_table
select ancestor_id, 10, distance+1
from ancestor_table
where descendant_id=3;
insert into ancestor_table values (10,10,0);
उपयोगकर्ता 3 द्वारा संदर्भित सभी उपयोगकर्ताओं को खोजने के लिए।
select descendant_id from ancestor_table where ancestor_id=3;
उन उपयोगकर्ताओं को गहराई से गिनने के लिए:
select distance, count(*) from ancestor_table where ancestor_id=3 group by distance;
उपयोगकर्ता के पूर्वजों को खोजने के लिए 10.
select ancestor_id, distance from ancestor_table where descendant_id=10;
इस पद्धति का दोष यह है कि यह तालिका कितनी संग्रहण स्थान लेगी।