رابطه پایگاه داده چیست؟

فهرست مطالب:

رابطه پایگاه داده چیست؟
رابطه پایگاه داده چیست؟
Anonim

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

چگونه یک کلید خارجی برای ایجاد یک رابطه کار می کند

یک کلید اصلی به طور منحصر به فرد هر رکورد در جدول را شناسایی می کند. این یک نوع کلید کاندید است که معمولاً اولین ستون در جدول است و می تواند به طور خودکار توسط پایگاه داده تولید شود تا از منحصر به فرد بودن آن اطمینان حاصل شود. یک کلید خارجی کلید نامزد دیگری است (نه کلید اصلی) که برای پیوند یک رکورد به داده‌های جدول دیگر استفاده می‌شود.

برای مثال، این دو جدول را در نظر بگیرید که مشخص می کند کدام معلم کدام درس را تدریس می کند. در اینجا، کلید اصلی جدول دوره ها Course_ID است. کلید خارجی آن Teacher_ID است:

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

می توانید ببینید که کلید خارجی در دوره ها با کلید اصلی در Teachers مطابقت دارد:

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

می توانیم بگوییم که کلید خارجی Teacher_ID به ایجاد رابطه بین جداول دوره ها و معلمان کمک کرد.

Image
Image

انواع روابط پایگاه داده

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

یک به یک

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

یک به چند

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

یک مشتری می تواند چندین سفارش را خریداری کند، اما یک سفارش نمی تواند به چندین مشتری مرتبط شود. بنابراین جدول Orders حاوی یک کلید خارجی است که با کلید اصلی جدول مشتریان مطابقت دارد، در حالی که جدول مشتریان هیچ کلید خارجی به جدول Orders ندارد.

خیلی به چند

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

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

چرا روابط پایگاه داده مهم هستند؟

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

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

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

یا شاید تصمیم گرفتیم یک رکورد دوم برای کارمن اضافه کنیم تا 1NF را اعمال کنیم:

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

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

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

توصیه شده: