PDA

View Full Version : جدول ارتباط یا کلید خارجی ؟



Direlap
دوشنبه 31 تیر 1392, 16:44 عصر
با سلام

داشتم دیتابیسی طراحی میکردم که این نکته ذهنمو مشغول کرد. یادمه تو درس پایگاه داده خونده بودیم که برای ارتباط جداول با هم دو روش موجوده یا استفاده از کلید خارجی در جدول مورد نظر و یا استفاده از جدول ارتباط.

شما کدومو ترجیح میدین و چه مزایایی این روشتون داره ؟

pakan20009
دوشنبه 31 تیر 1392, 20:10 عصر
سلام
استفاده از کلید خارجی بهتری چون میتوانید روی آن از قوانین انتشار استفاده کنید.

Direlap
سه شنبه 01 مرداد 1392, 00:36 صبح
ممنون

میشه درباره قوانین انتشار یه توضیحی بدین ؟

araelectronic@ymail.com
سه شنبه 01 مرداد 1392, 00:52 صبح
با سلام

داشتم دیتابیسی طراحی میکردم که این نکته ذهنمو مشغول کرد. یادمه تو درس پایگاه داده خونده بودیم که برای ارتباط جداول با هم دو روش موجوده یا استفاده از کلید خارجی در جدول مورد نظر و یا استفاده از جدول ارتباط.

شما کدومو ترجیح میدین و چه مزایایی این روشتون داره ؟

با سلام

ارتباط جداول کلا با کلید خارجی هست. اگر شما جدول رابط هم داشته باشید بازهم رابطه جدول رابط با جداول اصلی با کلید خارجی خواهد بود. ولی اینکه آیا جدول رابط نیاز هست یا نه؟ این موضوع بستگی به تحلیل شما و جداول شما دارد.

Direlap
سه شنبه 01 مرداد 1392, 05:00 صبح
اگر کلا روابط با کلید خارجی پیاده سازی میشن چه نیازی به جدول ارتباط داریم ؟
میشه یه مثال بزنید که از جدول ارتباط استفاده کرده و دیگری از کلید خارجی ؟
اصلا میشه از هرکدوم که خواست استفاده کرد؟ (اگه اینطوره کدوم صحیح تر و بهتره ؟)
یا مثلا کی از کدوم استفاده بکنیم ؟ فقط یه مثال بزنید ابهام بنده رفع میشه

araelectronic@ymail.com
سه شنبه 01 مرداد 1392, 13:45 عصر
با سلام

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

به دو مثال زیر توجه فرمایید:

1- حالتی که نیاز به جدول واسط نیست :
برای یک سال تحصیلی در مدرسه، یک دانش آموز می تواند در یک کلاس حضور داشته باشد. دو موجودیت داریم بنامهای دانش آموز و کلاس.
جدول دانش آموز شامل : نام، کد دانش آموز ، تاریخ تولد،کد کلاس
جدول کلاس: نام، کد کلاس،ظرفیت کلاس

وجود یک فیلد (کد کلاس) بعنوان کلید خارجی برای ارتباط این دو جدول کافی است .

2- حالتی که نیاز به جدول واسط می باشد :

برای یک سال تحصیلی دانش آموز میتواند تعداد متغییر درس را انتخاب کند. دو موجودیت بنامهای دانش آموز و درس را داریم.

جدول دانش آموز شامل : نام، کد دانش آموز ، تاریخ تولد
جدول درس شامل: نام درس، کد درس ، تعداد واحد

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

جدول رابط شامل : کد درس ،کد دانش آموز

این جدول از طریق کلید خارجی کد درس با جدول درس و از طریق کلید خارجی کد دانش آموز با جدول دانش آموز ارتباط دارد و خود نیز بعنوان جدول واسط میان دو جدول عمل میکند.

Direlap
سه شنبه 01 مرداد 1392, 18:50 عصر
واقعا ممنونم از مثال زیبا و کاربردیتون.

1)من به این نتیجه رسیدم که جدول ارتباط در روابط چند به چند نیاز میشه و اگه جداول ما ارتباطی یک به یک یا یک به چند داشته باشند با کلید خارجی ارتباط پیدا می کنند. درسته ؟
2) و اینو نتیجه میگیرم که اگه رابطه جداولمون یک به چنده با کلید خارجی کارمون راه میفته و کلید جدول یک رو در جدول چند میزاریم درسته ؟
3) و اگه ارتباطمون یک به یک هست کلید هردورو تو جداول همدیگه استفاده می کنیم. اینم درسته ؟

araelectronic@ymail.com
سه شنبه 01 مرداد 1392, 20:02 عصر
با سلام

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