سلام.
امروز قصد دارم روش طراحی انبارداده رو براتون توضیح بدم.
همانطور که میدونید طراحی انبارداده با طراحی بانک‌های اطلاعاتی رابطه ای تفاوت زیادی داره و دلیل اصلی این تفاوت نوع بهره برداری و در واقع هدف ما از طراحی هست. بنابراین اگر در طول آموزش با مواردی برخورد کردید که حس کردید تمام اصول طراحی بانک‌های اطلاعاتی رو داریم زیر سوال می‌بریم زیاد تعجب نکنید!
تفاوت انبار داده و پایگاه داده
وظیفه اصلی سیستم‌های پایگاه داده online، پشتیبانی از تراکنش‌های online و پردازش query است. ولی انبارداده به کاربران یا تحلیلگر داده و تصمیم گیر نده داده ارائه می‌کند. چنین سیستمهایی می‌توانند داده را در قالبهای مختلف برای هماهنگ کردن نیازهای مختلف کاربران مختلف، سازماندهی و ارائه می‌کند. این سیستم‌ها با نام سیستم‌های OLAP شناخته می‌شوند.
موارد تفاوت DW و DB
• از لحاظ مد لهای داده:
پایگا ههای داده برای مدل OLTP امکان پردازش تعداد زیادی تراکنش همروند، که اغلب حاوی رکور دهای اندکی هستند را دارد. اما انبارهای داده برای پردازش OLAP طراحی شده‌اند.
• از لحاظ عملیات قابل اجرا بر روی آن‌ها:
 عملیاتی که بر روی پایگاه دا ده‌ها صورت می‌گیرد، عمومٌا شامل عملیات به هنگام سازی است در حالی که عمل خواندن از انبار، عمده عملیات قابل اجرا بر روی انبارداده را تشکیل می‌دهد.
• از لحاظ مقدار داده:
مقدار داد ه های یک پایگاه داده در حدود چند مگابایت تا چند گیگابایت است در حالی که این مقدار در انبار داده در حدود چند گیگابایت تا چند ترابایت است.
• از لحاظ زمان پرس و جو :
 انبار داده با استفاده از دو تکنیک خلاصه سازی و سلسله مراتبی کردن فیلدها سرعت انجام پرس وجو را بهبود بخشیده است.
فیلدهای خلاصه سازی:
می‌توان تمام داده های مشابه را دریک آرایه و یک ردیف، و نه در یک جدول قرار داد. به این ترتیب، داد ه های مشابه به سرعت می‌توانند خلاصه سازی شوند. اصو ًلا ساختار بعد این امکان را فراهم کرد ه است که داد ه ها را بدون تکرار ذخیره نماییم و هر گاه به مشاهده آن‌ها در کنار هم احتیاج داشتیم نیز بدون صرف حافظه و زمان قابل توجهی این امر میسر باشد.
 فیلدهای سلسله مراتبی:
ساختار سلسله مراتبی ابعاد در انبار داد ه های مبتنی بر مدل داده چند بعدی، پیاده سازی شده است و این امکان را فراهم آورده است که فیلدها بر اساس یک سلسله مراتب منطقی سازماندهی شوند. این امر سرعت پرس و جوها را در انبار بسیار افزایش می‌دهد.


طراحی چهار گام دارد:
گام یک:
تمام فیلدهای aggregable در جداول بانک اطلاعاتی عملیاتی را شناسایی می‌کنیم. این کار در بحث OLAP به معنی استخراج Measure ها یا سنجه‌هاست.
سنجه‌ها عبارتند از معیارهای قابل جمع بندی در کسب وکار که برای مانیتور کردن وضعیت کسب و کار استفاده می‌شوند.
برای اینکه دید فنی بهتری بهتون بدم میتونم اینطوری خلاصه کنم که سنجه‌ها همون ستون‌هایی در جداول بانک اطلاعاتی شما هستند که شما معمولا برای ساخت گزارشاتتون روی اونها توابع سرجمع مثل Sum , Count , Average , … استفاده می‌کنید. مثل تعداد مشتریان، میزان خرید، تعداد کالاها، مانده بدهی، میزان مالیات پرداخت شده و ...
گام دو.
نام‌هایی که از طریق آن‌ها Measure ها معنی پیدا می‌کنند را پیدا کنید. به عنوان مثال معیار میزان خرید به تنهایی قابل تحلیل و نتیجه گیری نیست اما میزان خرید در طول یک دوره زمانی یا در یک محدوده جغرافیایی خاص یا میزان خرید یک گروه کالایی خاص از محصولات این معیار را معنادار و قابل تحلیل می‌کند.
به این نام‌ها در OLAP بعد یا dimension میگوییم.
ابعادی نظیر زمان و مکان و نوع محصول و ... باید استخراج شوند.
بدیهی است هر بعدی دارای مقادیری است که به هر مقدار یک Lable میگوییم.
بنابراین dimension به مجموعه ای از Lable ها که از نظر مفهومی به هم وابستگی هستند میگوییم.
نام پرکاربردتر یا صحیح‌تر برای Lable همان Member می‌باشد. در واقع Member ها آیتم‌های داخل یک dimension هستند.
گام سوم:
تمام Measure ها را در یک جدول قرار می‌دهیم. این جدول Fact Table نام دارد.
Fact Table :جدولی که مقادیر جزیی Measure ها را نگه داری می‌کند و هر چه تعداد آن‌ها کمتر باشد برای ما بهتر است.
برای ساخت Fact Table 2 نکته مهم تجربی وجود دارد که عبارتند از:
1. سعی کنیم همه Measure ها را در یک جدول جمع آوری کنیم.
2. سعی کنیم در مواقع لزوم، جزئیات را فدای کلیات نکنیم بلکه کلیات را فدای جزئیات کنیم. به شرطی که مفاهیم داده‌ها از بین نرود.
به طور کلی ستون‌های Fact Table 3 نوع هستند:
1. Measure ها.
2. Key Column ها.
3. Foreign Key یا ارجاعات به جداول دیگر.
نکته: سطرهای جدول Fact Table شامل پایین‌ترین سطح از اطلاعات می‌باشند.

گام چهارم:
تمام Dimension هایی که با هم مرتبط هستند را سعی کنید در یک جدول قرا دهید.
Dimension Table : وقتی یک عدد در Fact Table قرار می‌گیرد که عنوان‌های آن را یک جدول دیگر مشخص می‌کند به آن Dim Table میگوییم.
مثال: Dim Table برای تاریخ شامل ستون‌های زیر می‌تواند باشد:
Key . سال. ماه. روز. هفته. دهه. روز از سال. روز از هفته. روز از ماه و...