نرمال سازی در DB2
نرمال سازی در DB2 یک تکنیک برای سازماندهی جداول است که از افزونگی و ناسازگاری داده ها جلوگیری می کند . Normalization یک جدول را به جداول کوچکتر تبدیل و با Relationship آن ها را به هم مرتبط می کند.
نرمال سازی سطح ۱:
در این سطح از نرمال سازی در DB2 ، گروه های تکراری را جداسازی می نماییم و برای جدول ۲ قانون اعمال می شود.
- هر Cell از جدول باید تنها یک Value داشته باشد.
- هر رکورد باید در جدول Unique باشد.
به این معنی که باید وقتی تقاطع یک ردیف و ستون را میبینیم، تنها به یک مقدار برسیم که دیگر قابل تجزیه نباشد. یعنی نتوانیم Value کوچکتری از آن جدا کنیم.
برای مثال جدول زیر Normalization نشده است.
Customer’s name | Customer’s city | Customer’s Zip code | Purchased package | Package price |
Mahsa | Tehran | ۱۶۵۸۰۲ | Health books- language DVDs | ۵۰۰$ – ۳۰۰$ |
Ali | Yazd | ۴۵۸۱۰ | Sport training | ۴۵۰$ |
طبق قانون سطح ۱ نرمال سازی در DB2 ، نباید در یک Cell دو مقدار وجود داشته باشد. بنابراین بعد از Normalization جدول زیر به دست می آید.
Customer’s name | Customer’s city | Customer’s Zip code | Purchased package | Package price |
Mahsa | Tehran | ۱۶۵۸۰۲ | Health books | ۵۰۰$ |
Mahsa | Tehran | ۱۶۵۸۰۲ | language DVDs | ۳۰۰$ |
Ali | Yazd | ۲۴۵۸۱۰ | Sport training | ۴۵۰$ |
نرمال سازی سطح ۲:
جهت رسیدن به این سطح از نرمال سازی در DB2 ، همه ی ستون های یک جدول باید به یک کلید وابسته باشند.
وابستگی در اینجا به چه منظور می باشد؟
وابستگی یعنی اگر ما مقدار یک Cell را تغییر دهیم، مقادیر سایر ستون ها هم شامل تغییر می شوند. مثلا در جدول بالا اگر Customer’s name تغییر کند، به دنبال آن Customer’s city و Zip code هم تغییر می کند. پس این دو ستون به Customer’s Name وابسته هستند.
اما Package Price به نام مشتری ارتباط و وابستگی ندارد. وابستگی این ستون به Purchased package می باشد. به عبارتی این جدول دو موجودی جدا دارد که هر کدام ستون های وابسته به خود را دارد.
بنابراین در Normalization سطح ۲ ما این دو موجودی را از هم جدا می کنیم و دو جدول زیر به دست می آید:
جدول ۱:
Customer’s ID | Customer’s name | Customer’s city | Customer’s Zip code |
۱ | Mahsa | Tehran | ۱۶۵۸۰۲ |
۲ | Ali | Yazd | ۲۴۵۸۱۰ |
جدول ۲:
Customer’s ID | Purchased package | Package price |
۱ | Health books | ۵۰۰$ |
۱ | language DVDs | ۳۰۰$ |
۲ | Sport training | ۴۵۰$ |
همانطور که می بینید در جدول ۲ از Primary key جدول ۱ به عنوان Foreign key استفاده شده است و این دو جدول به هم مرتبط شدند.
جهت مطالعه انواع کلید در DB2 اینجا کلیک کنید.
نرمال سازی سطح ۳:
این سطح از نرمال سازی در DB2 ، برای هر Set of Values (مجموعه ای از مقادیر) که می توانند برای چندین رکورد استفاده شوند، یک جدول مجزا می سازد و این جداول را با Foreign key به هم مرتبط می کند.
یعنی وقتی مجموعه ای از پکیج های آموزشی داریم که هر مشتری ممکن است آن ها را خریداری کند و باید داخل ستون Purchased Package وارد شود، باید جهت پکیج ها یک جدول مجزا ساخته شود.
Package ID | package | price |
۱۰۰ | Health books | ۵۰۰$ |
۱۰۱ | language DVDs apoteketgenerisk.com/ | ۳۰۰$ |
۱۰۲ | Sport training | ۴۵۰$ |
حتی میتوانیم این کار را برای Customer’s City هم انجام دهیم.
City ID | City |
۱۰۰۰ | Tehran |
۱۰۰۱ | Yazd |
طبق قوانین نرمال سازی در DB2، در نهایت جدول اولیه ی ما به شکل زیر تغییر می کند.
Customer’s ID | Customer’s city | Purchased Package ID |
۱ | ۱۰۰۰ | ۱۰۰ |
۱ | ۱۰۰۰ | ۱۰۱ |
۲ | ۱۰۰۱ | ۱۰۲ |
محتوای این مقاله برگرفته از مطالب ارائه شده در کتاب “هفت در هفت آموزش DB2” می باشد.
جهت مشاهده اطلاعات و سفارش کتاب “هفت در هفت آموزش DB2” اینجا کلیک کنید.
برای مطالعه بیشتر در خصوص نرمال سازی در DB2 می توانید از منابع زیر به زبان انگلیسی استفاده کنید:
Normalization in database design