ایجاد ارتباط بین جداول در اکسس و آشنایی با تنظیمات آن
سلام . وقت شما به خیر . به سافت پلاس خوش آمدید . در ادامه مطالب مربوط به آموزش اکسس امروز می خواهیم در مورد ارتباط بین جدول ها در اکسس یا در اصطلاح همان Relationship که موضوع بسیار مهم و کاربردی است صحبت کنیم.
اینکه منظور از ارتباط بین جدول ها در اکسس چیست ؟
اصلا چرا باید بین جدول ها ارتباط برقرار کنیم ؟
با برقراری ارتباط بین جدول ها چه اتفاقاتی قرار است بیفتد؟
و این برقراری ارتباط کجاها و چطوری قرار است به ما کمک کند ؟
البته در این بین کلی نکات و مباحث متعدد دیگری هم وجود دارد که به هر کدام از آنها در جای خودش خواهیم پرداخت .
من علیرضا شهرآئینی هستم و از شما دعوت می کنم که تا انتهای این آموزش همراه من باشید .
فهرست محتوا
چرا باید بین جدول های اکسس ارتباط ایجاد کنیم ؟
حتما می دانید که یکی از مهمترین ویژگی هایی که باعث می شود ما یک بانک اطلاعاتی را کارآمد و حرفه ای بدانیم این است که طراحی آن به گونه ای باشد که در ساختار این بانک اطلاعاتی لازم نباشد که هیچ گونه اطلاعات تکراری وارد کنیم .
خوب برای این کار راههای متعددی وجود دارد که مانع از ورود داده های تکراری در بانک اطلاعاتی خود شوید .
بعنوان مثال وقتی که در یک جدول فیلد مربوط به کد ملی افراد را از نوع کلید اولیه یا همان Primary key قرار می دهید دیگر کاربر قادر به وارد کردن کد های ملی به صورت تکراری نخواهد بود .
یا در موردی دیگر می توانیم با استفاده از کدهای و برنامه نویسی VBA امکانی را فراهم کنیم که کاربر به هیچ وجه نتواند اطلاعات تکراری را در جدول مورد نظر ما وارد کند .
بعنوان مثال یک سری به لینک زیر بزنید .
ممانعت از ورود داده تکراری در فرم اکسس به کمک کدهای VBA
من در مطلب بالا به وضوح راجع به نحوه استفاده از کدهای VBA برای ممانعت از ورود داده های تکراری در اکسس صحبت کرده ام .
اجازه بدهید از همین ابتدا همه چیز را طبق مثال های کاربردی با هم جلو ببریم .
فرض کنید مدرسه ای داریم شامل ۱۰ کلاس درس .
در هر کلاس درس هم ۳۰ دانش آموز داریم .
هر کلاس درس هم قاعدتا یک معلم دارد .
هر دانش آموز باید ۵ کتاب درسی را بخواند شامل ریاضی – فارسی -هندسه-فیزیک و شیمی .
حالا از شما می خواهند که برای این مدرسه در قالب نرم افزار اکسس یک بانک اطلاعاتی تهیه کنید.
خوب در قدم اول باید جدول یا جدول های خودتان را طراحی کنید .
اما فکر می کنید که شما برای این کار به چند تا جدول نیاز دارید ؟
یک جدول ؟ دو جدول ؟ سه جدول و یا بیشتر ؟
بیایید کار را با طراحی یک جدول شروع کنیم و سعی کنیم اطلاعات خود را در همین یک جدول قرار دهیم.
بعنوان مثال به جدول زیر یک نگاهی بکنید .
ما در اینجا یک جدول تهیه کرده ایم و همه اطلاعات خودمان را در داخل آن ریخته ایم .
مسلما این ناشیانه ترین کاری است که می توانیم برای ایجاد بانک اطلاعاتی خود بکنیم .
به این جدول ایرادات متعددی می توان گرفت اما یک نگاهی به فیلد مربوط به عنوانهای درسی بکنید .
ببینید که چند بار اسم هر درس تکرار شده است .
یا نام هر معلم را نگاه کنید .
می بینید که هر معلم چندین و چند بار اسمش تکرار شده است .
حالا شما فکر می کنید که برای اینکه بتوانیم مانع از این تکرارهای بی مورد شویم چکار باید کرد ؟
راه حل ساده است .
این راه حل شامل دو مرحله است .
مرحله اول اینکه اطلاعات را از هم تفکیک کنید و هر کدام از موجودیت ها را در داخل یک جدول جداگانه ذخیره کنید .
در قدم بعدی هم باید به نحوی بین این جدول ها ارتباط برقرار کنید .
اینکه چطور باید این کار ها را انجام بدهید در ادامه با هم بررسی می کنیم .
قدم اول : ایجاد جداول مورد نیاز
خوب به عنوان یک ایده مناسب می توانید هر کدام از موجودیت های بانک اطلاعاتی خودتان را در داخل یک جدول مجزا ذخیره کنید .
بعنوان مثال برای دانش آموزان می توانید یک جدول ایجاد و اطلاعات مربوط به هر کدام از دانش آموزان را در داخل فیلدهای آن ذخیره کنید .
برای معلمان هم می توانید یک جدول مجزا تشکیل و اطلاعات مربوط به هر یک را در داخل آنها ذخیره کنید .
دست آخر هم می توانید اطلاعات مربوط به درس هایی را که هر دانش آموز می خواند را در یک جدول دیگر ذخیره کنید .
حالا شما سه تا جدول دارید که اطلاعات مختلف را در خود ذخیره کرده اند .
اما در عین حال اطلاعاتی که در هر کدام از این 3 تا جدول ذخیره شده همگی در مورد یک موضوع خاص هستند .
حالا اگر بخواهید بدانید که هر دانش آموز چه درسی را با چه معلمی گرفته است، چه کار باید بکنید ؟
یا اگر بخواهید همه دانش آموزانی را که مشغول گذراندن درس ریاضی هستند را مشخص کنید چه باید بکنید؟
از این جهت که اطلاعات مربوط به دانش آموزان در یک جدول و اطلاعات مربوط به درس ها در یک جدول مجزا قرار دارند میتوانید به مشکل بر بخورید .
برای اینکه بتوانید اطلاعات مورد نظر خود را از این جدول ها استخراج کنید باید به نحوی این جداول را به هم مرتبط کنید و یا به اصطلاح به ایجاد ارتباط بین جدول ها در اکسس بپردازید.
وقتی که چند جدول را به هم ارتباط می دهید می توانید فرمی را ایجاد کنید که اطلاعات خود را به جای یک جدول از چندین جدول دریافت کند و یا در مورد گزارش ها و کوئری ها نیز این مطلب صدق خواهد کرد .
اینجا جایی است که کار اصلی شما شروع می شود .
یعنی اینکه چطور می توانید بین جداول مختلف اکسس ارتباط برقرار کنید .
قدم دوم : نحوه ایجاد ارتباط بین جداول در اکسس
در قدم اول و برای توضیح بهتر مطالب دو جدول را در نظر می گیریم .
جدول اول مربوط به اطلاعات دانش آموزان است که در جدولی به نام tblstudent ذخیره کرده ایم .
جدول دوم هم مربوط به اطلاعات درس ها می باشد که در جدولی به نام tbllesson ذخیره کرده ایم ..
حالا می خواهیم بدانیم که هر دانش آموز در حال گذراندن چه درسی می باشد .
برای این کار نیاز به جدول سومی به قرار زیر داریم .
نحوه درج اطلاعات در این جدول به این ترتیب است که ما کد دانش آموز را داریم .
از طرفی هم کد مربوط به درس ها را نیز داریم .
حالا در این جدول فقط کافی است که کد دانش آموز را در فیلد مربوطه وارد کنیم و هر درسی را که دانش آموز انتخاب می نماید را کد مربوط به همان درس را در مقابل کد دانش آموز درج کنیم .
با این کار تا حد زیادی می توانیم به سرعت کار خود اضافه کنیم .
اما اگر بخواهیم از این جدول یک خروجی بگیریم این جدول فقط حاوی یکسری کدها برای دانش آموز و درس ها می باشد و مطمئنا نمی تواند برای ما مفهوم چندانی داشته باشد .
برای اینکه بتوانیم اطلاعات مربوط به نام هر دانش آموز و درس های مربوطه را استخراج کنیم باید اطلاعات مربوط به نام و نام خانوادگی دانش آموز را از جدول tblstudent و اطلاعات مربوط به نام درس ها را از جدول tbllesson استخراج کنیم .
اینجاست که باید به سراغ Relationship یا همان برقراری ارتباط بین جداول خود برویم .
مراحل برقراری ارتباط بین جداول
برای ایجاد ارتباط بین جداول باید مراحل زیر را دنبال کنیم .
۱- اول به سراغ سربرگ Database Tools بروید .
۲- ‘گزینه Relationships را انتخاب کنید .
۳- گزینه show table را انتخاب کنید تا کادری همانند کادر زیر برای شما به نمایش درآید .
۴-از این کادر سه جدول tblstudent و tbllesson و tblunits را انتخاب کنید تا به محیط کاری اضافه شود .
۵- حالا به مرحله اصلی کار می رسیم یعنی برقراری ارتباط بین جدول ها .
اول کار را با دو جدول tblstudent و tblunits شروع می کنیم .
ما در هر دوی این جداول فیلدی داریم تحت عنوان studentid .
اما این فیلد در دو جدول بالا دارای یک تفاوت اساسی هستند .
فیلد tblunits . در جدول مربوط به tblstudent بصورت کلید اولیه تعریف شده است.
اما همین فیلد در جدول tblunits هم وجود دارد .
این به این معنی است که کد دانش آموزی در جدول مربوط به مشخصات دانش آموزان یا همان tblstudent نمی تواند به حالت تکراری وجود داشته باشد .
اما در جدول مربوط به tblunits می تواند چندین و چند بار تکرار شود .
حالا برای برقراری ارتباط بین این دو جدول می توانیم از طریق درگ کردن کلید موس از سمت فیلد studentid به سمت فیلد studentid در جدول tblunits اقدام کنیم .
همانطور که در تصویر بالا می بینید بلافاصله بعد از این کادر پنجره ای تحت عنوان Edit Relation برای ما باز می شود .
ما در این پنجره و با استفاده از گزینه های موجود در آن می توانیم تنظیمات مورد نظر خود را برای برقراری ارتباط بین دو جدول خود اعمال کنیم .
اگر توضیحات بالا برایتان نامفهوم است به خودتان ایراد نگیرید . مطمئنا من خوب توضیح نداده ام . اما یک نگاهی به ویدئوی ابتدای همین صفحه بیندازید آنجا بهتر متوجه موضوع خواهید شد .
تا به همین جا اصل کارتان که همان ایجاد ارتباط بین جدول هاست را انجام دادید .
حالا برگردید به محیط اکسس متوجه می شوید که بین جدول ها ارتباط ایجاد شده و خیلی راحت می توانید کارهای مورد نظر خودتان را بر روی جدول ها انجام بدهید .
اما در پنجره Edit Relationship یک سری تنظیمات دیگری هم وجود دارد که دانستن آنها برایتان کاربردی خواهد بود که سر جای خودش راجع به آنها هم صحبت می کنم .
اما اول برویم ببینیم که چند نوع ارتباط دز اکسس وجود دارد ؟
چند نوع ارتباط در اکسس وجود دارد ؟
توی اکسس 3 نوع ارتباط هست که باید کار با آنها را یاد بگیرید و بدانید که کجا باید از کدام یکی از آنها استفاده کنید .
در ادامه با این 3 نوع آشنا می شویم .
ارتباط نوع اول : ارتباط یک به یک
ارتباط یک به یک وقتی بوجود می آید که از فیلد کلید اولیه در جدول مادر فقط و فقط یک بار در جدول فرزند وجود داشته باشد .
این می شود ارتباط یک به یک . البته کاربرد این نوع ارتباط در دیتابیس ها خیلی کم است اما لازم است که از وجود آنها مطلع باشید .
ارتباط نوع دوم : ارتباط یک به چند
اگر بین دو تا جدول ارتباط برقرار کنیم به نحوی که فیلد کلید اولیه در جدول مادر که قاعدتا غیر تکراری است در جدول فرزند بیشتر از یک بار وجود داشته باشد در این حالت می گوییم که ارتباط بین این دو تا جدول از نوع یک به چند تعریف شده است .
ارتباط یک به چند پر کاربردترین نوع ارتباطها بین جدول ها می باشد .
ارتباط نوع سوم: ارتباط چند به چند
در دو تا ارتباط اول که بررسی کردیم ما فقط با 2 تا جدول سر و کار داشتیم اما اگر بخواهیم یک ارتباط چند به چند داشته باشیم حداقل به وجود 3 تا جدول نیاز داریم .
تنظیمات مربوط به پنجره Edit Relationship
این کادر شامل گزینه های متعددی می باشد که در زیر به هر کدام از آنها می پردازیم .
برای اینکه بهتر بتوانیم این تنظیمات را مورد بررسی قرار دهیم ویدئویی آموزشی در این خصوص تهیه شده است که می توانید آن را در ابتدای همین صفحه مشاهده کنید .
با توجه به موارد مطرح شده در این کلیپ توصیه می شود که حتما از امکانات این پنجره متناسب با نیاز خود استفاده کنید .
آشنایی با قابلیت Inner Join
یکی دیگر از گزینه هایی که در این کادر وجود دارد گزینه inner join است .
در اینجا می خواهیم راجع به این گزینه با هم صحبت کنیم .
خیلی از موارد پیش می آید که ما می خواهیم از چند جدولی که با هم ارتباط برقرار کرده اند یک کوئری تهیه کنیم .
ما برای اینکه بتوانیم سرعت بیشتری به جستجوی خود بدهیم می توانیم به سراغ این گزینه رفته و با تنظیماتی که انجام می دهیم برای اکسس مشخص می کنیم که در بین انبوه اطلاعاتی که در جداول مختلف وجود دارند باید به دنبال چه نوع اطلاعاتی برای ما بگردد .
اگر بر روی دکمه مربوط به inner join کلیک کنید سه گزینه را در اختیار شما قرار می دهد که می توانید از بین این سه گزینه یکی را انتخاب نمایید .
دیدگاهتان را بنویسید