رفتن به محتوای اصلی
Koohestun
توضیح کوهستانطراحی پایگاه دادهمقاله آموزشی· 5 دقیقه مطالعه· در راهنماها

حذف افزونگی و وابستگی با واسطه: فرم‌های نرمال پایگاه داده چگونه از خطاهای به‌روزرسانی جلوگیری می‌کنند

نرمال‌سازی پایگاه داده یک فرآیند دقیق طراحی است که داده‌ها را به جداول مرتبط تقسیم می‌کند تا افزونگی را از بین برده و مانع از خرابی داده‌ها شود. با اعمال سه فرم نرمال اول، توسعه‌دهندگان می‌توانند ساختارهای رابطه‌ای بسازند که بدون درگیر شدن با خطاهای به‌روزرسانی، به‌راحتی مقیاس‌پذیر باشند.

به قلم سپیده مهرابی

طرفداران سرسخت رابطه‌ای 40%بهینه‌سازان عملکرد 35%حامیان NoSQL 25%
طرفداران سرسخت رابطه‌ای
مدافع پایبندی دقیق به فرم‌های نرمال برای تضمین یکپارچگی داده‌ها هستند.
بهینه‌سازان عملکرد
مدافع خروج عمدی از حالت نرمال برای کاهش تاخیر پیوندها در بارهای کاری با خواندن زیاد هستند.
حامیان NoSQL
استدلال می‌کنند که ذخیره‌سازی‌های سندمحور، نرمال‌سازی رابطه‌ای را برای برنامه‌های مقیاس‌پذیر وب منسوخ کرده‌اند.

دیدگاه‌هایی که این گزارش پوشش نداده

  • دانشمندان داده
  • توسعه‌دهندگان فرانت‌اند

بسیاری از توسعه‌دهندگان تازه‌کار، اولین پایگاه‌های داده خود را به شکل جداول مسطح و عظیم می‌سازند، با این تصور که نگهداری تمام اطلاعات مرتبط در یک مکان، کوئری گرفتن را آسان‌تر می‌کند. اما همان‌طور که ادگار اف. کاد، ریاضیدان شرکت IBM در سال ۱۹۷۰ نشان داد، این ساختار مسطح چیزی را ایجاد می‌کند که او آن را «وابستگی‌های نامطلوب» نامید؛ وابستگی‌هایی که با تغییر رکوردها، ناگزیر به خرابی داده‌ها منجر می‌شوند. راه‌حل این مشکل، نرمال‌سازی پایگاه داده است؛ یک فرآیند دقیق برای تقسیم داده‌ها به جداول مرتبط تا افزونگی حذف شده و از خطاهای به‌روزرسانی جلوگیری شود. یادگیری نحوه اعمال سه فرم نرمال اول، حیاتی‌ترین گام در طراحی یک پایگاه داده رابطه‌ای است که بدون از هم پاشیدن، مقیاس‌پذیر باشد.[1][6]

مشکل اصلی که نرمال‌سازی حل می‌کند، خطای داده است؛ زمانی که ساختار پایگاه داده سیستم را مجبور به کپی کردن اطلاعات می‌کند. اگر آدرس یک مشتری در تک‌تک سفارش‌های او ثبت شود، به‌روزرسانی آن آدرس نیازمند این است که سیستم شاید ۵۰ یا ۱۰۰ سطر تاریخی را تغییر دهد. اگر حتی یک سطر در طول به‌روزرسانی جا بماند، پایگاه داده اکنون حاوی حقایق متناقضی درباره محل زندگی مشتری است. این مشکل به عنوان خطای به‌روزرسانی شناخته می‌شود و با غیرممکن ساختن تشخیص رکورد صحیح، یکپارچگی داده‌ها را از بین می‌برد.[1][3]

افزونگی همچنین باعث ایجاد خطاهای درج و حذف می‌شود. خطای درج زمانی رخ می‌دهد که سیستم نتواند یک واقعیت را ثبت کند تا زمانی که واقعیت نامرتبط دیگری مشخص شود. برای مثال، اگر یک جدول اطلاعات دانشجو و دوره را با هم ذخیره کند، پایگاه داده نمی‌تواند دوره جدیدی را اضافه کند مگر اینکه حداقل یک دانشجو در آن ثبت‌نام کند. در مقابل، خطای حذف زمانی اتفاق می‌افتد که پاک کردن یک بخش از داده‌ها، به‌طور ناخواسته بخش دیگری را نیز پاک کند. اگر آخرین دانشجو از یک دوره انصراف دهد، کل سابقه وجود آن دوره از پایگاه داده محو می‌شود.[3][4]

بدون نرمال‌سازی، جداول مسطح در برابر خطاهای به‌روزرسانی، درج و حذف آسیب‌پذیر هستند.

برای جلوگیری از این خرابی‌ها، مدیران پایگاه داده مجموعه‌ای از قوانین پیش‌رونده به نام فرم‌های نرمال را اعمال می‌کنند. این فرآیند با فرم نرمال اول آغاز می‌شود که ایجاب می‌کند هر ستون در یک جدول دارای یک مقدار تجزیه‌ناپذیر (اتمیک) باشد. یک سلول واحد نمی‌تواند شامل لیستی از سه شماره تلفن یا چند آدرس ایمیل باشد که با کاما جدا شده‌اند. علاوه بر این، فرم نرمال اول الزامی می‌کند که هر سطر باید توسط یک کلید اصلی به‌طور یکتا قابل شناسایی باشد تا هیچ دو رکوردی کاملاً یکسان نباشند. همان‌طور که ویکی‌پدیا اشاره می‌کند، هدف کاد از فرم نرمال اول این بود که اجازه دهد داده‌ها با استفاده از یک زیرزبان داده جهانی مبتنی بر منطق مرتبه اول دستکاری شوند.[4][5]

برای جلوگیری از این خرابی‌ها، مدیران پایگاه داده مجموعه‌ای از قوانین پیش‌رونده به نام فرم‌های نرمال را اعمال می‌کنند.

زمانی که یک جدول شرایط فرم نرمال اول را برآورده کرد، گام بعدی فرم نرمال دوم است که به وابستگی‌های جزئی می‌پردازد. این قانون به‌طور خاص برای جداولی با کلیدهای اصلی ترکیبی (کلیدهایی که از دو یا چند ستون تشکیل شده‌اند) اعمال می‌شود. در فرم نرمال دوم، هر ویژگی غیرکلیدی باید به کل کلید ترکیبی وابسته باشد، نه فقط به بخشی از آن. اگر جدولی نمرات دانشجو را با استفاده از ترکیبی از شناسه ۹ رقمی دانشجو و شناسه ۵ کاراکتری دوره ردیابی کند، ذخیره نام دوره در همان جدول ناقض فرم نرمال دوم است، زیرا نام دوره فقط به شناسه دوره بستگی دارد. راه‌حل این است که جزئیات دوره به یک جدول جداگانه منتقل شود.[3][4]

پرکاربردترین استاندارد هدف برای برنامه‌های تجاری، فرم نرمال سوم است که وابستگی‌های با واسطه را حذف می‌کند. وابستگی با واسطه زمانی رخ می‌دهد که یک ستون غیرکلیدی به جای وابستگی مستقیم به کلید اصلی، به یک ستون غیرکلیدی دیگر وابسته باشد. به عنوان مثال، اگر جدول کارمندان شامل شناسه کارمند، شناسه بخش و نام بخش باشد، نام بخش از طریق شناسه بخش به‌طور با واسطه به شناسه کارمند وابسته است.[2][3]

سه فرم نرمال اول، پایه و اساس بیشتر طراحی‌های پایگاه داده رابطه‌ای را تشکیل می‌دهند.

مستندات Teradata Vantage خاطرنشان می‌کند که باقی گذاشتن وابستگی‌های با واسطه، پایگاه داده را مجبور می‌کند نام بخش را برای هر کارمند در آن بخش به‌طور تکراری ذخیره کند. برای دستیابی به فرم نرمال سوم، طراح باید شناسه بخش و نام بخش را استخراج کرده و در یک جدول اختصاصی دو ستونی قرار دهد و تنها شناسه بخش را به عنوان یک کلید خارجی در جدول کارمندان باقی بگذارد. این کار تضمین می‌کند که اگر نام بخش تغییر کند، این تغییر دقیقاً در یک مکان انجام شده و بلافاصله ارتباط را برای هزاران کارمند به‌روزرسانی می‌کند.[2]

اگرچه سطوح بالاتری از نرمال‌سازی مانند فرم نرمال بویس-کاد، فرم نرمال چهارم و فرم نرمال پنجم وجود دارند، اما آن‌ها به موارد پیچیده و خاصی می‌پردازند که شامل وابستگی‌های چندمقداری و پیوندی هستند. برای اکثریت قریب به اتفاق پایگاه‌های داده عملیاتی، رسیدن به فرم نرمال سوم تعادل بهینه‌ای بین یکپارچگی داده‌ها و عملکرد کوئری‌ها فراهم می‌کند. سوق دادن یک پایگاه داده به فرم نرمال پنجم اغلب به پیوندهای جدولی بسیار زیادی نیاز دارد (گاهی ۱۰ یا ۱۵ پیوند برای یک کوئری) که سرعت خواندن را به‌شدت کاهش می‌دهد و مدیران را وادار می‌کند تا برای بازیابی عملکرد، برخی جداول گزارش‌گیری را عمداً از حالت نرمال خارج کنند.[1][2][5]

نکات کلیدی

  • نرمال‌سازی پایگاه داده یک فرآیند ریاضی برای سازماندهی جداول رابطه‌ای و حذف افزونگی است.
  • جداول مسطح و غیرنرمال دچار خطاهای به‌روزرسانی، درج و حذف می‌شوند که داده‌ها را خراب می‌کنند.
  • فرم نرمال اول نیازمند مقادیر تجزیه‌ناپذیر و یک کلید اصلی یکتا برای هر سطر است.
  • فرم نرمال دوم وابستگی‌های جزئی را در جداولی که کلیدهای ترکیبی دارند از بین می‌برد.
  • فرم نرمال سوم وابستگی‌های با واسطه را حذف کرده و تضمین می‌کند که ستون‌های غیرکلیدی فقط به کلید اصلی وابسته باشند.
  • بیشتر پایگاه‌های داده تراکنشی فرم نرمال سوم را هدف قرار می‌دهند، زیرا فرم‌های بالاتر ممکن است با نیاز به پیوندهای بیش از حد، سرعت خواندن را کاهش دهند.

اصطلاحات کلیدی

خطای به‌روزرسانی
ناهماهنگی داده‌ها که زمانی رخ می‌دهد که یک قطعه اطلاعات تکراری در یک سطر به‌روزرسانی شده اما در سطر دیگر فراموش می‌شود.
کلید اصلی
یک ستون یا مجموعه‌ای از ستون‌ها که هر سطر را در یک جدول پایگاه داده به‌طور یکتا شناسایی می‌کند.
کلید خارجی
ستونی در یک جدول که به کلید اصلی جدول دیگر ارجاع می‌دهد و پیوندی بین داده‌ها برقرار می‌کند.
وابستگی با واسطه
شرایطی که در آن یک ستون غیرکلیدی به جای وابستگی مستقیم به کلید اصلی، به یک ستون غیرکلیدی دیگر وابسته است.
مقدار تجزیه‌ناپذیر
یک قطعه داده واحد و غیرقابل تقسیم که نمی‌توان آن را بیشتر خرد کرد، مانند یک شماره تلفن واحد به جای یک لیست.

پرسش‌های متداول

چرا این فرآیند نرمال‌سازی نامیده می‌شود؟

ادگار اف. کاد، ریاضیدان IBM، این اصطلاح را از مفهوم سیاسی «نرمال‌سازی» روابط دیپلماتیک وام گرفت و آن را در ساختاردهی ریاضی داده‌ها به کار برد.

آیا همیشه باید به فرم نرمال سوم برسم؟

برای پایگاه‌های داده تراکنشی که داده‌ها دائماً به‌روز می‌شوند، فرم نرمال سوم یک استاندارد است. اما برای پایگاه‌های داده تحلیلی که بیشتر خواندنی هستند، مدیران اغلب داده‌ها را عمداً از حالت نرمال خارج می‌کنند تا سرعت کوئری‌ها را افزایش دهند.

تفاوت بین فرم نرمال سوم و فرم نرمال بویس-کاد چیست؟

فرم نرمال بویس-کاد نسخه کمی سخت‌گیرانه‌تری از فرم نرمال سوم است که برای مدیریت موارد خاصی طراحی شده که در آن یک جدول دارای چندین کلید کاندید ترکیبی همپوشان است.

منابع

پوشش منابع

6 منبع

3 دیدگاه شناسایی‌شده

طرفداران سرسخت رابطه‌ای 40%بهینه‌سازان عملکرد 35%حامیان NoSQL 25%
  1. [1]IBMطرفداران سرسخت رابطه‌ای

    What Is Database Normalization?

    مطالعه در IBM
  2. [2]Teradata Vantageطرفداران سرسخت رابطه‌ای

    Third and Boyce-Codd Normal Forms

    مطالعه در Teradata Vantage
  3. [3]Harper College Open Pressطرفداران سرسخت رابطه‌ای

    Chapter 12 Normalization – Database Design

    مطالعه در Harper College Open Press
  4. [4]Runestone Academyطرفداران سرسخت رابطه‌ای

    3.3. Normalization — A Practical Introduction to Databases

    مطالعه در Runestone Academy
  5. [5]Wikipediaحامیان NoSQL

    Database normalization

    مطالعه در Wikipedia
  6. [6]تیم سردبیری کوهستانبهینه‌سازان عملکرد

    تحلیل تیم سردبیری کوهستان

    مطالعه در تیم سردبیری کوهستان

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

دریافت راهنماها اخبار همراه با پوشش کامل منابع و تحلیل دیدگاه‌ها، مستقیم در صندوق ورودی شما.