حذف افزونگی و وابستگی با واسطه: فرمهای نرمال پایگاه داده چگونه از خطاهای بهروزرسانی جلوگیری میکنند
نرمالسازی پایگاه داده یک فرآیند دقیق طراحی است که دادهها را به جداول مرتبط تقسیم میکند تا افزونگی را از بین برده و مانع از خرابی دادهها شود. با اعمال سه فرم نرمال اول، توسعهدهندگان میتوانند ساختارهای رابطهای بسازند که بدون درگیر شدن با خطاهای بهروزرسانی، بهراحتی مقیاسپذیر باشند.
به قلم سپیده مهرابی
این خبر را به اشتراک بگذارید
بهطور خلاصه
- نرمالسازی پایگاه داده یک فرآیند ریاضی برای سازماندهی جداول رابطهای و حذف افزونگی است.
- جداول مسطح و غیرنرمال دچار خطاهای بهروزرسانی، درج و حذف میشوند که دادهها را خراب میکنند.
- فرم نرمال اول نیازمند مقادیر تجزیهناپذیر و یک کلید اصلی یکتا برای هر سطر است.
بسیاری از توسعهدهندگان تازهکار، اولین پایگاههای داده خود را به شکل جداول مسطح و عظیم میسازند، با این تصور که نگهداری تمام اطلاعات مرتبط در یک مکان، کوئری گرفتن را آسانتر میکند. اما همانطور که ادگار اف. کاد، ریاضیدان شرکت IBM در سال ۱۹۷۰ نشان داد، این ساختار مسطح چیزی را ایجاد میکند که او آن را «وابستگیهای نامطلوب» نامید؛ وابستگیهایی که با تغییر رکوردها، ناگزیر به خرابی دادهها منجر میشوند.
راهحل این مشکل، نرمالسازی پایگاه داده است؛ یک فرآیند دقیق برای تقسیم دادهها به جداول مرتبط تا افزونگی حذف شده و از خطاهای بهروزرسانی جلوگیری شود. یادگیری نحوه اعمال سه فرم نرمال اول، حیاتیترین گام در طراحی یک پایگاه داده رابطهای است که بدون از هم پاشیدن، مقیاسپذیر باشد.[1][6]
مشکل اصلی که نرمالسازی حل میکند، خطای داده است؛ زمانی که ساختار پایگاه داده سیستم را مجبور به کپی کردن اطلاعات میکند. اگر آدرس یک مشتری در تکتک سفارشهای او ثبت شود، بهروزرسانی آن آدرس نیازمند این است که سیستم شاید ۵۰ یا ۱۰۰ سطر تاریخی را تغییر دهد. اگر حتی یک سطر در طول بهروزرسانی جا بماند، پایگاه داده اکنون حاوی حقایق متناقضی درباره محل زندگی مشتری است. این مشکل به عنوان خطای بهروزرسانی شناخته میشود و با غیرممکن ساختن تشخیص رکورد صحیح، یکپارچگی دادهها را از بین میبرد.[1][3]
افزونگی همچنین باعث ایجاد خطاهای درج و حذف میشود. خطای درج زمانی رخ میدهد که سیستم نتواند یک واقعیت را ثبت کند تا زمانی که واقعیت نامرتبط دیگری مشخص شود. برای مثال، اگر یک جدول اطلاعات دانشجو و دوره را با هم ذخیره کند، پایگاه داده نمیتواند دوره جدیدی را اضافه کند مگر اینکه حداقل یک دانشجو در آن ثبتنام کند.
در مقابل، خطای حذف زمانی اتفاق میافتد که پاک کردن یک بخش از دادهها، بهطور ناخواسته بخش دیگری را نیز پاک کند. اگر آخرین دانشجو از یک دوره انصراف دهد، کل سابقه وجود آن دوره از پایگاه داده محو میشود.[3][4]
برای جلوگیری از این خرابیها، مدیران پایگاه داده مجموعهای از قوانین پیشرونده به نام فرمهای نرمال را اعمال میکنند. این فرآیند با فرم نرمال اول آغاز میشود که ایجاب میکند هر ستون در یک جدول دارای یک مقدار تجزیهناپذیر (اتمیک) باشد. یک سلول واحد نمیتواند شامل لیستی از سه شماره تلفن یا چند آدرس ایمیل باشد که با کاما جدا شدهاند.
علاوه بر این، فرم نرمال اول الزامی میکند که هر سطر باید توسط یک کلید اصلی بهطور یکتا قابل شناسایی باشد تا هیچ دو رکوردی کاملاً یکسان نباشند. همانطور که ویکیپدیا اشاره میکند، هدف کاد از فرم نرمال اول این بود که اجازه دهد دادهها با استفاده از یک زیرزبان داده جهانی مبتنی بر منطق مرتبه اول دستکاری شوند.[4][5]
زمانی که یک جدول شرایط فرم نرمال اول را برآورده کرد، گام بعدی فرم نرمال دوم است که به وابستگیهای جزئی میپردازد. این قانون بهطور خاص برای جداولی با کلیدهای اصلی ترکیبی (کلیدهایی که از دو یا چند ستون تشکیل شدهاند) اعمال میشود. در فرم نرمال دوم، هر ویژگی غیرکلیدی باید به کل کلید ترکیبی وابسته باشد، نه فقط به بخشی از آن.
اگر جدولی نمرات دانشجو را با استفاده از ترکیبی از شناسه ۹ رقمی دانشجو و شناسه ۵ کاراکتری دوره ردیابی کند، ذخیره نام دوره در همان جدول ناقض فرم نرمال دوم است، زیرا نام دوره فقط به شناسه دوره بستگی دارد. راهحل این است که جزئیات دوره به یک جدول جداگانه منتقل شود.[3][4]
پرکاربردترین استاندارد هدف برای برنامههای تجاری، فرم نرمال سوم است که وابستگیهای با واسطه را حذف میکند. وابستگی با واسطه زمانی رخ میدهد که یک ستون غیرکلیدی به جای وابستگی مستقیم به کلید اصلی، به یک ستون غیرکلیدی دیگر وابسته باشد. به عنوان مثال، اگر جدول کارمندان شامل شناسه کارمند، شناسه بخش و نام بخش باشد، نام بخش از طریق شناسه بخش بهطور با واسطه به شناسه کارمند وابسته است.[2][3]
مستندات Teradata Vantage خاطرنشان میکند که باقی گذاشتن وابستگیهای با واسطه، پایگاه داده را مجبور میکند نام بخش را برای هر کارمند در آن بخش بهطور تکراری ذخیره کند.
برای دستیابی به فرم نرمال سوم، طراح باید شناسه بخش و نام بخش را استخراج کرده و در یک جدول اختصاصی دو ستونی قرار دهد و تنها شناسه بخش را به عنوان یک کلید خارجی در جدول کارمندان باقی بگذارد. این کار تضمین میکند که اگر نام بخش تغییر کند، این تغییر دقیقاً در یک مکان انجام شده و بلافاصله ارتباط را برای هزاران کارمند بهروزرسانی میکند.[2]
اگرچه سطوح بالاتری از نرمالسازی مانند فرم نرمال بویس-کاد، فرم نرمال چهارم و فرم نرمال پنجم وجود دارند، اما آنها به موارد پیچیده و خاصی میپردازند که شامل وابستگیهای چندمقداری و پیوندی هستند. برای اکثریت قریب به اتفاق پایگاههای داده عملیاتی، رسیدن به فرم نرمال سوم تعادل بهینهای بین یکپارچگی دادهها و عملکرد کوئریها فراهم میکند.
برای اکثریت قریب به اتفاق پایگاههای داده عملیاتی، رسیدن به فرم نرمال سوم تعادل بهینهای بین یکپارچگی دادهها و عملکرد کوئریها فراهم میکند.
اصطلاحات کلیدی
- خطای بهروزرسانی
- ناهماهنگی دادهها که زمانی رخ میدهد که یک قطعه اطلاعات تکراری در یک سطر بهروزرسانی شده اما در سطر دیگر فراموش میشود.
- کلید اصلی
- یک ستون یا مجموعهای از ستونها که هر سطر را در یک جدول پایگاه داده بهطور یکتا شناسایی میکند.
- کلید خارجی
- ستونی در یک جدول که به کلید اصلی جدول دیگر ارجاع میدهد و پیوندی بین دادهها برقرار میکند.
- وابستگی با واسطه
- شرایطی که در آن یک ستون غیرکلیدی به جای وابستگی مستقیم به کلید اصلی، به یک ستون غیرکلیدی دیگر وابسته است.
- مقدار تجزیهناپذیر
- یک قطعه داده واحد و غیرقابل تقسیم که نمیتوان آن را بیشتر خرد کرد، مانند یک شماره تلفن واحد به جای یک لیست.
پرسشهای متداول
چرا این فرآیند نرمالسازی نامیده میشود؟
ادگار اف. کاد، ریاضیدان IBM، این اصطلاح را از مفهوم سیاسی «نرمالسازی» روابط دیپلماتیک وام گرفت و آن را در ساختاردهی ریاضی دادهها به کار برد.
آیا همیشه باید به فرم نرمال سوم برسم؟
برای پایگاههای داده تراکنشی که دادهها دائماً بهروز میشوند، فرم نرمال سوم یک استاندارد است. اما برای پایگاههای داده تحلیلی که بیشتر خواندنی هستند، مدیران اغلب دادهها را عمداً از حالت نرمال خارج میکنند تا سرعت کوئریها را افزایش دهند.
تفاوت بین فرم نرمال سوم و فرم نرمال بویس-کاد چیست؟
فرم نرمال بویس-کاد نسخه کمی سختگیرانهتری از فرم نرمال سوم است که برای مدیریت موارد خاصی طراحی شده که در آن یک جدول دارای چندین کلید کاندید ترکیبی همپوشان است.
بررسی عمیق دیدگاهها
طرفداران سرسخت رابطهای
مدیران پایگاه دادهای که یکپارچگی و ثبات دقیق دادهها را بر هر چیز دیگری ترجیح میدهند.
این گروه استدلال میکنند که هرگونه انحراف از حداقل فرم نرمال سوم، یک شکست معماری است که در نهایت سیستم را خراب میکند. آنها معتقدند که فضای ذخیرهسازی ارزان است اما یکپارچگی دادهها قیمتی ندارد و هرگز نباید به لایه برنامه برای مدیریت دادههای تکراری اعتماد کرد. اگر یک پایگاه داده برای کوئری گرفتن از دادههای نرمالشده به پیوندهای پیچیده نیاز دارد، این افراد استدلال میکنند که راهحل استفاده از نمایهسازی بهتر، نماهای مادی یا سختافزار قدرتمندتر است، نه به خطر انداختن ساختار پایگاه داده.
بهینهسازان عملکرد
مهندسانی که جداول را عمداً از حالت نرمال خارج میکنند تا سرعت بارهای کاری تحلیلی با خواندن زیاد را افزایش دهند.
این گروه ضمن تایید ظرافت ریاضی نرمالسازی، اشاره میکنند که پیوند دادن ۱۰ جدول مختلف برای یک کوئری داشبورد، تاخیر غیرقابل قبولی ایجاد میکند. در انبار داده و پردازش تحلیلی آنلاین، آنها از «طرحوارههای ستارهای» یا جداول مسطحی دفاع میکنند که عمداً دادهها را کپی میکنند تا پیوندها را حذف کنند. آنها خطر خطاهای بهروزرسانی را میپذیرند زیرا پایگاههای داده تحلیلی معمولاً در فرآیندهای دستهای کنترلشده نوشته میشوند، نه بهروزرسانیهای مداوم کاربران.
حامیان NoSQL
توسعهدهندگانی که نرمالسازی رابطهای را بهطور کامل به نفع ذخیرهسازی سندمحور رها میکنند.
این دیدگاه استدلال میکند که قوانین نرمالسازی در دهه ۱۹۷۰ برای ذخیرهسازی دیسکهای گرانقیمت و تکگرهای نوشته شدهاند و در عصر رایانش ابری توزیعشده منسوخ شدهاند. پایگاههای داده NoSQL با ذخیره دادهها به صورت اسناد JSON مستقل، عمداً دادهها را کپی میکنند تا امکان مقیاسپذیری افقی در سرورهای معمولی فراهم شود. آنها استدلال میکنند که دستاوردهای عملکردی ناشی از بازیابی کل پروفایل یک کاربر در یک خواندن سند واحد، بسیار بیشتر از هزینههای ذخیرهسازی افزونگی است.
- طرفداران سرسخت رابطهای
- مدافع پایبندی دقیق به فرمهای نرمال برای تضمین یکپارچگی دادهها هستند.
- بهینهسازان عملکرد
- مدافع خروج عمدی از حالت نرمال برای کاهش تاخیر پیوندها در بارهای کاری با خواندن زیاد هستند.
- حامیان NoSQL
- استدلال میکنند که ذخیرهسازیهای سندمحور، نرمالسازی رابطهای را برای برنامههای مقیاسپذیر وب منسوخ کردهاند.
دیدگاههایی که این گزارش پوشش نداده
- دانشمندان داده
- توسعهدهندگان فرانتاند
منابع
[1]IBMطرفداران سرسخت رابطهایWhat Is Database Normalization?
مطالعه در IBM →
[2]Teradata Vantageطرفداران سرسخت رابطهایThird and Boyce-Codd Normal Forms
مطالعه در Teradata Vantage →
[3]Harper College Open Pressطرفداران سرسخت رابطهایChapter 12 Normalization – Database Design
مطالعه در Harper College Open Press →
[4]Runestone Academyطرفداران سرسخت رابطهای3.3. Normalization — A Practical Introduction to Databases
مطالعه در Runestone Academy →
[5]Wikipediaحامیان NoSQLDatabase normalization
مطالعه در Wikipedia →
[6]تیم سردبیری کوهستانبهینهسازان عملکردتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
بیشتر در راهنماها
مشاهده همه →فناوری میکروفون
القای الکترومغناطیسی در برابر ظرفیت خازنی الکترواستاتیک: میکروفونهای داینامیک و کاندنسر چگونه صدا را به سیگنال تبدیل میکنند
6 منبع
ارزشگذاری شرکتی
چگونه محاسبه بدهی خالص و سهام اقلیت در ارزشگذاری شرکت، هزینه واقعی خرید آن را مشخص میکند
5 منبع
باورهای غلط درباره باتری
چرا بستن کامل برنامههای گوشی، باتری را سریعتر خالی میکند؟
4 منبع
مدیریت رنگ
نمودار رنگینگی CIE 1931: تفاوت فضاهای رنگی sRGB، Adobe RGB و DCI-P3 چیست؟
7 منبع
نظرات
هر زاویه. هر روز.
اخبار راهنماها با پوشش کامل منابع و تحلیل دیدگاهها، هر روز و رایگان.





