خانه / اکسس / ارتباط بین جداول یک بانک اطلاعاتی در Access

ارتباط بین جداول یک بانک اطلاعاتی در Access

ارتباط بین جداول یک بانک اطلاعاتی در Access

 

همانطور که قبلا اشاره شد ، یک بانک اطلاعاتی می تواند شامل بیش از یک جدول باشد. بعضی از جداول موجود در بانک های اطلاعاتی با هم در ارتباط و برخی دیگر ارتباطی با یکدیگر ندارند. برای مثال یک کتابخانه را در نظر بگیرید. برای موجودیت کتاب ، یک جدول برای نگهداری مشخصات کتاب مورد نیاز است.

ارتباط بین جداول یک بانک اطلاعاتی در Access

 

ارتباط بین جداول یک بانک اطلاعاتی در Access

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

ارتباط بین جداول یک بانک اطلاعاتی در Access

 

ارتباط بین جداول یک بانک اطلاعاتی در Access

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

ارتباط بین جداول یک بانک اطلاعاتی در Access

 

ارتباط بین جداول یک بانک اطلاعاتی در Access

همانطور که در بالا مشاهده می کنید نشان داده شده است که هر عضو کدام کتاب را به امانت برده است. ولی نام کتاب و نام عضوی که کتاب را به امانت گرفته در این جدول مشخص نیست. این جدول با جدول مشخصات کتاب دارای فیلد مشترک "کد کتاب" و با جدول اعضا دارای فیلد مشترک "کد اعضا" است. برای بدست آوردن نام کتاب و نام عضوی که ان را امانت گرفته ، نیاز به ایجاد ارتباط بین این جدول با دو جدول دیگر است . در جدول مشخصات کتاب ، فیلد کد کتاب و در جدول مشخصات اعضا فیلد کد اعضا ، دارای مقادیر منحصر به فرد (غیر تکراری) هستند. در حالیکه در جدول کتاب های امانت داده شده (جدول AmanateKetab) این فیلدها می توانند مقادیر تکراری داشته باشند. ارتباط بین دو جدول از طریق فیلد مشترک آنها ایجاد می شود.

 

نکته:  یکی از دو جدول مرتبط که مقادیر فیلد مشترکش غیر تکراری است ، جدول اصلی (والد) و دیگری جدول فرعی (فرزند) نامیده می شود.

 

در این مثال ، جداول مشخصات کتاب و مشخصات اعضا ، جداول اصلی و برای جدول کتاب های امانت داده شده جداول والد محسوب می شوند. و در مقابل جدول کتاب های امانت داده شده ، جدول فرعی (فرزند) می باشند.

 

شرایط مورد نیاز برای ایجاد یک ارتباط عبارتند از:

۱- دو جدول در یک بان اطلاعاتی قرار داشته باشند.

۲- دو جدول دارای فیلد مشترک می باشند که از نظر نوع داده یکسان اند.

۳- فیلد مشترک برقرار کننده ارتباط در جدول پدر باید کلید اصلی باشد یا مشخصه Indexed آن مقدار غیر تکراری و منحصر به فرد (Yes-No Duplicates) باشد.

 

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

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

 

حال میخواهیم به صورت عملی شیوه ارتباط بین جداول را برقرار نماییم.

ابتدا به تب Database رفته و گزینه RelationShip را می زنیم:

ارتباط بین جداول یک بانک اطلاعاتی در Access

پنجره ای باز می شود و از شما می خواهد تا جداولی که می خواهید بین آنها ارتباط برقرار کنید را انتخاب نمایید:

ارتباط بین جداول یک بانک اطلاعاتی در Access

با موس روی همه جداول درگ کرده و با این کار همه آنها انتخاب می شوند. حال Add را می زنیم تا جداول در پنجره Relationship نمایش داده شوند.

ارتباط بین جداول یک بانک اطلاعاتی در Access

 

ارتباط بین جداول یک بانک اطلاعاتی در Access

حال روی Close کلیک کرده تا این پنجره Show Table  بسته شود.

حال برای ساخت یک رابطه ، فیلد کلید اصلی در جدول اصلی را به سمت فیلد مرتبط در جدول فرعی بکشید و رها کنید.مثلا برای ارتباط بین دو جدول TblBooks و AmanateBook ، فیلد BookID موجود در جدول TblBook را درگ کرده و روی فیلد BookID در جدول AmanateBook  رها می کنیم.

ارتباط بین جداول یک بانک اطلاعاتی در Access

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

ارتباط بین جداول یک بانک اطلاعاتی در Access

حال با سه تیک در همین پنجره روبرو می شویم که میخواهیم آنها را شرح دهیم:

ارتباط بین جداول یک بانک اطلاعاتی در Access

 

این سه تیک با عنوان قوانین جامعیت ارجاعی در اکسس (Access) شناخته می شود.

این سه تیک به صورت زیر می باشند:

Enforce Referential Integrity :

مانع ورود مقادیری که در جدول اصلی وجود ندارند به فیلد کلید خارجی (در جدول فرعی) می شود. اگر کاربر کد کتابی را در جدول کتاب های امانت داده شده وارد کند که در جدول مشخصات کتاب موجود نیست ، Access به او اخطار می دهد و مانع اشتباده او می شود.

 

اکسس اجازه حذف رکوردی از جدول اصلی که در جدول فرعی از آن استفاده شده است را به کاربر نمی دهد. مثلا نمی توانید عضوی را از جدول مشخصات اعضا حذف کنید ، در حالیکه کد آن عضو در جدول کتاب های امانت داده شده موجود باشد.

 

 

 اکسس اجازه ویرایش مقدار فیلد مشترک در جدول اصلی (کلید اصلی) را که در جدول فرعی از آن استفاده شده است ، به کاربر نمی دهد. مثلا نمی توانید کد عضوی را از جدول مشخصات اعضا تغییر دهید . در حالیکه کد آن عضو در جدول کتاب های امانت داده شده موجود باشد.

 

اگر کاربر بخواهد اقدام به حذف یا ویرایش تعدادی رکورد در جداول اصلی کند ، Access مانع می شود مگر این که ابتدا در جداول فرعی رکوردهای مرتبط را حذف کرد. برای برداشتن محدودیت ، Access قابلیتی را به نام حذف و بروزرسانی آبشاری دارد که در زیر بررسی می کنیم.

 

Casscade Update / Delete Related Fields :

هنگامی که جامعیت ارجاعی فعال باشد ، می توانید از بروزرسانی و حذف آبشاری نیز استفاده کنید . در بروز رسانی آبشاری ، وقتی که کلید اولیه در جدول اصلی تغییر می کند ، در جدول مرتبط (جدول فرعی) نیز مقدار فیلد خارجی تغییر می کند. همچنین در حذف آبشاری نیز هنگامی که کلید اولیه در جدول اصلی حذف می شود ، در جدول مرتبط (جدول فرعی) نیز مقدار فیلد خارجی حذف می شود.

 

 

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

ارتباط بین جداول یک بانک اطلاعاتی در Access

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

ارتباط بین جداول یک بانک اطلاعاتی در Access

حال زمان برقراری ارتباط بین دو جدول امانات کتاب و اعضا می باشد که مراحل مانند بالا می باشد:

ارتباط بین جداول یک بانک اطلاعاتی در Access

پس از ارتباط بین جداول هنگام باز کردن جداول ، مشاهده می کنید که یک بعلاوه کنار هر رکورد ظاهر شده است:

ارتباط بین جداول یک بانک اطلاعاتی در Access

ارتباط بین جداول یک بانک اطلاعاتی در Access

امیدواریم از این آموزش لذت برده باشید – هدف آموزش.