بیشتر اوغات مقادیر موجود در جداول ابعاد (Dimensions) ثابت هستند و تغییری در آنها رخ نمیدهد. به عنوان مثال تغییر در نام ماههای سال تقریبا غیر ممکن است. اما برخی از اطلاعات قابل تغییر هستند، مانند نام یا نام خانوادگی و آدرس افراد.
جهت شرح چنین شرایطی از اصطلاح SCD یا slowly changing dimension استفاده میشود. SCD الگویی جهت طراحی جداول ابعاد است.
در برخی از گزارشات، زمانی که چنین تغییری در داده رخ دهد، میبایست تغییرات را به صورتی اعمال کرد که ردپای (تاریخچه تغییرات) آن مشخص باشد. به طور مثال در نظر بگیرید که در گزارشی میزان فروش شخصی ثبت شده باشد، این شخص پس از مدتی نام خود را تغییر میدهد، اگر نام شخص را بروزرسانی کنیم تمامی اطلاعات قدیمی با نام جدید نمایش داده میشود که در این صورت امکان رسیدن به نام قدیم از بین میرود.
SCD یک مفهموم جدید نیست بلکه نوع دیگری از طراحی میباشد که برای کمک به حل چنین مشکلاتی مفید واقع میشود.
سه نوع طراحی برای SCD وجود دارد.
نوع اول: در این نوع از طراحیSCD نیازی به رهگیری تغییرات نمیباشد. استفاده از حالت نرمال بروزرسانی جداول ابعاد بدون اضافه کردن سطر یا ستون خاصی به جدول جهت رهگیری وضعیت تغییرات در دادهها. گزارش با نام جدید نمایش داده میشود و نام قدیمی نادرست در نظر گرفته خواهد شد. همچنین در نوع اول تاریخچه تغییرات ثبت و رهگیری نمیشود.
نوع دوم: SCD نوع دوم کاملا متفاوت و برعکس نوع اول است. در این نوع تمامی تغییرات بدون اعمال تغییر روی دادهها ثبت و رهگیری میشود. برای انجام این کار سطر و ستونهایی به جدول مورد نظر اضافه میکنیم.
تاریخ شروع و تاریخ پایان به همراه یک کلید اصلی جدید جهت ثبت تاریخچه تغییرات به جدول اضافه میکنیم.
به تصویر زیر دقت کنید، به منظور ثبت تغییرات، جدول سمت چپ به جدول سمت راست تغییر میکند و توسط فرآیند ETL دادهها به شکل نمایش داده شده در جدول پایین درج و بروزرسانی میشوند.
نوع سوم: در این حالت پردازش جهت رهگیری تغییرات تا حدودی ساده شده به طوری که فقط نام فعلی و نام قدیمی به همراه تاریخ تغییر را در جدول ذخیره میکنیم. نام جدید با نام قدیمی جایگزین میشود و نام قدیمی در فیلد دیگری به همراه تاریخ تغییرات ثبت میشود. در نوع سوم SCD سطری اضافه نمیشود و فقط ستونهایی برای درج تاریخ تغییرات و مقدار قبلی افزوده میشود. در صورتی که نیاز به ثبت تاریخچه تمامی تغییرات باشیم، باید ستون های دیگری به جدول اضافه کنیم. از این نوع زمانی استفاده میشود که فقط نیاز به اطلاع از داده قبلی باشد.