نرمال سازی پایگاه داده یعنی فرآيند سازماندهی داده در پايگاه داده بطور کارآمد است. نرمال سازی روشی برای طراحی جداول پايگاه داده است و داده ها را به روشی ساماندهی می کند که باعث کاهش افزونگی داده و رفع مشکلات ساختاری و آنومالی شود. هدف از نرمال سازی حذف افزونگی داده و باقی نگهداشتن وابستگی بين داده های مرتبط است. به اين طريق اندازه پايگاه داده را کاهش داده و ذخيره منطقی داده را تضمين می کند.
نرمال سازی پایگاه داده چیست؟
مفهوم نرمال سازی پايگاه داده اولين بار توسط Edgar Frank Codd معرفی شد. فرآيند نرمال سازی شامل ايجاد جداول و برقراری ارتباط بين آنها طبق قواعد معين است و روی وابستگیهای ستونهای جدول تمرکز دارد. اين فرآيند اغلب باعث ايجاد جداول بيشتر میشود ولی با وجودي که اثر تکرار داده درون پايگاه داده را دارد باعث افزونگی غير ضروری داده نمیشود. هدف از نرمالسازی تضمين اين است که ستونهای غير کليدی در هر جدول مستقيماً وابسته به کل کليد باشند و به اين ترتيب حذف وابستگیهای ناسازگار، کاهش افزونگی، آنومالی کمتر و بهبود کارائی را نتيجه میدهد.
فرم های نرمال در پایگاه داده
تئوری پايگاه داده درجه نرمال سازی جدول را با اصطلاح فرمهای نرمال (normal form) شرح میدهد. فرم های نرمال (يا بطور خلاصه NF) معياری برای تعيين درجه نرمال جدول دراختيار میگذارد. فرمهای نرمال جداگانه روی هر جدول میتوانند بکار بروند. پايگاه داده زمانی در فرم نرمال n خواهد بود که کل جداول آن در فرم نرمال n باشند. فرمهای نرمال عبارتند از:
- First Normal Form) 1NF)
- Second Normal Form) 2NF)
- Third Normal Form) 3NF)
- Forth Normal Form) 4NF)
- Boyce/Codd Normal Form) BCNF)
- Fifth Normal Form) 5NF)
- Domain/Key Normal Form) DKNF)
اگر فرم اول نرمال در جدولی مشاهده شود اصطلاحا آنرا در فرم اول نرمال (1NF) مینامند. اگر سه فرم اول نرمال ديده شود آن را در فرم سوم نرمال (3NF) درنظر میگيرند. جدولی که دارای فرم نرمال درجه بالاتر باشد فرمهای نرمال درجه پائينتر را هم دارا میباشد. بنابراين مثلا اگر جدولی 3NF باشد 2NF و 1NF هم هست. ولی عکس اين صحت ندارد. توجه داشته باشيد که نرمال سازی يک فرآيند تکراری نيست. يک جدول ممکن است در يک مرحله به فرم سوم نرمال دربيايد. بعلاوه اگر 3NF باشد به احتمال بسيار زياد 5NF هم خواهد بود.
فرم نرمال هريک باعث کاهش بيشتر افزونگی و تقسيم جداول به واحدهای کوچکتر میشوند. سه فرم اول نرمال (1NF، 2NF و 3NF) در ابتدا توسط Codd تعريف شد که به طور خلاصه وابستگی صفات خاصه غير کليد را به کليد الزام میکنند. فرمهای چهارم و پنجم (4NF و 5NF) با ارتباطات چند به چند و يک به چند بيت صفات خاصه سروکار دارند. دو فرم ديگر هم وجود دارد که کاملا با اين جريان جور نمیشوند که BCNF و DK/NF هستند. جهت آشنایی با پایگاه داده و داشتن ارائه در این زمینه به فایل موجود در لینک زیر مراجعه کنید.
نرمال سازی First Normal Form) 1NF)
يک جدول در فرم اول نرمال (1NF) است اگر و فقط اگر فاقد گروه داده تکرار شونده باشد. به عبارت ديگر هر ستون در جدول دارای مقدار اتميک باشد. در مدل رابطهای هر جدولی حداقل در فرم اول نرمال هست زيرا از الزامات مدل اين است که هر جدول شامل دقيقا يک مقدار برای هر صفت خاصه باشد که اصطلاحا “فاقد گروه تکرار شونده” گفته میشود.
نرمال سازی Second Normal Form) 2NF)
يک جدول در فرم دوم نرمال (2NF) است اگر اولا 1NF باشد و ثانيا کليه ستونهای غيرکليد با کليد اصلی وابستگی تابعی کامل داشته باشند. ستون Y با ستون X در يک رابطه وابستگی تایعی (functional dependency) دارد اگروفقط اگر به ازای هر مقدار در X دقيقا يک مقدار در Y متناظر با آن وجود داشته باشد. که به صورت X→Y نشان داده میشود.
نرمال سازی Third Normal Form) 3NF)
يک جدول در فرم سوم نرمال (3NF) است اگر اولا 2NF باشد، ثانيا کليه صفات خاصه غير کليد در جدول با کليد اصلی وابستگی تابعی غير تعدی داشته باشند. وابستگی تعدی (transitive dependency) يک وابستگی تابعی غير مستقيم است که در آن X→Z است اگر X→Y و Y→Z باشد.
در فرم سوم نرمال کليه ستونهای جدول مستقيما توسط کليد اصلی مشخص میشوند. با حذف فيلدهائی که وابستگی مستقيم با کليد ندارند به فرم سوم نرمال میرسيم. برای اين کار گروهی از ستونهای جدول را که مقدارشان برای بيش از يک رکورد تکرار میشود را در جدول جداگانهای قرار دهيد.
نرمال سازی Forth Normal Form) 4NF)
يک جدول در فرم چهارم نرمال (4NF) است اگر اولا 3NF باشد، ثانيا هيچ ستونی در جدول وابستگی چند مقداری نداشته باشد. وابستگی چندمقداری (multivalued dependency) به اين معنی است که حضور رکوردهای معينی در جدول وجود رکوردهای معين ديگری را برساند.
مثال عملی نرمال سازی پایگاه داده
فرض کنید یک فروشگاه رسانههای تصویری یک بانک اطلاعاتی از فیلمهای اجارهای را ذخیره میکند. بدون هرگونه نرمال سازی ، تمام اطلاعات مطابق شکل زیر در یک جدول ذخیره میشوند.

در اینجا میبینید ستون نام فیلم دارای مقادیر مختلفی است.
فرم های نرمال پایگاه داده
حال به فرم نرمال سازی 1NF می رویم.
قوانین فرم نرمال سازی First Normal Form) 1NF)
- هر سلول جدول باید دارای یک مقدار واحد باشد.
- هر رکورد باید منحصر به فرد یا unique باشد.
جدول فوق در 1NF:
مثال 1NF

قبل از هر چیز چند نکته را باید درک کنیم.
کلید چیست؟
کلید یا KEY یک مقدار است که برای شناسایی یک رکورد در یک جدول به صورت منحصر به فرد استفاده میشود. یک کلید میتواند یک ستون یا ترکیبی از ستونهای متعدد باشد.
- توجه: ستونهای جدول که برای شناسایی یک رکورد به طور منحصر به فرد استفاده نمیشوند ، ستونهای غیر کلیدی نامیده میشوند.
کلید اصلی یا Primary Key چیست؟
کلید اصلی یک مقدار ستون واحد است که برای شناسایی یک رکورد پایگاه داده به صورت منحصر به فرد استفاده میشود که خصوصیات زیر را دارد:
- یک کلید اصلی نمیتواند NULL یا تهی باشد.
- مقدار اصلی کلید باید منحصر به فرد باشد.
- مقادیر اصلی کلید به ندرت تغییر مییابد.
- با وارد کردن یک رکورد جدید ، به کلید اصلی باید مقداری داده شود.
کلید مرکب یا Composite چیست؟
یک کلید مرکب یا کامپوزیت یک کلید اصلی است که از ستونهای مختلفی تشکیل شده است که برای شناسایی یک رکورد به صورت منحصر به فرد استفاده میشوند.
در بانک اطلاعاتی ما ، دو نفر با نام سحر عبادی داریم، اما آنها در جاهای مختلف زندگی میکنند.

از این رو ، ما به نام کامل و آدرس نیاز داریم تا یک رکورد را بطور منحصر به فرد شناسایی کنیم. این یک کلید مرکب است.
قوانین نرمال سازی Second Normal Form) 2NF)
- قانون 1 : در 1NF باشد
- قانون 2 : کلید اصلی تک ستونی
واضح است که ما نمی توانیم به جلو حرکت کنیم تا بتوانیم بانک اطلاعاتی ساده خود را در فرم نرمال سازی 2NF ایجاد کنیم مگر اینکه جدول فوق را تقسیم کنیم.

جدول 1NF ما به دو جدول تقسیم شده است. جدول 1 و جدول 2. جدول 1 حاوی اطلاعات عضو است. جدول 2 حاوی اطلاعاتی درباره فیلم های اجارهای است.
ستون جدیدی به نام شماره مشتری را معرفی کردهایم که کلید اصلی جدول 1 است. سوابق با استفاده از شناسه عضویت میتوانند منحصراً در جدول 1 مشخص شوند.
کلید خارجی یا Foreign Key چیست؟
در جدول 2 بالا شماره مشتری یک کلید خارجی است. کلید اصلی خارجی کلید اصلی جدول دیگری را ارجاع میدهد یعنی به اتصال جداول شما کمک میکند.
- یک کلید خارجی میتواند از کلید اصلی خود نام دیگری داشته باشد.
- این اطمینان حاصل میکند که ردیفها در یک جدول دارای سطرهای مربوطه در دیگری هستند.
- بر خلاف کلید Primary، آنها منحصر به فرد نیستند. اما اغلب آنها اینگونه نیستند.
- کلیدهای خارجی می توانند تهی باشند.

قوانین فرم نرمال سازی (3NF (Third Normal Form
- قانون 1 : در 2NF باشد.
- قانون 2 : هیچ وابستگی عملکردی انتقالی ندارد.
برای انتقال جدول 2NF ما به 3NF ، باید دوباره جدول خود را تقسیم کنیم.

ما دوباره جداول خود را تقسیم کرده ایم و یک جدول جدید ایجاد کرده ایم که در آن نوع جنسیت ها ذخیره می شود. هیچ وابستگی عملکردی انتقالی وجود ندارد ، و از این رو جدول ما در 3NF است. در جدول 3 شناسه سلامتی کلید اصلی است ، و در جدول 1 شناسه سلامتی کلید اصلی اصلی در جدول 3 است.
اکنون نمونه کوچک ما در سطحی است که بیشتر برای دستیابی به اشکال بالاتر عادی سازی قابل تجزیه نیست. در واقع ، اینک در اشکال نرمال سازی بالاتر قرار دارد. تلاش های جداگانه برای انتقال به سطوح بعدی نرمال سازی داده ها معمولاً در پایگاه های داده پیچیده مورد نیاز است. پاورپوینت ایجاد فرم ورود با PHP توسط مجموعه آموزشی پی استور تهیه و در قالبی آکادمیک طراحی شده که مناسب برای ارائه شما عزیزان میباشد جهت دسترسی به لینک زیر مراجعه کنید.
معایب نرمال سازی
نرمال سازی پایگاه داده تکنيک مهمی برای طراحی پايگاه داده های کارآمد است اما در ضمنی که افزونگی داده را کاهش می دهد سبب کاهش اجرای سيستم می شود. درجات بالای نرمال معمولا جدوال بيشتر را می طلبند. برای پاسخ به پرس و جوها گاهی بايد کليه جداول تقسيم شده دوباره با هم الحاق شوند که در کاربردهائی که زمان پاسخ مهم است (نظير وب) مطلوب نيست.
بالاترين سطح نرمال سازی با توجه به عمليات کاربردی درنظر گرفته می شود. در پايگاه داده هايی که بيشتر خواندنی هستند و افزونگی داده در آنها مشکل حادی نيست، مانند داده های کاتالوگ يک سايت تجارت الکترونيکی، می توان سطح نرمال سازی را کاهش داد. به اين عمل denormalization می گويند. از طرف ديگر در کاربردهایی که درگير داده های مهم مانند داده های مالی هستند که دائما در حال تغييرند و بايد سازگار باقی بمانند، احتمالا سعی می شود به سطوح بالاتر نرمال برسند حتی اگر سرعت پايگاه داده کم شود.
گاهی با توجه به وضعيت ممکن است داده ها از چند پايگاه داده نرمال شده استخراج شوند و در يک انبار داده غير نرمال قرار گيرد. اين روش برای مخزن داده Data warehouse استاندارد خوبی است.
سخن آخر درمورد نرمال سازی پایگاه داده
نرمالسازی پایگاه داده فرآیندی بنیادین در طراحی بانکهای اطلاعاتی است که با هدف کاهش افزونگی داده، جلوگیری از بروز آنومالیها و حفظ یکپارچگی و وابستگی صحیح بین دادهها انجام میشود. این مفهوم که نخستینبار توسط ادگار کاد مطرح شد، بر پایه تحلیل وابستگیهای تابعی میان ستونها شکل گرفته و با تقسیم منطقی جداول، ساختاری منسجم و قابلاعتماد برای ذخیرهسازی داده فراهم میکند.
فرمهای نرمال (NF) معیارهایی برای سنجش میزان نرمال بودن جداول هستند که از 1NF تا 5NF و همچنین BCNF و DKNF را شامل میشوند. هرچه جدول به سطوح بالاتری از نرمالسازی برسد، افزونگی کمتر و سازگاری دادهها بیشتر میشود. در عمل، سه فرم اول نرمال (1NF، 2NF و 3NF) بیشترین کاربرد را در سیستمهای واقعی دارند و معمولاً برای بسیاری از پایگاههای داده کفایت میکنند.
با وجود مزایای فراوان، نرمالسازی کامل همیشه بهترین انتخاب نیست. افزایش تعداد جداول و نیاز به الحاقهای متعدد (JOIN) میتواند کارایی سیستم را کاهش دهد؛ به همین دلیل در برخی کاربردها، بهویژه سیستمهای خواندنی یا وبمحور، از غیرنرمالسازی (Denormalization) بهصورت آگاهانه استفاده میشود. در مقابل، در سیستمهای حساس مانند سامانههای مالی، نرمالسازی در سطوح بالا اولویت دارد.
در نهایت، طراحی صحیح پایگاه داده نیازمند تعادل میان یکپارچگی داده، کارایی سیستم و نوع کاربرد است. نرمالسازی نه یک هدف مطلق، بلکه ابزاری تحلیلی برای رسیدن به ساختاری بهینه و متناسب با نیازهای واقعی سیستم محسوب میشود.









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