~4 min read • Updated Apr 15, 2026
مقدمه
نرمالسازی دیتابیس یکی از اصول اساسی طراحی دیتابیسهای رابطهای است که توسط ادگار اف. کاد معرفی شد. هدف اصلی آن کاهش افزونگی (Redundancy) دادهها و حذف ناهنجاریهای (Anomalies) درج، بهروزرسانی و حذف است. نرمالسازی با اعمال قوانین تدریجی به نام Normal Forms انجام میشود. هر فرم بالاتر، شرایط سختگیرانهتری دارد و فرمهای پایینتر را نیز شامل میشود.
معمولاً در عمل تا 3NF یا BCNF کافی است، اما درک کامل ۷ لایه برای طراحی حرفهای ضروری است.
لایه ۱: First Normal Form (1NF)
جدول باید دارای مقادیر اتمی (Atomic) باشد. یعنی هر سلول فقط یک مقدار داشته باشد، نه لیست یا مجموعه.
شرایط:
- هر ستون فقط یک مقدار داشته باشد
- هیچ گروه تکراری (Repeating Group) وجود نداشته باشد
- هر ردیف منحصربهفرد باشد (معمولاً با Primary Key)
مثال غیرنرمال:
StudentID | Name | Courses
1 | Ali | Math, Physicsپس از 1NF:
StudentID | Name | Course
1 | Ali | Math
1 | Ali | Physicsلایه ۲: Second Normal Form (2NF)
جدول باید در 1NF باشد و هیچ وابستگی جزئی (Partial Dependency) نداشته باشد. یعنی تمام ستونهای غیرکلیدی باید به کل Primary Key وابسته باشند (نه فقط بخشی از آن).
مثال: جدول StudentCourse با کلید ترکیبی (StudentID, CourseID) که ستون StudentName فقط به StudentID وابسته است → باید جدا شود.
لایه ۳: Third Normal Form (3NF)
جدول باید در 2NF باشد و هیچ وابستگی گذرا (Transitive Dependency) نداشته باشد. یعنی هیچ ستون غیرکلیدی نباید به ستون غیرکلیدی دیگری وابسته باشد.
مثال: جدول Employee با ستونهای EmployeeID, Department, DepartmentLocation → DepartmentLocation به Department وابسته است نه مستقیم به EmployeeID.
لایه ۴: Boyce-Codd Normal Form (BCNF)
نسخه قویتری از 3NF است. برای هر وابستگی تابعی X → Y، X باید Super Key باشد.
BCNF تمام وابستگیهای تابعی را بهطور کامل پوشش میدهد و گاهی 3NF را نقض نمیکند اما BCNF قویتر است.
لایه ۵: Fourth Normal Form (4NF)
جدول باید در BCNF باشد و هیچ وابستگی چندمقداری مستقل (Multivalued Dependency) نداشته باشد.
مثال: جدول EmployeeSkills و EmployeeLanguages که دو واقعیت مستقل هستند → باید به جداول جداگانه شکسته شوند.
لایه ۶: Fifth Normal Form (5NF) یا Project-Join Normal Form (PJ/NF)
جدول باید در 4NF باشد و هیچ وابستگی join غیرضروری نداشته باشد. یعنی جدول را نمیتوان به جداول کوچکتر تجزیه کرد و دوباره با join به حالت اصلی برگرداند بدون از دست دادن اطلاعات.
این فرم برای موارد بسیار پیچیده با وابستگیهای cyclic استفاده میشود.
لایه ۷: Sixth Normal Form (6NF) و Domain-Key Normal Form (DKNF)
6NF: بالاترین فرم نرمالسازی که هر جدول فقط یک نوع واقعیت (Fact) را نگه میدارد. معمولاً شامل جداول با دو ستون (کلید + یک ویژگی) است. برای دادههای زمانی و نسخهبندی بسیار مفید است.
Domain-Key Normal Form (DKNF): جدول باید بهگونهای باشد که تمام محدودیتها از Domain Constraints و Key Constraints ناشی شوند. این فرم بیشتر نظری است و به ندرت در عمل اعمال میشود.
مزایا و معایب نرمالسازی
مزایا:
- کاهش افزونگی داده
- جلوگیری از ناهنجاریهای درج، حذف و بهروزرسانی
- بهبود یکپارچگی داده
معایب:
- افزایش تعداد جداول و پیچیدگی joinها
- کاهش عملکرد در کوئریهای پیچیده (گاهی نیاز به Denormalization وجود دارد)
نکات عملی
- در اکثر پروژهها تا 3NF یا BCNF کافی است.
- برای Data Warehouse و سیستمهای تحلیلی، Denormalization (کاهش نرمالسازی) رایج است.
- همیشه تعادل بین نرمالسازی و عملکرد را در نظر بگیرید.
نتیجهگیری
نرمالسازی دیتابیس با اعمال ۷ لایه Normal Forms، جداول را به شکل منطقی و بدون افزونگی تبدیل میکند. درک عمیق این لایهها به طراحان دیتابیس کمک میکند تا پایگاه دادهای کارآمد، قابل نگهداری و بدون ناهنجاری طراحی کنند. در عمل، 1NF تا 3NF یا BCNF بیشترین کاربرد را دارند، اما آگاهی از فرمهای بالاتر (4NF تا 6NF) برای موارد پیچیده ضروری است.
Written & researched by Dr. Shahin Siami