مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

hasan68

عضویت از 1397/12/06

پیاده سازی ارتباط بین چندین درخت

  • یکشنبه 12 اسفند 1397
  • 10:54
تشکر میکنم

سلام خدمت همه عزیزان

در مقاله ای با عنوان «کار با داده های سلسله مراتبی در پایگاه داده» اطلاعات مفیدی در مورد درختها کسب شد، اما مشکل من در مورد ارتباط بین چندین درخت است
مثلا 3درخت داریم (یا سلسله مراتب):

1 - کشور شامل: استانها، شهرهای هر استان، روستاهای هر شهر
2- دولت شامل: رئیس جمهور، وزیر، استاندارها، شهردارها و دهیارها
3 - تجهیزات شامل: تاسیسات گاز، تاسیسات برق، تاسیسات آبرسانی، ایستگاههای پمپاژ و ......

حالا میخواهیم بین این سه درخت ارتباط برقرار کنیم، مثلا شهر x دارای شهردار y و تاسیسات شهری z و w و ... است

نمودار درختی
چه روشهایی برای پیاده سازی بهینه این حالت میشه استفاده کرد

(تنها چیزی که مد نظرم هست ایجاد یک جدول مخصوص ریلیشن بین درختها هست)

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

abbas.aha@gmail.com

عضویت از 1399/03/14

  • چهارشنبه 14 خرداد 1399
  • 19:01

سلام

روشی که ما برای این کار ازش استفاده میکنیم خیلی راحت باهاش بی نهایت زیر شاخه میسازیم!!!

شما یک جدول مثلا به اسم city میسازید، فیلد هاش شامل id, name, parentID و... باید باشه! حالا باید id رو بر روی parentID ایندکس کنید. اونی که شاخه اصلی هست parentID باید NULL باشه و باقی شاخه ها هم ID شاخه مادرشون رو میپذیرند (علت اصلی ایندکس کردن برای این هست که وقتی شاخه ای پاک میشه زیرشاخه های اون هم پاک بشه و رکورد اضافی باقی نمونه)

حالا در قسمت کد نویسی شما ابتدا میاید تمام ردیف ها رو بیرون میکشید و در یک آرایه جدید با این چهار چوب میریزید

foreach ($citys as $item) {
$list[$item['parentID']][$item['id']] = $item;
}

حالا که آرایه جدید براساس parentID مرتب شد باید به وسیله یک تابع بازگشتی که id رو دریافت میکنه و زیرشاخه ها رو در یک temp ذخیره میکنه درخت مورد نظر رو بسازید

 
function city($id,$temp){
global $list;
if(count($list[$id]) > 0){
foreach ($list[$id] as $item) {
if (isset($list[$item["id"]]) && is_array($list[$item["id"]])) {
city($item["id"], $item);
}
}
}
}

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)