در دروس پیشین به طور تدریجی آشنایی نسبتا کاملی با اجزای یک پایگاه داده آشنا شدیم و محیط پنجره Database را به خوبی شناختیم. حال نوبت آن رسیده است که شروع به طراحی کنیم و با دستان قدرتمند خود پایگاه داده زیبایی را خلق کنیم ولی قبل از این کار باید مفهوم ارتباطات بین جداول را بهتر درک کنیم.
در این درس مفهوم ارتباط بین جدول های یک پایگاه داده را بهتر درک خواهیم کرد و روش های مختلف ارتباط را یاد خواهیم گرفت و بدین ترتیب برای ایجاد جداول پایگاه داده خود را آماده تر خواهیم کرد. گاهی دقیقا نمی دانیم که چه نوع داده هایی وارد جدول خواهند شد پس برای رفع این مشکل به تدریج با نظریه طراحی پایگاه داده آشنا می شویم.
درک ارتباط بین جداول:
قبلاً گفته شد که جداول از طریق فیلدهای مشترک به یکدیگر مرتبط هستند. هرچند که فیلدهای مشترک مرتبط شده, سبب تکرار برخی داده ها می شوند.(در هرجدولی که به دیگری مرتبط است خود فیلد مشترک دوباره ظاهر می شود), ولی خواهید دید که وقتی قدام به ایجاد پایگاه داده می کنید, فیلد مشترک کمک می کند تا بسیاری از داده های تکراری, که در صورت نبود فیلد مشترک ایجاد می شود, از بین ببرید.
ممکن است واژه شناسی پایگاه داده ها گیج کننده باشد اما خوشبختانه ساده ترین زبان زبان ارتباطی است, که چگونگی ارتباط جداول به یک دیگر را تعریف می کند. در این درس به سه روش ارتباط خواهیم پرداخت: ۱-ارتباط یک به یک ۲-ارتباط یک به چند ۳-ارتباط چند به چند .
فیلدهای کلیدی منحصر به فرد رکوردها:
قبل از تشریح ارتباطات جداول, دقت داشته باشید که اغلب جداول پایگاه داده, فیلدی به نام فیلد کلید دارند, که به سایر فیلدهای جدول تقدم دارد. هرچند که فیلد کلید ازوما مهم ترین ارزش اطلاعاتی را ندارد, ولی دری هستند برای ورود به جدول که نیاز اصلی ما در ارتباط شمرده می شود.فیلد کلید, فیلدی از جدول است که بصورتی منحصر به فرد هر رکورد را تبیین می کند.(یعنی امکان اینکه فیلد کلید در دو رکورد مانند هم باشند وجود ندارد.)
توجه: فیلد کلید اصلی جدول باید مقداری منحصر به فرد داشته باشد. اکسس امکان تعیین چندین فیلد کلید را می دهد. اگر کلید از چندین فیلد تشکیل شده باشد, یک یا چند تا از این فیلدها ممکن است داده های تکراری داشته باشندولی وقتی ترکیب شوند, فیلد ادغامی باید مقدار منحصر به فردی را ایجاد کند.
توجه بیشتر به این مثال خالی از لطف نیست: جدول کارمندان معمولا شامل فیلدهایی از قبیل نام کارمند, نشانی, تاریخ تولد, میزان حقوق می شود. بعلاوه همیشه مانند کد ملی, یک شماره کارمندی دارند. کد ملی شما منحصر به فرد است یعنی تنها به یک نفر اختصاص دارد بنابراین این شماره کارمندی فیلد کلیدی خوبی برای فایل کارمندان است. به شکل ۶۱ در زیر توجه کنید:

برای دسترسی به نام, نشانی یا حقوق هر کارمند, صرف نظر از تعداد کارمندان جدول اکسس فقط به شماره کارمند احتیاج دارد.هر کارمند شماره منحصر بفردی دارد لذا هنگامی که اکسس یک بار شماره کارمندی را گرفت, می تواند آن را با رکوردی از جدول پیوند دهد, یک بار برای هر رکورد. به ایت ترتیب اکسس می تواند به بقیه داده های رکورد در سایر فیلدها دسترسی داشته باشد.
توجه: اسامی فیلدها کلیدهای خوبی نیستند, چون افراد بسیاری نام یکسان دارندو یا بسیاری از افراد اسامی را به شکل های گوناگون می نویسند. زمانی که یک شرکت به مشتریان, کارمندان و اجناس خود عددی را تخصیص می دهد, احتمالا آن شرکت پروژه هایش را کامپیوتری کرده است. این اعداد می تواند کلید منحصر به فردی برای یافتن بقیه داده های مرتبط با آن باشند.
هم چنین باید به نکته توجه داشته باشید که فیلد کلید همواره فیلد ارتباط دو جدول مرتبط نیست ولی برای این کار بسیار مناسب است و غالبا برای همین منظور به کار می رود.
دو یا چند فیلد نیز می توانند یک کلید منحصر به فرد را تشکیل دهند. اغلب به فیلد کلید, فیلد کلید اصلی گفته می شود. اگر بخواهید که دو یا چند فیلد همراه با یکدیگر به عنوان کلیدی منحصر به فرد عمل کنند, باید اکسس را وادارید تا فیلدهای ادغام شده را به عنوان یک فیلد منحصر به فرد در نظر گیرد. مثلا ممکن است بخواهید که دو فیلد نام خانوادگی و کد پستی را یک دیگر ادغام کنید تا فیلد کلید نحصر به فردی ایجاد شود.
حال که با مفهوم فیلد کلید برای ارتباط آشنا شدید به انواع ارتباط موجود در اکسس می پردازیم:
ارتباطات یک به یک(One to One):
شاید ارتباط یک به یک نادرترین ارتباط ممکن بین جداول باشد. هنگامی که در دو جدول تعداد رکوردها یکسان باشد و هر رکورد یک جدول به رکورد دیگری در جدول دیگر مرتبط باشد, بک ارتباط یک به یک بوجود می آید. ارتباط یک به یک نادرست است چون معمولا می توانید آن دو جدول را در یک جدول ادغام کنید.
در شکل ۶۲ در زیر مثالی از ارتباط یک به یک بین دو جدول نشان داده شده است. فیلد کد کالا کلید و فیلد ارتباط را تشکیل می دهد. نخستین رکورد در نخستین جدول به نخستین رکورد در دومین جدول مرتبط شده است.

خود شرکت ماکروسافت توصیه می کند که از ارتباط یک به یک اجتناب کنید. زیرا بهتر آن است که دو جدول را در یک جدول بزرگ تر ادغام کنید, که این طریقه بسیار کاراتر است. در اکسس هر جدول می تواند تا ۲۵۶ فیلد داشته باشد ولی اگر وجود جدولی با بیش از ۲۵۶ فیلد ضرورت داشته باشد,فقط با ایجاد دو یا چند جدول و برقراری ارتباط یک به یک بین آن ها, قادر به برآوردن این نیاز خواهید بود. که برای این منظور هم ماکروسافت امکانات بسیاری را فراهم آورده است از آن جمله امکان دسترسی سریع به اطلاعات جدول دوم از طریق جدول اول بدون باز کردن آن جدول.
ارتباط یک به چند(One to Many):
ارتباط یک به چند شاید متداول ترین نوع ارتباط بین جداول باشد. این ارتباط زمانی اتفاق می افتد که یک رکورد از جدول به یک یا چند رکورد از جدول دیگر مرتبط باشد. به عنوان مثال در جدول موجودی برای هر کالایی که فروخته می شود, یک رکورد وجود دارد. ولی در جدول سفارشات مشتریان ممکن است برای یک کالا, سفارشات متعددی وجود داشته باشد. در شکل ۶۳ در زیر نمونه ای از ارتباط یک به چند جداول مشاهده می شود.

ارتباط یک به چند صرف جویی زیادی در فضای دیسک را سبب می شود. مثلاً ارتباط یک به چندی که در شکل ۶۳ در بالا نشان داده شد, به شما امکان می دهد تا گزارشی تهیه کنید که شامل مشتری همراه با شرح کالای سفارشی باشد. ولی شرح در هر رکورد سفارش نمی آید. شرح هرکالا در جایی مستقل,در رکوردی منحصر بفرد در فایل موجودی قرار دارد. اکسس می تواند در هنگام نیاز, با استفاده از فیلد ارتباطی مشترک از جدول سفارش در جدول موجودی جستجو کند و شرح کالا را از آنجا بردارد. اکسس بدون فیلد کلید نمی تواند تعیین کند که در برابر هر سفارش چه شرحی را باید قرار دهد.
توجه داشته باشید که اکسس جدول های مرتبط را می شناسدو در موقع لزوم اطلاعات صحیح را از آن ها استخراج می کند. لذا باید هنگام ایجاد پایگاه داده اکسس این ارتباطات را به اکسس بفهمانید تا در هنگام مشاهده و چاپ داده ها از جداول مرتبط اکسس تمام کارها را انجام دهد.
هم چنین قابل ذکر است که ارتباط چند به یک و یک به چند مشابه هستند, لذا هر دو عبارت به یک معنی به کار می روند.
ارتباطات چند به چند(Many to Many):
اکسس ارتباطات چند به چند را مستقیما پشتیبانی نمی کند ولی می توانید آن را شبیه سازی کنید. ارتباط چند به چند هنگامی ایجاد می شود که رکوردهای متعددی از یک جدول به یک یا چند رکورد از جدول دیگر مرتبط باشند. براساس تصاویر جداولی که قبلا مشاهده کرده اید, می توان چنین تصور کرد که خریداران متعددی, محصولات متعددی را سفارش دهند. بنابراین بین خریداران و محصولات یک ارتباط چند به چند وجود دارد.
جدول خریداران و جدول موجودی محصولات از طریق جدول سفارش به هم متصل می شوند.بنابراین برای ارتباط چند به چند بین خریداران و موجودی محصولات, جدول سفارشات به عنوان واسطه بین این دو جدول عمل می کند.جدول خریداران ارتباطی یک به چند با جدول سفارشات دارد و جدول محصولات نیز ارتباطی یک به چند با جدول سفارشات دارد.پس همان طور که در شکل ۶۴ در زیر می بینید جدول سفارشات به طور غیر مستقیم بین خریداران و محصولات ارتباط چند به چند ایجاد می کند.

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