PDA

View Full Version : کاربرد ارتباط چند به چند چیست ؟



milad.biroonvand
سه شنبه 25 مرداد 1390, 22:07 عصر
می خواستم بدونم کاربرد ارتباط چند به چند چیه ؟
لطفا با یک مثال ذکر کنید .

Galawij
چهارشنبه 26 مرداد 1390, 10:06 صبح
ارتباط های چند به چند خیلی پر کاربرد هستند، با یک مثال عرض می کنم:
فرض کنید اطلاعات چندین شرکت را در یک جدول نگهداری کرده اید و هر کدام از این شرکت ها چندین نوع شماره تماس داشته باشند، و هرنوع شماره تماس هم می تواند برای چندین شرکت استفاده شود. برای نگهداری این شماره تماس ها ( که ممکن هست نمابر، تلفن ثابت، موبایل و ...) باشند، شما نیاز به یک ارتباط چند به چند دارید. به این صورت که ابتدا در یک جدول انواع شماره تماس ها را نگهداری می کنید و از طریق یک جدول کمکی، کلیدهای اصلی دو جدول قبلی( شرکت ها و انواع شماره های تماس) را وارد این جدول کمکی می کنید.

milad.biroonvand
چهارشنبه 26 مرداد 1390, 17:57 عصر
سلام خیلی خوشحال هستم ، که به این تاپیک پاسخ دادید ، ولی چیزی که شما گفتید ، ارتباط یک به چند بود و همین ارتباط هست که خیلی کاربرد داره .
ما سه نواع ارتباط داریم :
1- رابطه ی یک به یک یا one to one
2- رابطه ی یک به چند one to many
3- رابطه ی چند به چند many to many
یک به یک : رابطه ای بود که کلید اصلی در یک جدول دیگه فقط یکبار تکرار میشه ، که کاربر خاص خودش رو داره .
یک به چند ک یک کلید اصلی در یک جدول دیگه بی نهایت بار تکرا می تونه بشه .
چند به چند : این نوع ارتباط برام تعریف و کاربردش نا مفهومه .
اینصورت که شما گفتید باید ، یک جدول بصورت زیر داشته باشیم .

شرکت دارای فیلدهی زیر باشه
· نام شرکت
· آدرس شرکت
· نوع تلفن شرکت
نوع تلفن شرکت
عنوان نوع
کد نوع

اگر کد نوع در شرکت استفاده بشه ، یک رابطه ی یک به چند بین نوع تلفن و شرکت به وجود میاد ، آیا منظور شما همین بود ؟

linux
چهارشنبه 26 مرداد 1390, 22:51 عصر
فرض کنید افراد شما می توانند گروه بندی شوند و هر کس می تواند در یک گروه یا بیشتر باشد
1- افراد
2- گروه ها
3- افرادگروه
جدول 3 رابطه چند به چند را برقرار می کند.

milad.biroonvand
چهارشنبه 26 مرداد 1390, 23:25 عصر
فرض کنید افراد شما می توانند گروه بندی شوند و هر کس می تواند در یک گروه یا بیشتر باشد
1- افراد
2- گروه ها
3- افرادگروه
جدول 3 رابطه چند به چند را برقرار می کند.

سلام

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

milad.biroonvand
چهارشنبه 26 مرداد 1390, 23:37 عصر
سلام

بازهم بین ، جدول افراد و جدول افراد گروه یک رابطه ی یک به چند و بین جدول گروه و جدول افراد گروه هم یک رابطه ی یک به چند به وجود می آید .
و رابطه ی چند به چندی وجود ندارد .

منظورم از چند به چند این است که اگر دو جدول بنام a و b داشه باشیم .

در جدول a یک کلید اصلی وجود داشته باشد که در جدول b کلید خارجی باشد و
در جدول b یک کلید اصلی وجود داشته باشد که در جدول a کلید خارجی باشد .
در این صورت در هر دو طرف ارتباط یک علامت بی نهایت ظاهر می شود.

فک کنم این منظور چند به چند باشد .

centerpace
پنج شنبه 27 مرداد 1390, 00:14 صبح
با سلام خدمت شما دوست عزیز
اینی که شما گفتین که بین a وb... این مشکل دام حلقه بوجود میاد.که اصلاً منطقی نیستش واسمش رو هم نمیشه چند به چند گذاشت.

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

بهترین نمونه ای که میشه مثال زد انتخاب واحد دانشگاه هستش که درجاهای مختلف دیدیم.که جدول انتخاب واحد شامل فیلدهای(کد دانشجو-کددرس-کداستاد-تاریخ-سال-ترم)هستش.که از ارتباط چندبه چند جداول استاد-دانشجو-درس تشکیل شده است.

linux
پنج شنبه 27 مرداد 1390, 11:38 صبح
سلام

بازهم بین ، جدول افراد و جدول افراد گروه یک رابطه ی یک به چند و بین جدول گروه و جدول افراد گروه هم یک رابطه ی یک به چند به وجود می آید .
و رابطه ی چند به چندی وجود ندارد .
منظورم از چند به چند این است که اگر دو جدول بنام a و b داشه باشیم .
در جدول a یک کلید اصلی وجود داشته باشد که در جدول b کلید خارجی باشد و
در جدول b یک کلید اصلی وجود داشته باشد که در جدول a کلید خارجی باشد .
در این صورت در هر دو طرف ارتباط یک علامت بی نهایت ظاهر می شود.

فک کنم این منظور چند به چند باشد .
منظور شما درست هست ولی نحوه پیاده سازی آن در rdbms های مانند sqlserver و اراکل به همان شکلی هست که گفته شد.
فرض کنید جدولهای زیر موجود باشند
1- افراد که شامل فیلدهای کد فرد(کلید) و نام فرد باشد
2- جدول گروه که دربرگیرنده فیلدهای کد گروه (کلید) و نام گروه باشد
بین این دو جدول یک رابطه چند به چند برقرار هست ولی این رابطه در sql server یا اراکل بصورت توکار امکان پذیر نیست، این امکان به شما داده نشده تا مثلا با یک دستور یک رابطه ی چند به چند بین این دو جدول برقرار کنید.
راه حلی که هست شما یک جدول واسط می گیرد به نام افرادگروه که این جدول شامل دو فیلد هست که هر دوفیلد هم کلید هستند این دو فیلد کدفرد و کدگروه می باشند. سپس بین این جدول و جدول 1 و 2 یک ارتباط یک به چند ایجاد می کنید پس به این صورت شد که جدول 1 با جدول 3 یک ارتباط یک به چند و همینطور جدول 2 با جدول 3 یک ارتباط یک به چند خواهند داشت و دو جدول 1و2 بطور غیر مستقیم یک ارتباط چند به چند دارند.

milad.biroonvand
پنج شنبه 27 مرداد 1390, 13:22 عصر
مر30 ، پس در اصل مثل وراثت چندگانه که در سی شارپ ، وبی و ... با اینترفیس پیاده سازی میشه ، ما در اصل ارتباط چند به چند رو با یک جدول واسط و دو ارتباط یک به چند شبیه سازی کردیم .

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

حالا می دانیم که کاربرد یک به یک در شی گرایی ، پیاده سازی وراثت در sql است ، کاربرد چند به چند در شی گرایی چیه ؟ آیا کاربرد خاصی داره ؟

Galawij
پنج شنبه 27 مرداد 1390, 13:49 عصر
ولی چیزی که شما گفتید ، ارتباط یک به چند بود و همین ارتباط هست که خیلی کاربرد داره . دوست عزیز کجای این ارتباط یک به چند هست؟!
ببینید تحلیل جداول مثالی که من توضیح دادم به این صورت می شود:


جدول شرکت ها (کلید اصلی، نام، تاریخ ثبت و ...)
جدول انواع شماره تماس(کلید اصلی، نوع شماره تماس) مثل: موبایل، ثابت، نمابر و...
جدول شماره های تماس شرکتها( کلید اصلی جدول شرکت ها، کلید اصلی جدول انواع شماره های تماس)

به این صورت یک شرکت چندین شماره تماس دارد و هر نوع شماره تماس برای چندین شرکت استفاده می شود.

m0hammad_01
پنج شنبه 27 مرداد 1390, 15:03 عصر
این تعریفی هستش که تو کتابهای معتبر پایگاه داده مشاهده میشه (ممکن هست دقیقا کلمات همون نباشه اما مفاهیم همونه):
رابطه چند به چند: هر گاه یک سطر از جدول مبدا با چند سطر از جدول مقصد در ارتباط باشد و همینطور یک سطر از جدول مقصد با چند سطر از جدول مبدا در ارتباط باشد.

البته این رو هم باید بگم که یک رابطه چند به چند تو مدل رابطه ای (همین مدلی کا ازش استفاده می کنیم یعنی کار با جداول) قابل پیاده سازی نیست!
و معنیش اینه که یک جدول مفهومی بین این دو جدول ما جا افتاده.که بعضی اوقات بهش جدول کمکی هم می گن!
و رابطه چند به چند ،به دو رابطه یک به چند بین هر جدول ما با جدول کمکی تبدیل میشه که قابل پیاده سازی باشه.