# پایگاه‌های داده > SQL Server > T-SQL > تحلیل و طراحی بانک اطلاعات >  مشاوره جهت تحلیل و پیاده سازی دیتابیس اتوماسیون

## Me3ter

سلام من در حال تحلیل دیتابیس ۱ اوتماسیون هستم که شامل ۲ بخش می‌شه


بخش  ۱ که اطلاعاتی از کارگاهای تعمیرات این شرکت در اون نگهداری می‌شه که شامل انبار قطعات ثبت دستگاها وارد شده جهت تعمیر ،اطلاعات تعمیر و قطعات مصرف شده جهت تعمیر میباشد


بخش ۲ شامل اطلاعات نگهداری از دستگهای در حال استفاده  هست مثل پمها تابلوهای برق و... که روال خاص خودشونو داره چکاب‌های روزانه هفتگی ماهیانه و.... که در نهایت شعبه اصلی‌ می‌خواد به صورت لحظه‌ای این اطلاعات رو  رسد کنه حالا چالش من اینه که این سیستم باید این ویژگی  رو داشته باشه که بتونه شعبه جدید ایجاد کنه و اون شب شامل ۲ بخش بالا که گفتم باشه 
یعنی‌ توی هر شب ایجاد شده اطلاعات قسمت کارگاها و قسمت نگهداری جدا ذخیره باشه من ۲ روش در نظر دارم که این دیتابیس رو پیاده سازی کنم 


۱ اینکه یک دیتابیس مشترک درست کنم که در اون بخشها جدا تعریف شده باشن بعد توی جدول مربوط به هر موجودیت کلید خروجی اون شعبه رو ذخیره کنم مثلا توی جدول انبار کلید خروجی شعبه و کارگاهو واسه هر کالا تعریف کنم که مشخص باشه این کالا واسه انبار کدوم شعبه و کدوم کارگاه از اون شعبه هست و به همین شکل برای تمام موجودیت ها(دستگاها،بردهای تعمیری و ...) پیاده سازی شه یعنی هر دستگاه از کدوم شعبه و کدوم کارگاه اون شعبه هست


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


۲ اینکه برای هر شعبه یک دیتابیس جدا تعریف کنم و در نسخه مدیریت تمام دیتاها رو  از این دیتابیس ها  به صورت دست بندی شده نمایش بدم 

حالا از اساتید محترم خواهش می‌کنم منو رهنمایی کنند که به چه شکل این پیاده سازی رو انجام بدم و بهترین تحلیل رو داشته باشم امیدوارم تونسته باشم منظورمو برسونم.

----------


## mmbguide

سلام

البته بطور تقریبی چقدر اطلاعات قراره که در بانک اطلاعاتی در طول سال ها جمه آوری بشه؟ این شعبه ها و کارگاه ها در یک مجموعه واقع شده اند و از طریق شبکه داخلی به هم متصل هستند یا بین استانی و...

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

----------


## Me3ter

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

----------


## mmbguide

میتونید بگید که میزان تراکنش هر کاربر در روز چقدره و از هر شعبه قرار چند نفر همزمان با سیستم کار کنند؟

من پروژه ای انجام دادم که چندین میلیون رکورد داره و برای ذخیره مستندات پروژه های مختلف از 3 تا هارد برای ثبت مدارک و تصاویر استفاده شده و سیستم سرعت خوبی داره و دسترسی ها به خوبی مدیریت میشه. البته بستر شبکه داخلی هستش ولی از بابت عملکرد SQL هرگز به مشکل برنخوردم چون بخوبی برای این حجم از اطلاعات ساخته شده.

----------


## Me3ter

هر شعبه شامل 8 بخش اداری میشه و بخش 6 کارگاهی
 در هر بخش 2 کاربر فعال که روزانه بالا 100 فرم چکاب وسایل رو وارد میکنند 
در هر کارگاه هم که ب همین شکل که با توجه به عملیات های روزانه تعمیر ورود و خروج وسایل و وقطعاتی که مصرف میشه رو ثبت میکنن 
و هرکدام ار این بخشها روزانه گزارشهای سنگینی از داده های وارد شده باید تولید کنند
در حال حاضر 6 شعبه که هر کدام 8 بخش اداری و 6 بخش کارگاهی دارند و هرکدام در شهرهای مختلف قرار دارن

----------


## mmbguide

منظورتون از گزارش سنگین چیه؟ فرض کنید 200 تا 400تا کاربر دارید. قطع به یقین باید سرور رو قویتر کنید.

اما اگر گارگاه ممکنه در جایی باشه که دسترسی به اینترنت به درستی برقرار نباشه میتونید برنامه رو برای هر شعبه جداگانه پیکربندی کنید.

بطور کلی میخوام بگم SQL ضعف نداره بلکه باید درست طراحی کنید. نمونه برنامه ای که گفتم کار کردم ظرف مدت 3 سال بالای 900 زونکن مدارک جمع آوری شده و برنامه با سرعت خوبی داره کار میکنه.

----------


## Me3ter

بله دوست عزیز قطعا اس کیو ال ضعف نداره 
اینطور که من برداشت کردم برنامه شما واسه یک شعبه هست‌ و همه در یک مجموعه هستند 
ولی در این سیستم که من میگم شما فرض کن بعد از همون ۳ سال همینقدر مقدار اطلاعات از هر بخش هر شعبه و کارگاها ثبت شه 
چ اتفاقی میوفته ؟ 
منم هدفم از ایجاد این تاپیک همفکری برای ایجاد هرچه بهتر  این دیتابیس هست حالا شما اگه میگی دیتا بیس مشترک کمی از جزیاتش بگو  ممنون

----------


## mmbguide

از نوع سوالی که میپرسم ناراحت نشید چون من هنوز متوجه نمیشم که چرا این حجم اطلاعات باید بین شعب جابجا بشه. عموما اطلاعات کم کم جمع آوری میشه و برحسب نیاز اطلاعات مورد نظر ارسال میشه. شما باید در انتها به یک نمونه از تراکنش در طراحی برنامت رو بررسی کنی که مثلا فلان نوع عملیات بنابه ماهیتش باید 100 MB ارسال کنه و تکرار این تراکنش مثلا هفتگی و یا ماهانه هستش. اگر بتونی یک الگوی نسبتا دقیق از کار داشته باشی اونوقت بهتر میشه نتیجه گیری کرد که چه سناریوی بهتر جواب میده.

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

نمونه برنامه من بدلیل موقعیت جغرافیایی در یک ناحیه با فواصل تقریبا 5 کیلومتری از سه شعبه مختلف داره کار میکنه و تنها بخشی از برنامه داره اطلاعات حدود 4500 تجیهیز رو مدیریت میکنه و فعالیت های دیگه... بانک برنامه در حال حاضر حدود 400 جدول و حدود 800 پروسیجر هم داره. سنگین ترین عملیاتی که برنامه داره تولید یک گزارش با تمام مدارک پیوست شده هستش که 250 MB میشه و دائم و توسط همه تولید نمیشه بلکه مسئول مربوطه بصورت هفتگی تولید میکنه و زمانبر بودن تولید این گزارش با توجه به پریود درخواست آن تقریبا طبیعی هستش و کاربر هم نارضایتی نداره و این حجم با اینترنت امروز هم بخوای دانلود کنی خیلی سنگین نیست.

----------

