نرمال‌سازی پایگاه داده چیست و چه انواعی دارد

خلاصه
1404/02/31

نرمال‌سازی پایگاه داده فرآیندی است برای سازماندهی داده‌ها در یک پایگاه داده به منظور کاهش افزونگی (Redundancy) و وابستگی (Dependency) داده‌ها. هدف اصلی نرمال‌سازی، حذف ناهنجاری

نرمال‌سازی پایگاه داده چیست و چه انواعی دارد

نرمال‌سازی پایگاه داده فرآیندی است برای سازماندهی داده‌ها در یک پایگاه داده به منظور کاهش افزونگی (Redundancy) و وابستگی (Dependency) داده‌ها. هدف اصلی نرمال‌سازی، حذف ناهنجاری‌ها (Anomalies) در هنگام درج، به‌روزرسانی و حذف داده‌ها است. این ناهنجاری‌ها می‌توانند منجر به ناسازگاری داده‌ها و ایجاد مشکل در یکپارچگی داده‌ها شوند.

به بیان ساده‌تر، نرمال‌سازی مانند مرتب‌سازی و سازماندهی وسایل در یک اتاق است. با مرتب‌سازی، از تکرار وسایل جلوگیری می‌کنیم و پیدا کردن آن‌ها آسان‌تر می‌شود.

**مزایای نرمال‌سازی پایگاه داده:**

* **کاهش افزونگی داده‌ها:** جلوگیری از ذخیره داده‌های تکراری، که منجر به صرفه‌جویی در فضای ذخیره‌سازی می‌شود.
* **افزایش یکپارچگی داده‌ها:** تضمین اینکه داده‌ها سازگار و صحیح هستند.
* **بهبود عملکرد پایگاه داده:** بهینه‌سازی پرس‌و‌جوها (Queries) و سرعت بازیابی داده‌ها.
* **سهولت در نگهداری و توسعه:** تغییر و اصلاح ساختار پایگاه داده آسان‌تر می‌شود.
* **کاهش ناهنجاری‌ها:** جلوگیری از بروز مشکلات در هنگام درج، به‌روزرسانی و حذف داده‌ها.

**انواع نرمال‌سازی:**

نرمال‌سازی به صورت مرحله‌ای انجام می‌شود و هر مرحله با عنوان "فرم نرمال" شناخته می‌شود. هر فرم نرمال، قوانین خاص خود را دارد. مهم‌ترین فرم‌های نرمال عبارتند از:

1. **فرم نرمال اول (1NF - First Normal Form):**

* **قانون:** هر ستون باید شامل مقادیر اتمی (Atomic Values) باشد، یعنی مقادیر قابل تجزیه نباشند.
* **به عبارت دیگر:** هر ستون فقط می‌تواند یک مقدار داشته باشد و نباید لیستی از مقادیر در یک ستون ذخیره شود.
* **مثال:** اگر در یک جدول، ستونی به نام `تلفن` داشته باشیم که شامل چندین شماره تلفن در یک فیلد باشد، باید آن را به چند ستون مجزا یا جدول دیگری منتقل کنیم.

2. **فرم نرمال دوم (2NF - Second Normal Form):**

* **قانون:** باید در فرم نرمال اول باشد و تمام ستون‌های غیرکلیدی باید به طور کامل به کلید اصلی (Primary Key) وابسته باشند.
* **به عبارت دیگر:** هیچ ستون غیرکلیدی نباید به بخشی از کلید اصلی وابسته باشد. (فقط برای جداولی که کلید اصلی مرکب دارند اعمال می‌شود.)
* **مثال:** اگر جدولی داشته باشیم که کلید اصلی آن ترکیبی از `شماره_سفارش` و `شماره_محصول` باشد، و ستون `قیمت_محصول` فقط به `شماره_محصول` وابسته باشد، جدول باید به دو جدول مجزا تقسیم شود.

3. **فرم نرمال سوم (3NF - Third Normal Form):**

* **قانون:** باید در فرم نرمال دوم باشد و هیچ ستون غیرکلیدی نباید به ستون غیرکلیدی دیگری وابسته باشد.
* **به عبارت دیگر:** هیچ وابستگی گذرا (Transitive Dependency) نباید وجود داشته باشد.
* **مثال:** اگر جدولی داشته باشیم که شامل ستون‌های `شناسه_دانشجو`، `کد_شهر` و `نام_شهر` باشد، و `نام