# پایگاه‌های داده > SQL Server > T-SQL > تحلیل و طراحی بانک اطلاعات >  شجره نامه خانوادگی!!!

## likemoon

با سلام
من میخوام یه پایگاه داده طراحی کنم .در واقع می خوام یه شجره نامه خانوادگی رو با sqlپیاده سازی کنم . بعد یه محیط گرافیکی کاربر پسند هم طراحی کنم که امکان جستجو از پایگاه دادم توش وجود داشته باشه ، به طوری که با جستجوی نام فرد اطلاعات مربوط به اون از پایگاه داده استخراج بشه و به نمایش در بیاد. 
بعد در قدم اول نمیدونم بهتره که جداولمو رو بر اساس والدین و فرزندان طراحی کنم بهتره یا اینکه تمـــــــــــام اعضای خانواده رو توی یک جدول قرار بدم یا بر اساس جنسیت دو تا جدول بسازم یا چه حالت دیگه ایی؟ :متفکر: 
موارد دیگه ایی هم هست که ایشالا اگه راهنماییم کنید قدم به قدم میپرسمشون

----------


## mohammadian7

سلام من فکر میکنم بعد از ریختن اطلاعات افراد در db مهمترین کار برنامه ساخت مجدد ساختار درختی خانواده یا همون شجره نامه است.
که هر انسان باید یه فیلد یکتا داشته باشه مثل اثر انگشت که در برنامه باید ذخیره بشه.حالا چه جوری میخوای ارتباط انسانها رو مشخص کنی باهم من الان راهکاری پیدا نکردم.

----------


## حمیدرضاصادقیان

سلام.
شما به چند شکل میتوانید این ساختار درختی رو پیاده سازی کنید. 
ولی دو راه که الان راحتتر از همه هستن به این شکل هستن.
یکی اینکه جدول  شما دارای یک فیلد Parent باشه و یک فیلد Child که براساس Id های این دو فیلد مشخص میشه که هرشخصی فرزند چه پدری هست.

راه دوم استفاده از *Hierarchy id* هست که در نسخه 2008 استفاده شده و میتوانید یک فیلد باهمین نوع تعریف کنید.

----------


## AMIBCT

با يه جستجوي ساده اين مورد پيدا شد:

http://www.databaseanswers.org/data_models/genealogy/index.htm

خودتون هم مي‌تونستيد اول جستجو كنيد
اگه به نتيجه نمي‌رسيديد يا با مشكلي مواجه مي‌شديد مي‌پرسيديد

----------


## likemoon

مرسی دوستان
جناب صادقیان فکر میکنم با راه اولی که گفتید افراد زیادی توی دو تا جدول تکرار بشن برتریش نسبت به اینکه همه رو تو یه جدول بریزم چیه؟.از لینک مورد دوم هم که گذاشته بودید متاسفانه چیز زیادی دستگیرم نشد.
بعد یه چیز دیگه من میخوام برای هر نفر فیلد نام فرزندان داشته باشم بعد بعضیا فرزندان زیادی دارن یا ممکنه در آینده پیدا کنن که باید اضافه بشه ولی نمیدونم فیلد ها رو چچوری مشخص کنم مثلا فرزند 1،2.. ؟یا همین طور در مورد اونایی که دو تا همسر داشتن :لبخند گشاده!:  
amibict مدل بسیار جالبی بود ولی نمیدونم میشه با همین کار کرد یا نه.نظرتون راجب این مدلی که ایشون لینک داده چی هست؟

----------


## حمیدرضاصادقیان

در اون لینکی که قرار دادم نحوه پیاده سازی جداول درختی رو با امکانات نسخه 2008 بیان کرده است و این نمونه شما رو باهاش پیاده سازی کرده است.
لینک پست 4 هم جوابگوی شما خواهد بود.

----------


## likemoon

جدول relationship-type توی مدل بالا یعنی چی؟چه اطلاعاتی باید توش قرار بگیره اصلا لزومی داره بودنش؟

----------


## AMIBCT

به نظرم منظورش این بوده که نوع ارتباط بین دو نفر در این جدول ذخیره بشه

مثلا پدر - فرزندی یا مادر - فرزندی یا همسر - همسر یا ...

البته با استفاده از دو کلید خارجی role_type هم می‌شه این موضوع رو متوجه شد
که اگه یه فیلد جدا داشته باشیم محاسبات کم‌تر می‌شه
در تعداد بالا استفاده از جدول role Type خیلی سنگین می‌تونه باشه

----------

