View Full Version : table self referencing
مهدی هادیان2
جمعه 11 مرداد 1392, 17:36 عصر
بسم الله الرحمن الرحيم
با سلام
هر ابزاري شامل تعدادي ابزارهاي جانبي مي باشد. به نظر ميرسد ابزار با ابزار رابطه دارد؛ چگونه ميتوان اين حالت را در پايگاه داده پياده سازي کرد؟
يک وسيله در عين اينکه n وسيله جانبي دارد ميتواند وسيله جانبي n وسيله اصلي ديگر هم باشد.
با سپاس فراوان
ali ghaemi
جمعه 11 مرداد 1392, 20:37 عصر
شما باید یک فیلد در نظر بگیرید که مشخص می کنه این ابزار ، ابزار جانبی کدام ابزار است ... این مثال (http://www.c-sharpcorner.com/blogs/3923/self-join-in-sql.aspx) رو ببینید
108373
محمد سلیم آبادی
جمعه 11 مرداد 1392, 22:47 عصر
سلام
يک وسيله در عين اينکه 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
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.