یک وابستگی کامل کارکردی، وضعیت نرمال سازی پایگاه داده است که به استاندارد عادی فرم دوم عادی (2NF) معادل است. به طور خلاصه، این به این معنی است که آن را مطابق با الزامات فرم اول Normal (1NF)، و تمام ویژگی های غیر کلید به طور کامل به طور کلیدی به کلید اولیه بستگی دارد.
این به همان اندازه پیچیده نیست که ممکن است صدایی باشد. بیایید به جزئیات بیشتری نگاه کنیم.
خلاصه ای از فرم طبیعی اولیه
قبل از اینکه پایگاه داده بتواند به طور کامل وابسته به عملکرد باشد، ابتدا باید با فرم اول Normal مطابقت داشته باشد.
همه این بدان معنی است که هر ویژگی باید دارای یک مقدار واحد اتمی باشد.
به عنوان مثال، جدول زیر با 1NF منطبق نیست ، زیرا کارمند تینا به دو محل متصل است، هر دو آنها در یک سلول واحد:
کارمند | محل |
---|---|
جان | لس آنجلس |
تینا | لس آنجلس، شیکاگو |
اجازه دادن به این طراحی می تواند به طور منفی بر روی به روز رسانی ها و یا داده ها تاثیر می گذارد. برای اطمینان از انطباق 1NF، جدول را تغییر دهید تا تمام صفات (یا سلولهای ستون) یک مقدار واحد را نگه دارند:
کارمند | محل |
---|---|
جان | لس آنجلس |
تینا | لس آنجلس |
تینا | شیکاگو |
اما 1NF هنوز برای جلوگیری از مشکلات با داده ها کافی نیست.
چگونه 2NF برای تأمین وابستگی کامل کار می کند
برای اینکه به طور کامل وابسته باشد، تمام ویژگی های کلیدی غیر نامزد باید به کلید اولیه بستگی دارد. (به یاد داشته باشید که یک ویژگی کلید نامزد هر کلید (مثلا کلید اصلی یا خارجی) است که به طور منحصر به فرد یک رکورد پایگاه داده را شناسایی می کند.
طراحان پایگاه داده برای توصیف روابط وابسته بین صفات از یک علامت استفاده می کنند:
اگر صفت A ارزش B را تعیین می کند، ما این را A -> B می نویسیم، به این معنی که B بطور کاربردی وابسته به A است. در این رابطه، A مقدار B را تعیین می کند، در حالی که B به A بستگی دارد.
به عنوان مثال، در جدول زیر کارمندان ، کارمندان EmployeeID و DeptID هر دو کلید نامزد هستند: EmployeeID کلید اصلی جدول است در حالی که DeptID یک کلید خارجی است.
هر ویژگی دیگر - در این مورد، EmployeeName و DeptName - باید به کلید اولیه بستگی دارد تا ارزش آن را بدست آورد.
کارمند | نام کارمند | DeptID | نام DeptName |
---|---|---|---|
Emp1 | جان | Dept001 | دارایی، مالیه، سرمایه گذاری |
Emp2 | تینا | Dept003 | حراجی |
امپراطوری | کارلوس | Dept001 | دارایی، مالیه، سرمایه گذاری |
در این مورد، جدول به طور کامل وابسته نیست، زیرا درحالیکه EmployeeName به کلید Key EmployeeID بستگی دارد، DeptName به جای DeptID بستگی دارد. این وابستگی جزئی است .
برای اینکه این جدول مطابق با 2NF باشد، باید داده ها را به دو جدول تقسیم کنیم:
کارمند | نام کارمند | DeptID |
---|---|---|
Emp1 | جان | Dept001 |
Emp2 | تینا | Dept003 |
امپراطوری | کارلوس | Dept001 |
ما ویژگی DeptName را از جدول Employers حذف می کنیم و یک جدول جدید ایجاد می کنیم. Departments :
DeptID | نام DeptName |
---|---|
Dept001 | دارایی، مالیه، سرمایه گذاری |
Dept002 | منابع انسانی |
Dept003 | حراجی |
در حال حاضر روابط بین جداول به طور کامل وابسته است، یا در 2NF.
چرا وابستگی کامل مهم است
وابستگی کامل بین ویژگی های پایگاه داده به اطمینان از اطمینان از اطمینان و جلوگیری از ناهنجاری های داده ها کمک می کند.
برای مثال جدول را در بخش بالا در نظر بگیرید که تنها به 1NF بستگی دارد. در اینجا این است، دوباره:
کارمند | محل |
---|---|
جان | لس آنجلس |
تینا | لس آنجلس |
تینا | شیکاگو |
تینا دو رکورد دارد اگر ما بدون درک اینکه دو وجود دارد، یک نتیجه به وجود می آید، نتیجه داده های متناقض خواهد بود.
یا اگر ما می خواهیم یک کارمند را به این جدول اضافه کنیم، اما هنوز مکان را نمی دانیم؟ ممکن است ما حتی اجازه اضافه کردن یک کارمند جدید را ندهیم اگر ویژگی Location به مقادیر NULL اجازه نمی دهد.
وابستگی کامل کل تصویر نیست، با این حال، زمانی که آن را به نرمال می آید. شما باید مطمئن شوید که پایگاه داده شما در فرم عادی سوم (3NF) است.