آموزش سیستم مدیریت پایگاه داده - نرمالسازی
وابستگی عملکردی (FD) مجموعهای از محدودیتها بین دو ویژگی در یک رابطه است. وابستگی عملکردی بیان میکند که اگر دو ردیف برای ویژگیهای A1، A2،...، An مقادیر یکسانی داشته باشند، آنگاه این دو ردیف باید برای ویژگیهای B1، B2،...، Bn هم مقادیر یکسانی داشته باشند.
وابستگی عملکردی با نشانهی یک پیکان (→) نشان داده میشود، به عبارتی X→Y، جایی که X به طور عملکردی Y را تعیین میکند. ویژگیهای سمت چپ تعیین کنندهی مقادیر ویژگیهای سمت راست هستند.
اصول Armstrong's
اگر F مجموعهای از وابستگیهای عملکردی باشد، بستهی F، نمایش شده با F+، مجموعهای از تمام وابستگیهای عملکردی است که به منطق به F القا میشوند. اصول Armstrong's مجموعهای از قوانین هستند که هنگام استفاده مکرر، بستهای از وابستگیهای عملکردی را تولید میکنند.
-
قاعدهی بازتابی − اگر آلفا مجموعهای از ویژگیها باشد و بتا زیرمجموعهای از آلفا باشد، آنگاه آلفا بتا را در بر میگیرد.
-
قاعدهی افزایش − اگر a → b برقرار باشد و y مجموعهای از ویژگیها باشد، آنگاه ay → by نیز برقرار است. به عبارت دیگر، افزودن ویژگیها در وابستگیها، تغییر اصلی در وابستگیهای پایهای ایجاد نمیکند.
-
قاعدهی انتقالی − مشابه قاعدهی انتقالی در جبر، اگر a → b برقرار باشد و b → c برقرار باشد، آنگاه a → c نیز برقرار است. a → b به عنوان یک عملکردی که b را تعیین میکند نامیده میشود.
وابستگی عملکردی بیهدف
-
بیهدف − اگر وابستگی عملکردی (FD) X → Y برقرار باشد، جایی که Y زیرمجموعهای از X باشد، آنگاه به آن وابستگی عملکردی بیهدف گفته میشود. وابستگی عملکردی بیهدف همواره برقرار است.
-
غیر بیهدف − اگر یک FD X → Y برقرار باشد، جایی که Y زیرمجموعهای از X نباشد، به آن وابستگی عملکردی غیر بیهدف گفته میشود.
-
کاملاً غیر بیهدف − اگر یک FD X → Y برقرار باشد، جایی که اشتراک بین x و Y برابر با مجموعهی تهی باشد، به آن وابستگی عملکردی کاملاً غیر بیهدف گفته میشود.
نرمالسازی
اگر طراحی پایگاه داده کامل نباشد، ممکن است شامل ناهماهنگیها باشد که برای هر مدیر پایگاه داده، مثل یک رویا بد هستند. مدیریت یک پایگاه داده با ناهماهنگیها تقریباً غیرممکن است.
-
ناهماهنگیهای بهروزرسانی − اگر موارد دادهای منتشر شده و به هم مرتبط نباشند، میتواند منجر به موقعیتهای عجیب شود. به عنوان مثال، وقتی سعی میکنیم یک مورد دادهای را که کپیهای آن در چند مکان پراکنده است بهروز کنیم، برخی از نمونهها بهطور صحیح بهروزرسانی میشوند در حالی که برخی دیگر با مقادیر قدیمی باقی میمانند. این نمونهها پایگاه داده را در حالت ناسازگاری رها میکنند.
-
ناهماهنگیهای حذف − سعی کردیم یک رکورد را حذف کنیم، اما بخشهایی از آن به دلیل بیآگاهی حذف نشدند و دادهها در جایی دیگر ذخیره شدهاند.
-
ناهماهنگیهای درج − سعی کردیم داده را در یک رکوردی درج کنیم که به هیچ وجه وجود ندارد.
نرمالسازی روشی است برای برطرف کردن تمامی این ناهماهنگیها و به حالت سازگاری رساندن پایگاه داده.
اولین فرم نرمال
اولین فرم نرمال در تعریف رابطهها (جداول) خود تعریف شده است. این قاعده مشخص میکند که همه ویژگیها در یک رابطه باید دامنههای اتمی داشته باشند. مقادیر در یک دامنه اتمی واحدهای غیرقابل تقسیم هستند.
ما رابطه (جدول) را به شکل زیر تغییر میدهیم تا به فرم نرمال اول تبدیل شود.
هر ویژگی باید فقط یک مقدار از دامنه تعریف شده خود را داشته باشد.
دومین فرم نرمال
قبل از آنکه درباره دومین فرم نرمال آموزش ببینیم، باید موارد زیر را بفهمیم −
-
ویژگی اصلی − یک ویژگی که بخشی از کلید نامزد است، به عنوان ویژگی اصلی شناخته میشود.
-
ویژگی غیر اصلی − ویژگیای که بخشی از کلید اصلی نیست، به عنوان ویژگی غیر اصلی شناخته میشود.
اگر ما دومین فرم نرمال را دنبال کنیم، آنگاه هر ویژگی غیر اصلی باید به طور کامل بر ویژگی کلید اصلی تابعی باشد. به عبارت دیگر، اگر X → A برقرار باشد، آنگاه برای هیچ زیرمجموعه مناسب Y از X نباید Y → A نیز درست باشد.
ما در اینجا در رابطه Student_Project میبینیم که ویژگیهای کلید اصلی Stu_ID و Proj_ID هستند. طبق قاعده، ویژگیهای غیر کلیدی، یعنی Stu_Name و Proj_Name باید به هر دو و نه به هر کدام از ویژگیهای کلید اصلی بهصورت جداگانه وابسته باشند. اما ما میبینیم که Stu_Name میتواند توسط Stu_ID شناسایی شود و Proj_Name میتواند توسط Proj_ID بهصورت مستقل شناسایی شود. این مسئله به نام وابستگی جزئی است که در دومین فرم نرمال مجاز نیست.
ما رابطه را به دو بخش طبق تصویر بالا تقسیم کردیم. بنابراین هیچ وابستگی جزئی وجود ندارد.
سومین فرم نرمال
برای اینکه یک رابطه به سومین فرم نرمال برسد، باید در دومین فرم نرمال باشد و شرایط زیر را برآورده کند −
- هیچ ویژگی غیر اصلی به صورت ترازگذر بر ویژگی کلید اصلی وابسته نیست.
- برای هر وابستگی تابعی غیر تافه، X → A، آنگاه یا −
- X یک ابرکلید است یا،
- A ویژگی اصلی است.
ما میبینیم که در رابطه Student_detail بالا، Stu_ID کلید و تنها ویژگی اصلی است. ما میبینیم که شهر میتواند توسط Stu_ID و همچنین کد پستی شناسایی شود. هیچ Zip یک ابرکلید نیست و هیچ City یک ویژگی اصلی نیست. به علاوه، Stu_ID → Zip → City است، بنابراین یک وابستگی ترازگذری وجود دارد.
برای به سومین فرم نرمال رساندن این رابطه، ما رابطه را به دو رابطه به شکل زیر تقسیم میکنیم −
فرم نرمال Boyce-Codd
فرم نرمال بویس-کاد (BCNF) یک افزونه از سومین فرم نرمال به شرایط سخت است. BCNF بیان میکند که −
- برای هر وابستگی تابعی غیر تافه، X → A، X باید یک ابرکلید باشد.
در تصویر بالا، Stu_ID ابرکلید در رابطه Student_Detail است و Zip ابرکلید در رابطه ZipCodes است. بنابراین،
Stu_ID → Stu_Name، Zip
و
Zip → City
که نشان میدهد که هر دو رابطه در BCNF هستند.