روابط یک به چند در یک پایگاه داده

فهرست مطالب:

روابط یک به چند در یک پایگاه داده
روابط یک به چند در یک پایگاه داده
Anonim

رابطه یک به چند در یک پایگاه داده زمانی اتفاق می افتد که هر رکورد در جدول A ممکن است رکوردهای مرتبط زیادی در جدول B داشته باشد، اما هر رکورد در جدول B ممکن است تنها یک رکورد مربوطه در جدول A داشته باشد.

رابطه یک به چند در پایگاه داده رایج ترین طراحی پایگاه داده رابطه ای است و در قلب طراحی خوب قرار دارد.

پایگاه های داده همچنین می توانند یک رابطه یک به یک و یک رابطه چند به چند را پیاده سازی کنند.

Image
Image

نمونه ای از یک رابطه یک به چند

رابطه بین معلم و دوره هایی که تدریس می کنند را در نظر بگیرید. یک معلم می تواند چندین کلاس تدریس کند، اما این دوره با معلم رابطه یکسانی ندارد.

بنابراین، برای هر رکورد در جدول معلمان، رکوردهای زیادی در جدول دوره ها وجود دارد. این مثال یک رابطه یک به چند را نشان می دهد: یک معلم به چندین دوره.

چرا ایجاد یک رابطه یک به چند مهم است

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

پایبندی به اولین طراحی فرم عادی

شاید جدولی ایجاد کرده باشیم که بخواهیم نام و دروس تدریس شده را در آن ثبت کنیم. ما ممکن است یک جدول معلمان و دوره ها را مانند این طراحی کنیم:

Teacher_ID نام_معلم دوره
Teacher_001 کارمن زیست شناسی
Teacher_002 ورونیکا ریاضی
Teacher_003 خورخه انگلیسی

اگر کارمن دو یا چند دوره تدریس کند چه می شود؟ ما با این طراحی دو گزینه داریم. می‌توانیم آن را به رکورد موجود کارمن اضافه کنیم، مانند این:

Teacher_ID معلم_نام دوره
Teacher_001 کارمن زیست شناسی، ریاضی
Teacher_002 ورونیکا ریاضی
Teacher_003 خورخه انگلیسی

اما، طرح فوق انعطاف ناپذیر است و ممکن است بعداً هنگام درج، ویرایش یا حذف داده ها، مشکلاتی را به همراه داشته باشد. جستجوی داده ها را دشوار می کند.

این طراحی همچنین اولین اصل عادی سازی پایگاه داده، اولین فرم عادی (1NF) را نقض می کند، که بیان می کند که هر سلول جدول باید دارای یک داده مجزا و مجزا باشد.

دومین قانون فرم عادی

یک جایگزین دیگر طراحی ممکن است اضافه کردن رکورد دوم برای کارمن باشد:

معلم_ID معلم_نام دوره
Teacher_001 کارمن زیست شناسی
Teacher_001 کارمن ریاضی
Teacher_002 ورونیکا ریاضی
Teacher_003 خورخه انگلیسی

این رویکرد به 1NF پایبند است، اما هنوز طراحی پایگاه داده ضعیفی دارد، زیرا افزونگی را معرفی می‌کند و می‌تواند یک پایگاه داده بزرگ را به طور غیرضروری منفجر کند. مهمتر از آن، داده ها ممکن است ناسازگار شوند.

مثلا، اگر نام کارمن تغییر کند چه؟ شخصی که با داده‌ها کار می‌کند ممکن است نام خود را در یک رکورد به‌روزرسانی کند و در رکورد دوم نتواند آن را به‌روزرسانی کند.

این طراحی استاندارد فرم دوم عادی (2NF) را نقض می کند، که به 1NF پایبند است و همچنین باید از افزونگی چندین رکورد جلوگیری کند. قانون 2NF با جدا کردن زیرمجموعه‌های داده در چندین جدول و ایجاد رابطه بین آنها به این امر دست می‌یابد.

چگونه یک پایگاه داده با روابط یک به چند طراحی کنیم

برای اجرای یک رابطه یک به چند در جدول معلمان و دوره‌ها، جداول را به دو قسمت تقسیم کرده و با استفاده از یک کلید خارجی به هم پیوند دهید.

در اینجا، ستون دوره را در جدول معلمان حذف کردیم:

معلم_ID معلم_نام
Teacher_001 کارمن
Teacher_002 ورونیکا
Teacher_003 خورخه

و اینجا جدول دوره ها است. توجه داشته باشید که کلید خارجی آن، Teacher_ID، یک دوره آموزشی را در جدول معلمان به معلم پیوند می دهد:

Course_ID نام_دوره Teacher_ID
دوره_001 زیست شناسی Teacher_001
دوره_002 ریاضی Teacher_001
دوره_003 انگلیسی Teacher_003

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

ما می‌توانیم ببینیم که چگونه این طراحی از هر گونه افزونگی احتمالی جلوگیری می‌کند، به معلمان منفرد اجازه می‌دهد چندین دوره را تدریس کنند، و یک رابطه یک به چند را پیاده‌سازی می‌کند.

توصیه شده: