PDA

View Full Version : ایجاد جداول هر سال به صورت جداگانه در SQL



fa90_9
سه شنبه 03 خرداد 1390, 12:11 عصر
من یک برنامه حسابداری مینویسم میخوام ببینم میتونم جداول هر سال را به صورت جداگانه ذخیره بکنم
و اینکه آیا میشه sp,trigger,function را بصورتی ایجاد کرد که روی همه جداول هر سال جواب بده
1)آیا میشه این کارا کرد؟
2)اگه میشه یه راهنمایی میکنید؟؟
ممنون

یوسف زالی
سه شنبه 03 خرداد 1390, 12:19 عصر
سلاک.بله می شه.
کافیه که سال مالی رو به عنوان پارامتر به SP پاس کنید.
بعد با شرط handle کنید.

Reza_Yarahmadi
سه شنبه 03 خرداد 1390, 18:39 عصر
کافیه که سال مالی رو به عنوان پارامتر به SP پاس کنید.
بعد با شرط handle کنید.
در اینصورت برای 10 سال باید 10 شرط گذاشت و بعد از 10 سال هم برنامه عملا از کار میفته و ...

آیا میشه sp,trigger,function را بصورتی ایجاد کرد که روی همه جداول هر سال جواب بده
SP ها رو میشه با استفاده از Dynamic Query طوری طراحی کرد که بتونه این قضیه رو هندل کنه ولی برای Function و Trigger ها نمیشه به این صورت عمل کرد. از طرفی هم Dynamic Query مشکلات خاص خودش رو داره.
به نظر من نیازی به جدا کردن جدولها نیست و میشه سال مالی رو به وسیله یک فیلد هندل کرد.
ولی اگر مایلید حسابهای هر سال جدا باشه پیشنهاد میکنم بعد از اتمام سال مالی جداولی با توجه به سال ایجاد کنید و اطلاعات جداول اصلی رو به این جداول انتقال بدید و جداول اصلی رو ریست کنید. در این روش نیازی به تغییر همه کدهاتون نیست و فقط بخشی که با حسابهای سالهای گذشته کار دارند داینامیک طراحی میشن.

AminSobati
پنج شنبه 05 خرداد 1390, 11:41 صبح
سلام دوست عزیزم،
شما میتونین اطلاعات مالی رو در یک جدول داشته باشین و از امکان Partitioning خود SQL Server بهره ببرین. در این وضعیت، Queryهای شما همواره ثابت خواهند بود و مقدار سال مالی در Query مشخص میکنه که کدوم Partition باید خوانده یا ویرایش بشه

fa90_9
شنبه 07 خرداد 1390, 09:21 صبح
سلام
اگه هر سال که تمام میشه یه backup بگیرم به نام همان سال و جدول اصلی را خالی کنم و به ازای تغییر سال هم به همین صورت یعنیbackup , restore کنم مشکلی پیش میاد؟؟
اصلا امکان پذیر هست چنین کاری؟؟؟؟

fa90_9
شنبه 07 خرداد 1390, 09:35 صبح
سلام
ممنون از همه لطف کردین
من میتونم بعد از پایان هر سال از جداول backup بگیرم و جداول اصلی را خالی کنم و برای تغییر سالها هم به همین صورت یعنی backup , restore
آیا امکانش هست ؟؟؟مشکلی پیش نمیاد

hossein_h62
یک شنبه 08 خرداد 1390, 17:00 عصر
من میتونم بعد از پایان هر سال از جداول backup بگیرم و جداول اصلی را خالی کنم و برای تغییر سالها هم به همین صورت یعنی backup , restore
آیا امکانش هست ؟؟؟مشکلی پیش نمیاد
سلام
روش جالبی نیست، بهترین روش همونی که در پست 4 جناب ثباتی گفتند.

AminSobati
دوشنبه 09 خرداد 1390, 23:02 عصر
Partitioning سعی داره کار شما رو راحت تر کنه، یعنی دیگه نیازی نداشته باشین که برای تهیه گزارشهای جامع (مربوط به چند سال) با بیش از یک جدول طرف بشین. ولی نگه داری Partitioning و همچنین دیتابیسهای جدا، هر کدوم زحمت خودش رو خواهد داشت. وقتی تعداد دیتابیسها افزایش پیدا کنه، باید یک View داشته باشین که هنگام تهیه گزارشهای جامع خودش از تمام دیتابیسها براتون اطلاعات جمع آوری کنه. با پایان هر سال مالی و تشکیل دیتابیس جدید، این View هم باید به روز بشه. مگر اینکه کلا دو دیتابیس داشته باشید، یکی برای سال جاری و یکی بعنوان آرشیو. با این کار نگهداری کمی راحت تر میشه. البته تصور نکنید که Partitioning یک روش بدون زحمت هست، اون هم موارد خودش رو در نگهداری میطلبه. از مهمترین محاسنش این هست که تمام Queryهای شما و همچنین دستورات ویرایشی، با یک دیتابیس و یک جدول سروکار خواهند داشت.
به عنوان جمع بندی، هر روش آرشیو سازی مزایا و معایب خودش رو داره. اینکه از Backup/Restore های سالانه استفاده کنین مردود نمیکنم. سالیان سال قبل از SQL Server 2005 که Partitioning رو ارائه کنه، اون روش استفاده میشده. لذا اگر با این شیوه احساس راحتی میکنید میشه استفاده کرد