نمایش نتایج 1 تا 7 از 7

نام تاپیک: پیاده سازی درخت در SQL

  1. #1

    Question پیاده سازی درخت در SQL

    فرض کنین برای تعریف یه موجودیت میخواین جدول طراحی کنین اما این موجودیت میتونه زیر مجموعه داشته باشه و هر کدوم از زیر مجموعه ها مرتبا رشد میکنن... چیزی شبیه درخت در ساختمان داده ها.

    طراحی جدول در SQL برای پیاده سازی درخت پیاده سازی کرد و چطور جدول رو باید پیمایشش کرد؟

  2. #2
    کاربر دائمی آواتار Salah Sanjabian
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مملکتی.......................
    پست
    284

    نقل قول: پیاده سازی درخت در SQL

    سلام. من تنها موردی که تاحالابهش برخورده بودم(البته شبیه این زیاده) ، مربوط به موجودیت درس در یک دیتابیس مدرسه بود.یا همون Rerefrencing
    به این صورت که هر درسی میتونه چند تا پیش نیاز داشته باشه و اون درس هم میتونه باز پیش نیاز درسای دیگه باشه
    به این صورت میشه پیادش کرد

    Id Name Parentid

    به این صورت که id کلید اصلی ماخواهد بود و parent id کلید خارجی ماست که به کلید اصلی همین جدول جاریمون رفرنس پیدا میکنه.که میتونه null باشه.البته اولین رکورد(ریشه) باید parentid ش null باشه چون فعلا رکوردی ثبت نشده

  3. #3

    نقل قول: پیاده سازی درخت در SQL

    خوب اگه هر گره به چند گره دیگه اشاره کنه، نمیشه با این حالت پیمایش کرد.

  4. #4
    کاربر دائمی آواتار Salah Sanjabian
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مملکتی.......................
    پست
    284

    نقل قول: پیاده سازی درخت در SQL

    من دقیقامتوجه منظورتون نمیشم.
    تو اون مثال هر گره ای میتونه چندین زیر گره یاهمون child داشته باشه و خودش هم میتونه child چندین گره باشه
    و میتونید با join همین جدول باخودش کل اطلاعات رو پیمایش کنید

  5. #5

    نقل قول: پیاده سازی درخت در SQL

    سلام رفیق،
    برای ذخیره درخت تو جدول باید یک فیلد ChildID و یک فیلد ParentID داشته باشی بعد یک Join بین ChildID (که کلید اصلی هست) و ParentID (که کلید خارجی هست) ایجاد کنی که به Self Referential Join مشهور هست. بعد توی Application باید به روش بازگشتی درخت رو پیمایش کنی:


     
    private void TraverseNode(TreeNode node)
    {
    foreach nd in node.nodes
    //do what you want
    end loop

    foreach nod in node.nodes
    TraverseNode(nd) // این خط خود تابع را صدا می زند یعنی بازگشتی
    end loop
    }


    تابع بالا شبه کد هست که ابتدا باید گره ریشه رو پاس بدی بقیه Node ها رو خودش پیمایش می کنه.

  6. #6

    نقل قول: پیاده سازی درخت در SQL

    این منطق رو از درس ساختمان داده ها می دونستم. تصور من اینه که SQL قاعدتا توابع خاص خودش رو برای پیمایش درخت داره و میشه با کوئری و Select کردن ها ستونها رو پیمایش کرد. والا احتمالا پیچیدگی الگوریتم بالا در دیتابیس نباید جالب باشه

  7. #7

    نقل قول: پیاده سازی درخت در SQL

    این لینک معادل کد بالا رو با کد SQL پیاده کرده: http://www.codeproject.com/KB/databa...ursiveSQL.aspx

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •