چهارشنبه, 19 ارديبهشت 1403

 



موضوع: انواع کلید در مدل رابطه‌ای

انواع کلید در مدل رابطه‌ای 9 سال 4 ماه ago #107434

در مدل رابطه ای هیچ دو سطری در جدول نباید مشابه باشند. این در واقع یک ویژگی اساسی جدول است. اگر دو سطر دو نمونه موجودیت متفاوت را دردنیای واقعی نشان دهند به نحوی باید از هم متمایز شوند تا به هر کدام در جدول بتوان جداگانه رجوع کرد. بنابراین حداقل یک مقدار منحصر به فرد باید وجود داشته باشد که باعث متمایز شدن سطرها از یکدیگر شود. ستونی که حاوی این مقدار است کلید نامیده می شود.
کلید داری دو خاصیت را باید دارا باشد؛ منحصر به فرد بودن و غیر تهی بودن(قانون اول جامعیت).
در یک رابطه انواع مختلفی از کلید ممکن است وجود داشته باشد:
* کلید کاندید
* کلید ترکیبی
* کلید اصلی
• کلید خارجی
کلید کاندید
از مجموعه صفات خاصه یک رابطه آنهایی که دارای دو ویژگی زیر هستند به عنوان کلید کاندید (candid key) در رابطه مذکور مطرح می شوند:
* منحصر به فرد و غیر تهی بودن
غیر قابل کاهش بودن، یعنی هیچ زیر مجموعه مناسبی از صفات خاصه تشکیل دهنده کلید، دارای خاصیت منحصر به فرد بودن نباشد.
مثال. شماره دانشجوئی و کد ملی کلیدهای کاندید در جدول مشخصات دانشجو در دانشگاه می توانند باشند.
کلید ترکیبی
کلید ترکیبی (compound key) کلیدی است که از ترکیب چند صفت خاصه ساخته می شود.
مثال. در رابطه دانشجو مجموعه نام و شماره شناسنامه می توانند به عنوان کلید ترکیبی در نظر گرفته شوند.
کلید اصلی
کلید اصلی (primary key)، کلید کاندیدی است که توسط طراح پایگاه داده انتخاب و معرفی می شود. به عبارتی طراح بانک، یکی از کلیدهای کاندید را به عنوان کلید اصلی بر میگزیند.
در تعیین کلید اصلی از بین کلیدهای کاندید باید دو ضابطه زیر را در نظر گرفت:
* اهمیت کلید اصلی نسبت به سایر کلیدهای کاندید در پرس و جوها
کوتاهتر بودن طول کلید کاندید از نظر تعداد بایت
نکته. هر جدول تنها یک کلید اولیه دارد اما به این معنی نیست که تنها یک شناسه منحصر به فرد دارد.
نکته. کلید می تواند صفات طبیعی موجودیت انتخاب شود، ولی اگر هیچ کدام از صفات خاصه مناسب نبودند یک کلید جانشین نسبت داده شود (مانند شماره کارمندی برای جدول کارمند).
نکته. در جدول، زیر کلید اولیه یک خط کشیده می شود.
نکته. اگرچه در مدل رابطه ای کلیه جداول باید دارای کلید اولیه باشند، ولی تعدادی از RDBMS ها اجباری در تعیین کلید برای هر رابطه نمی کنند، در اینصورت ترکیب کلیه صفات خاصه به عنوان کلید درنظر گرفته می شود.
مثال. شماره دانشجوئی در جدول مشخصات دانشجو را می توان به عنوان کلید اصلی انتخاب کرد.
کلید خارجی
کلید خارجی (foreign key) صفت خاصه ای در یک جدول است که در جدول دیگر نقش کلید اصلی یا کاندید را بازی کند. کلید خارجی ارتباط بین دو جدول را برقرار می کند.
کلید خارجی بر خلاف کلید اصلی می تواند تکراری یا null باشد و ممکن است در یک جدول بیشتر از یک کلید خارجی وجود داشته باشد.
جدول شامل کلید خارجی را گاهی جدول فرزند و جدولی که به آن ارجاع دارد را جدول والد می نامند.
مثال. شماره مشتری در جدول SALE کلید خارجی است زیرا در جدول CUSTOMER کلید اصلی است. شماره مشتری که در جدول فروش بدست می آید در جدول مشتری جستجو می شود تا تعیین شود محصول به کدام مشتری فروخته شده است.
خواص مدل
مدل رابطه ای دارای ویژگی های زیر است:
* متداول ترین مدل است
* بر اساس تئوری ریاضی است
• داده ها و ارتباطات بین آنها در پایگاه داده به صورت مجموعه ای از جداول دیده می شود
* هیچ جدولی دارای سطرهای تکراری نیست
* ترتیب سطرها و ستون ها در هر جدول مهم نیست
* ستون ها اتمیک هستند یعنی مقادیر ستون ها غیر قابل تجزیه اند
• هر مقدار که در دو رکورد مختلف واقع می شود رابطه ای را بین دو آن رکورد می فهماند
* ارتباط رابطه ها با یکدیگر از طریق صفات خاصه مشترک انجام می گیرد
• ایجاد، دسترسی و توسعه آن آسان است. بعد از ایجاد پایگاه داده اولیه، جداول جدید می توانند اضافه شوند بدون اینکه نیاز به تغییر کاربردهای موجود باشد
• مدل دید کاربر است نه روشی که داده بطور داخلی سازماندهی می شود
نرمال سازی
نرمال سازی (normalization) با نحوه تقسیم جداول در پایگاه داده رابطه ای سروکار دارد. نرمالسازی فرآیند تغییر ساختار پایگاه داده به منظور اجرای بهتر و راحتی کارکردن با داده است. فرم های مختلف نرمالسازی که روی پایگاه داده اعمال می شوند را فرم های نرمال می نامند.
تبدیل نمودار ER به مدل رابطه ای
هر موجودیت در مدل ER به یک جدول در مدل رابطه ای تبدیل می شود. صفات خاصه موجودیت ستون های جدول و هر نمونه موجودیت سطرهای آنرا را می سازند.
قبل از اینکه فرآیند تبدیل انجام شود باید مطمئن شویم که مدل ER تا حد ممکن ساده شده است.
مثال. موجودیت دانشجو را درنظر بگیرید.
student(student_no, name, address, date_of_birth)

برای تبدیل ارتباط یک به یک به رابطه، با توجه به اختیاری بودن یا اجباری بودن ارتباط، موجودیت ها یا ترکیب می شوند یا کلید اصلی یک موجودیت به عنوان کلید خارجی در دیگری قرار می گیرد.
مثال. ارتباط یک به یک بین موجودیت های کارمند و قرارداد را درنظر بگیرید. هر کارمند یک قرارداد دارد و هر قرارداد مربوط به یک کارمند است.
به رابطه زیر تبدیل می شود:
Employee(emp_no, name, cont_no, start, end, position, salary)

یا می تواند به صورت دو رابطه زیر تبدیل شود:
Employee (emp_no, name, contract_no)
Contract(cont_no, start, end, position, salary)

یا
Employee (emp_no, name)
Contract(cont_no, start, end, position, salary, emp_no)

در تبدیل ارتباط ها یک به چند کلید اصلی موجودیت سمت "یک" به عنوان کلید خارجی در سمت دیگر قرار می گیرد.
مثال. ارتباط یک به چند دانشجو و رشته تحصیلی را درنظر بگیرید:
که به رابطه های زیر تبدیل می شود:
Student(student_no, s_name, address, DateOfBirth, module_no)
Module(module_no, m_name)

در ارتباط چند به چند یک رابطه جدید با کلید های اولیه هر دو موجودیت ساخته می شود.
مثال. ارتباط دانشجو و درس را درنظر بگیرید.
که به رابطه های زیر تبدیل می شود:
Student(student_no, s_name, Address, DateOfBirth)
Course(Course_no, C_name)
Study(student_no, Course_no)
مدير دسترسي عمومي براي نوشتن را غيرفعال كرده.
كاربر(ان) زير تشكر كردند: هانیه سلیمانی
مدیران انجمن: هانیه سلیمانی