رفتن به مطلب

راهنمایی در رابطه با "ارتباط جدول ها"


partow

ارسال های توصیه شده

سلام خوبید؟

 

من سه تا جدول دارم ، ولی نمیدونم چطور به هم وصلشون کنم.

 

قضیه از این قراره که :

 

سه جدول اسمشون Table 1 , Table2, Message هستش

 

 

جدول message شامل اینهاست:

MessageId, Message_Text, Message_Title, Message_Type

 

 

که اگر Message_Type مساوی با "خیر" باشه، وصل بشه به جدول Table1 و اطلاعات رو بگیره

و اگر Message_Type مساوی "بله" باشه ، وصل بشه به Table 2 و اطلاعات رو بگیره

 

میشه؟ چطوری؟

 

ممنون میشم کمک بفرمایید :icon_gol::icon_gol::icon_gol::icon_gol:

  • Like 4
لینک به دیدگاه

دورود

 

در مرحله اول که یک فیلد تعریف میکنید مثلا به نام table_id

خب اگر شما پایگاهتون رو از طریق زبان برنامه نویسی مدیریت می کنید به راحتی با چک کردن type و table_id میتونید به table مورد نظرتون دسترسی داشته باشید.

 

ولی تا اونجایی که من اطلاع دارم بدون مدیریت با زبان برنامه نویسی پایگاه شما را به اون صورتی که شما مد نظرتونه نمیشه ساختارشو چید (مثلا اگر type‌ فلان بود به فلان وصل شو)

 

خوشحال میشم با ایده بقیه دوستان هم آشنا بشم ..

موفق باشید :icon_gol:

  • Like 4
لینک به دیدگاه
  • 2 سال بعد...
سلام خوبید؟

 

من سه تا جدول دارم ، ولی نمیدونم چطور به هم وصلشون کنم.

 

قضیه از این قراره که :

 

سه جدول اسمشون Table 1 , Table2, Message هستش

 

 

جدول message شامل اینهاست:

MessageId, Message_Text, Message_Title, Message_Type

 

 

که اگر Message_Type مساوی با "خیر" باشه، وصل بشه به جدول Table1 و اطلاعات رو بگیره

و اگر Message_Type مساوی "بله" باشه ، وصل بشه به Table 2 و اطلاعات رو بگیره

 

میشه؟ چطوری؟

 

ممنون میشم کمک بفرمایید :icon_gol::icon_gol::icon_gol::icon_gol:

 

 

سلام .

می دونم خیلی وقته گذشته از این ماجرا اما به دو دلیل می نویسمش . یکی اینکه ما بکاریم دیگران بخورند.:ws3: و دوم اینکه مثل اینکه یه چیزی کشف کردم.:w02:

 

من خودم تا حالا ۱۰۰ تا دیتابیس طراحی کردم :w02:و تا اونجایی که می دونم همچین چیزی امکان نداره . اصولا تو پایگاه های relational باید رابطه ها قطعی باشه . یعنی یه فیلد فقط می تونه به یه جدول دیگه کلید خارجی داشته باشه. یعنی نه اینکه نتونه داشته باشه ها می تونه دو تا کلید خارجی برای یه فیلد بزاری اما این دو تا با هم and میشن یعنی محتوای اون فیلد هم باید داخل جدول اول باشه و هم جدول دوم . و این مسئله در ۹۹ درصد کاربری ها امکان نداره . البته مشکل اصلی طراحی غلط پایگاه داده ی شما بوده مگر نه نباید همچین اتفاقی پیش میومد. :w000:

اما صبح یه ایده به سرم زد.:vahidrk: خودتون یه نگاه بندازید چون فکر کنم تو این زمینه به کار خیلیا بیاد.

کار ما دو مرحله است اول اینکه یه جدول مجازی میسازیم با کوئری حاصل اجتماع جدول های ۱ و ۲ . به اضافه ی یه فیلد اختیاری که نشون بده از کجا اومده.

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

این کار باعث میشه هر چی داریم بریزیم رو هم دیگه.:gnugghender:

بعدش میاییم جدول پیام ها یا هر جدول اصلی دیگه ای رو با این join می کنیم و نوعشو با مقدار متغیری که به عنوان type بالا اضافه کردیم یکی میزاریم. دیگه بقیش حله.

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

من اینو تست کردم و به قول بچه های stackoverflow:

it works like a charm!!!!:hapydancsmil:

البته هر اختراعی یه سری مشکلاتم داره که اصلا به ما ربطی نداره. :whistle:

اول اینکه در این روش نباید و نمی تونید کلید خارجی تعریف کنید. در نتیجه ممکنه بعدا یه سری گند بزنید تو اطلاعات.:ws52:

دوما اینکه این جور اتصال ها سربار زیادی داره چون دو تا جدولو میریزیم رو هم . در نتیجه اگه جستجوی زیادی دارید از این روش استفاده نکنید.:w16:

سوم اینکه چون کلید خارجی نداریم join کردن سخت تر میشه . در نتیجه روی بهتره حتما id ها رو index گذاری کنید که راحت تر جستجو بشه . البته اگه کلید باشه خودش این کارو می کنه.

امیدوارم به کار بعضیا بیاد این اکتشاف. :5c6ipag2mnshmsf5ju3 ز همین جا این اکتشافو هدیه می کنم به دوست گلم آقا یاسر .:626gdau: البته خانوادمم خیلی زحمت کشیدن همیشه میگفتن چقدر با کامپیوتر بازی می کنی:putertired:(کلا هر کاری کنی همینو می گن)

  • Like 2
لینک به دیدگاه
×
×
  • اضافه کردن...