فرمهای نرمال در پایگاه دادهها مفاهیت ساختاری است که برای کاهش افزونگی و جلوگیری از بروز مشکلات در دادهها به کار میروند. این فرمها به صورت مراحل مختلف طراحی میشوند و به طور کلی شامل:
1. **فرم نرمال اول (1NF)**:
- **تعریف**: جدول باید دارای ساختار سطر و ستونی باشد و هر سلول باید حاوی یک مقدار اتمی (غیرقابل تقسیم) باشد. به عبارت دیگر، مقادیر داخل هر سلول نباید مجموعهای از مقادیر یا لیستها باشند.
- **هدف**: جلوگیری از تکرار دادهها و نرمالسازی ساختار جدول.
2. **فرم نرمال دوم (2NF)**:
- **تعریف**: جدول باید در فرم نرمال اول (1NF) باشد و همچنین هر صفت غیر کلیدی باید به تمام کلید اصلی (نه فقط قسمتی از آن) وابسته باشد. این فرم به معنای رفع وابستگیهای جزئی (Partial Dependency) است.
- **هدف**: حذف وابستگیهای جزئی، یعنی وابستگی صفتها به تنها بخشی از کلید اصلی.
3. **فرم نرمال سوم (3NF)**:
- **تعریف**: جدول باید در فرم نرمال دوم (2NF) باشد و همچنین هیچ صفت غیر کلیدی نباید به صفت غیر کلیدی دیگری وابسته باشد (یعنی هیچ وابستگی ترانزیتی نباید وجود داشته باشد).
- **هدف**: حذف وابستگیهای ترانزیتی، یعنی اگر صفت A به صفت B وابسته است و صفت B به کلید اصلی وابسته است، آنگاه صفت A باید به کلید اصلی وابسته باشد.
4. **فرم نرمال چهارم (4NF)**:
- **تعریف**: جدول باید در فرم نرمال سوم (3NF) باشد و همچنین باید از وابستگیهای چندگانه (Multi-Valued Dependencies) آزاد باشد.
- **هدف**: جلوگیری از مشکلات ناشی از وابستگیهای چندگانه که میتوانند موجب تکرار دادهها و پیچیدگی در ساختار شوند.
5. **فرم نرمال پنجم (5NF)**:
- **تعریف**: جدول باید در فرم نرمال چهارم (4NF) باشد و همچنین باید از وابستگیهای جوین (Join Dependencies) آزاد باشد.
- **هدف**: رفع وابستگیهای جوین که ممکن است به تغییرات در دادهها منجر شود.
این فرمها به تدریج پیچیدهتر شده و هدف اصلی آنها کاهش افزونگی دادهها و بهبود یکپارچگی دادهها است.
### فرم نرمال اول (1NF)
**تعریف**: جدول باید دارای ساختار سطر و ستونی باشد و هر سلول باید حاوی یک مقدار اتمی باشد.
**مثال**:
تصور کنید جدولی داریم که اطلاعات دانشآموزان و دروس آنها را نگهداری میکند. اگر دادهها به شکل زیر باشند:
| دانشآموز | دروس |
|-----------|----------------------|
| علی | ریاضی, فیزیک, شیمی |
| زهرا | زیستشناسی, شیمی |
این جدول در فرم نرمال اول نیست زیرا سلولهای ستون "دروس" حاوی لیستهای چندگانه هستند. برای تبدیل آن به فرم نرمال اول، باید هر درس را در یک ردیف جداگانه قرار دهیم:
| دانشآموز | درس |
|-----------|-----------|
| علی | ریاضی |
| علی | فیزیک |
| علی | شیمی |
| زهرا | زیستشناسی|
| زهرا | شیمی |
حالا هر سلول حاوی تنها یک مقدار اتمی است و جدول به فرم نرمال اول (1NF) تبدیل شده است.
### فرم نرمال دوم (2NF)
**تعریف**: جدول باید در فرم نرمال اول (1NF) باشد و همچنین هر صفت غیر کلیدی باید به تمام کلید اصلی (نه فقط بخشی از آن) وابسته باشد.
**مثال**:
فرض کنید جدول جدیدی داریم که علاوه بر اطلاعات دانشآموز و درس، نمرات نیز ثبت میشود:
| دانشآموز | درس | نمره |
|-----------|-----------|------|
| علی | ریاضی | 15 |
| علی | فیزیک | 18 |
| علی | شیمی | 20 |
| زهرا | زیستشناسی| 17 |
| زهرا | شیمی | 19 |
در این جدول، "دانشآموز" و "درس" به عنوان کلید اصلی ترکیبی هستند، و "نمره" به آنها وابسته است. اما اگر فرض کنیم که اطلاعات معلمها نیز اضافه شده است:
| دانشآموز | درس | نمره | معلم |
|-----------|-----------|------|--------------|
| علی | ریاضی | 15 | آقای احمدی |
| علی | فیزیک | 18 | آقای نیکو |
| علی | شیمی | 20 | آقای نیکو |
| زهرا | زیستشناسی| 17 | خانم رضایی |
| زهرا | شیمی | 19 | آقای نیکو |
در اینجا "معلم" به "درس" وابسته است، نه به "دانشآموز" و "درس" به طور کامل. بنابراین، باید جدول را به دو جدول تقسیم کنیم:
**جدول 1:**
| دانشآموز | درس | نمره |
|-----------|-----------|------|
| علی | ریاضی | 15 |
| علی | فیزیک | 18 |
| علی | شیمی | 20 |
| زهرا | زیستشناسی| 17 |
| زهرا | شیمی | 19 |
**جدول 2:**
| درس | معلم |
|-----------|--------------|
| ریاضی | آقای احمدی |
| فیزیک | آقای نیکو |
| شیمی | آقای نیکو |
| زیستشناسی| خانم رضایی |
اکنون هر صفت غیر کلیدی به تمام کلید اصلی وابسته است، و جدولها در فرم نرمال دوم (2NF) هستند.
### فرم نرمال سوم (3NF)
**تعریف**: جدول باید در فرم نرمال دوم (2NF) باشد و همچنین هیچ صفت غیر کلیدی نباید به صفت غیر کلیدی دیگری وابسته باشد (یعنی هیچ وابستگی ترانزیتی نباید وجود داشته باشد).
**مثال**:
فرض کنید که در جدول جدیدی، علاوه بر اطلاعات قبلی، نام معلم و شماره تلفن آنها نیز ثبت شده است:
| دانشآموز | درس | نمره | معلم | شماره تلفن معلم |
|-----------|-----------|------|--------------|-------------------|
| علی | ریاضی | 15 | آقای احمدی | 12345 |
| علی | فیزیک | 18 | آقای نیکو | 67890 |
| علی | شیمی | 20 | آقای نیکو | 67890 |
| زهرا | زیستشناسی| 17 | خانم رضایی | 54321 |
| زهرا | شیمی | 19 | آقای نیکو | 67890 |
در اینجا، "شماره تلفن معلم" به "معلم" وابسته است، اما "معلم" به "درس" وابسته است که به نوبه خود به "دانشآموز" وابسته است. بنابراین، این جدول دارای وابستگیهای ترانزیتی است (یعنی وابستگی به "معلم" به "شماره تلفن معلم" و وابستگی به "معلم" به "درس"). باید جدول را به صورت زیر تقسیم کنیم:
**جدول 1:**
| دانشآموز | درس | نمره | معلم |
|-----------|-----------|------|--------------|
| علی | ریاضی | 15 | آقای احمدی |
| علی | فیزیک | 18 | آقای نیکو |
| علی | شیمی | 20 | آقای نیکو |
| زهرا | زیستشناسی| 17 | خانم رضایی |
| زهرا | شیمی | 19 | آقای نیکو |
**جدول 2:**
| معلم | شماره تلفن معلم |
|--------------|-------------------|
| آقای احمدی | 12345 |
| آقای نیکو | 67890 |
| خانم رضایی | 54321 |
اکنون هیچ صفت غیر کلیدی به صفت غیر کلیدی دیگری وابسته نیست و جدولها در فرم نرمال سوم (3NF) قرار دارند.