نرمالسازی در مقابل غیرعادیسازی
پایگاه های اطلاعاتی رابطه ای از روابط (جدول مرتبط) تشکیل شده اند. جداول از ستون تشکیل شده است. اگر جداول دو بزرگ باشند (یعنی تعداد ستونهای زیادی در یک جدول وجود داشته باشد)، ممکن است ناهنجاریهای پایگاه داده رخ دهد. اگر جداول دو کوچک باشند (یعنی پایگاه داده از جداول کوچکتر زیادی تشکیل شده باشد)، برای پرس و جو ناکارآمد خواهد بود. Normalization و Denormalization دو فرآیندی هستند که برای بهینه سازی عملکرد پایگاه داده استفاده می شوند. عادی سازی، افزونگی های موجود در جداول داده را به حداقل می رساند. غیرعادی سازی (معکوس عادی سازی) داده های اضافی یا داده های گروهی را اضافه می کند.
Normalization چیست؟
نرمالسازی فرآیندی است که برای به حداقل رساندن افزونگیهای موجود در دادهها در پایگاههای داده رابطهای انجام میشود. این فرآیند عمدتاً جداول بزرگ را به جداول کوچکتر با افزونگی کمتر (به نام "فرم های عادی") تقسیم می کند. این جداول کوچکتر از طریق روابط کاملاً تعریف شده با یکدیگر مرتبط خواهند بود. در یک پایگاه داده به خوبی نرمال شده، هر گونه تغییر یا تغییر در داده ها نیاز به اصلاح تنها یک جدول دارد. فرم نرمال اول (1NF)، فرم دوم عادی (2NF) و فرم عادی سوم (3NF) توسط ادگار اف. کاد معرفی شد. Boyce-Codd Normal Form (BCNF) در سال 1974 توسط Codd و Raymond F. Boyce معرفی شد. فرمهای عادی بالاتر (4NF، 5NF و 6NF) تعریف شدهاند، اما به ندرت مورد استفاده قرار میگیرند.
جدولی که با 1NF مطابقت دارد اطمینان می دهد که در واقع یک رابطه را نشان می دهد (یعنی حاوی هیچ رکوردی نیست که در حال تکرار باشد) و حاوی هیچ ویژگی با ارزش رابطه ای نیست (یعنی.ه. همه صفات باید دارای مقادیر اتمی باشند). برای اینکه یک جدول با 2NF مطابقت داشته باشد، باید با 1NF مطابقت داشته باشد و هر ویژگی که بخشی از هیچ کلید کاندید نیست (یعنی ویژگی های غیر اصلی) باید کاملاً به هر یک از کلیدهای کاندید در جدول بستگی داشته باشد. طبق تعریف Codd، یک جدول به 3NF گفته می شود، اگر و فقط اگر، آن جدول به شکل عادی دوم (2NF) باشد و هر ویژگی در جدول که به یک کلید کاندید تعلق ندارد باید مستقیماً به هر یک بستگی داشته باشد. کلید نامزد آن جدول BCNF (همچنین به عنوان 3.5NF شناخته می شود) برخی از ناهنجاری هایی را که توسط 3NF مورد توجه قرار نمی گیرد، ثبت می کند.
غیر عادی سازی چیست؟
Denormalization روند معکوس فرآیند عادی سازی است. غیرعادی سازی با افزودن داده های اضافی یا گروه بندی داده ها برای بهینه سازی عملکرد کار می کند. حتی اگر اضافه کردن دادههای زائد غیرمولد به نظر میرسد، گاهی اوقات غیرعادیسازی فرآیند بسیار مهمی برای غلبه بر برخی از کاستیهای نرمافزار پایگاهداده رابطهای است که ممکن است جریمههای عملکرد سنگینی را با پایگاههای داده نرمال شده (حتی تنظیم شده برای عملکرد بالاتر) متحمل شود.این به این دلیل است که پیوستن چندین رابطه (که نتایج عادی سازی هستند) برای ایجاد نتیجه به یک پرس و جو می تواند گاهی اوقات بسته به پیاده سازی فیزیکی واقعی سیستم های پایگاه داده کند باشد.
تفاوت بین Normalization و Denormalization چیست؟
– عادی سازی و غیرعادی سازی دو فرآیند کاملاً متضاد هستند.
– عادی سازی فرآیند تقسیم جداول بزرگتر به جدول های کوچکتر است که داده های اضافی را کاهش می دهد، در حالی که غیرعادی سازی فرآیند اضافه کردن داده های اضافی برای بهینه سازی عملکرد است.
– عادی سازی برای جلوگیری از ناهنجاری های پایگاه داده انجام می شود.
– غیرعادیسازی معمولاً برای بهبود عملکرد خواندن پایگاه داده انجام میشود، اما به دلیل محدودیتهای اضافی مورد استفاده برای غیرعادیسازی، نوشتن (یعنی عملیات درج، بهروزرسانی و حذف) میتواند کندتر شود. بنابراین، یک پایگاه داده غیرعادی شده می تواند عملکرد نوشتن بدتری نسبت به یک پایگاه داده عادی ارائه دهد.
- اغلب توصیه می شود که "تا زمانی که درد کند عادی شود، تا زمانی که کار کند غیرعادی کنید".