CodeShot
Midسختی 3 از ۵· در 60٪ مصاحبه‌های این حوزه پرسیده شده

Normalization چیست و چرا مهم است؟

نشان کردن

پاسخ کوتاه

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

پاسخ کامل

در فرم نرمال اول/دوم/سوم، داده‌های تکراری (مثل نام مشتری در هر ردیف سفارش) به یک جدول جدا (Customers) منتقل و با کلید خارجی به آن ارجاع داده می‌شود. این کار از ناسازگاری داده (مثلاً یک نام اشتباه در ۱۰۰ ردیف) جلوگیری می‌کند.

مثال کد

-- بدون نرمال‌سازی: نام مشتری در هر سفارش تکرار می‌شود
-- با نرمال‌سازی:
CREATE TABLE Customers (Id INT PRIMARY KEY, Name NVARCHAR(100));
CREATE TABLE Orders (Id INT PRIMARY KEY, CustomerId INT REFERENCES Customers(Id));

نکته مهم

گاهی برای کارایی خواندن، عمداً داده Denormalize می‌شود (تکرار کنترل‌شده)؛ این یک مصالحهٔ آگاهانه است، نه اشتباه.

اشتباه رایج

❌ نرمال‌سازی افراطی که Queryهای ساده را به Joinهای بسیار پیچیده تبدیل می‌کند.