سلام
يک وسيله در عين اينکه n وسيله جانبي دارد ميتواند وسيله جانبي n وسيله اصلي ديگر هم باشد.
در این حالت یک درخت معمولی نمیتونه نیازتون رو برطرف کنه چون یک وسیله جانبی میتونه n والد داشته باشه. در درخت یک گره فقط یک پدر داره.
پس نیاز به ساختاری گراف مانند داریم. که پیاده سازیش با درخت معمولی متفاوت هست.
شما نیاز به دو جدول دارید یکی جدول گره ها که کد و مشخصاتشان را می نویسید و جدول دیگر برای مشخص کردن ساختار گراف. این گراف دارای دو ستون اساسی هست که کد گره فرزند و کد گره والد را باید مرتبط کنید به جدول گره ها تا گره ای خارج از گره هایی که تعریف کردین ثبت نشه.
ضمنا بسته به نیازتون یکسری قیود هم لازمه مثلا یک گره همزمان پدر و فرزند نباشه. یا وقتی که همزمان یک گره والد و فرزند یک گره دیگر نباشه و از این دست قیود...
a b c
\ | /
\ | /
\|/
d
/|\
/ | \
/ | \
e f g
row_id |child |parent
1 a null
2 b null
3 c null
4 d a
5 d b
6 d c
7 e d
8 f d
9 f d
راستی برای گرفتن انواع query باید دست به دامن recursive cte شد.
پ.ن
عنوان تاپیکتان را نیز اصلاح کردم به جای relationship بهتره بنوسید referencing