نمایش نتایج 1 تا 8 از 8

نام تاپیک: نحوه محاسبه در پشت پرده

  1. #1

    Question نحوه محاسبه در پشت پرده

    سلام
    ما جدولی داریم مانند جداول جسابداری که شامل ستون های زیر است

    به عنوان مثال
    ردیف، نام شخص، مبلغ بدهکار، مبلغ بستانکار، مبلغ باقیمانده

    داده نمونه جدولمون
    1- سید، 1000 / 0 / 1000
    2 - سید، 1000 / 0 / 2000
    3- سید، 5000 / 0 / 7000
    4- سید، 0 / 3000 / 4000

    حالا اگه ردیف 2 حذف بشه باید باقیمانده هم تغییر کنه

    1- سید، 1000 / 0 / 1000
    3- سید، 5000 / 0 / 6000
    4- سید، 0 / 3000 / 3000

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

  2. #2
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: نحوه محاسبه در پشت پرده

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

  3. #3
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: نحوه محاسبه در پشت پرده

    سلام باقیمانده یه مقدار محاسباتی هست نمیشه در دیتابیس ذخیره کرد.الان که ذخیره کردی مشکل پیش آماده .وقتی سندی حذف یا وریرایش بشود کل باقیمانده های ذخیره شده باید اصلاح شود که در کل این پیاده سازی اصلا مناسب نیست.
    First,solve the problem then write the code

  4. #4

    نقل قول: نحوه محاسبه در پشت پرده

    شما فکر کنید حجم زیادی ردیف داشته باشیم. مشکل ساز نمیشه؟ سرعت اجرا کم نمیشه؟

  5. #5
    کاربر دائمی آواتار رامین مرادی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    آذربایجان
    پست
    1,961

    نقل قول: نحوه محاسبه در پشت پرده

    نقل قول نوشته شده توسط hosseinbarnamenevis مشاهده تاپیک
    شما فکر کنید حجم زیادی ردیف داشته باشیم. مشکل ساز نمیشه؟ سرعت اجرا کم نمیشه؟

    اونقدری محسوس نیست که مشکل ساز بشه.مخصوصا نوع داده هاتون رو هم اگه درست انتخاب کنید خود اس کیو ال میتونه محاسبه هم کنه نیاز نیست سمت برنامه انجام بدید.
    تو روش خودتون باید برفرض مثال هزارتا رکورد وجود داشت و ردیف اولتون تغییر میکرد باید 999 رکورد دیگتون رو ویرایش میکردید .
    حالا خودتون فکر کنید ببینید کدوم روش صلاح کارتونه.

  6. #6

    نقل قول: نحوه محاسبه در پشت پرده

    نقل قول نوشته شده توسط hosseinbarnamenevis مشاهده تاپیک
    سلام
    ما جدولی داریم مانند جداول جسابداری که شامل ستون های زیر است

    به عنوان مثال
    ردیف، نام شخص، مبلغ بدهکار، مبلغ بستانکار، مبلغ باقیمانده

    داده نمونه جدولمون
    1- سید، 1000 / 0 / 1000
    2 - سید، 1000 / 0 / 2000
    3- سید، 5000 / 0 / 7000
    4- سید، 0 / 3000 / 4000

    حالا اگه ردیف 2 حذف بشه باید باقیمانده هم تغییر کنه

    1- سید، 1000 / 0 / 1000
    3- سید، 5000 / 0 / 6000
    4- سید، 0 / 3000 / 3000

    نمیدونم باید چجوری اینو حل کنم که باقیمانده اصلاح بشه به شکلی هم که اگه تعداد ردیف ها زیاد هم باشه باعث کند شدن سیستم نشه
    دوستان ممنون میشم کمکم کنین
    به هرحال در این روش که شما یک فیلد محسباتی را در یک جدول ذخیره کرده باشید، هم یکسری منافع خواهد داشت و اینکه حتما باید این فیلد را از جدول خارج کنید! تا کارائی بهتری نصیبتان شود نمی تواند کاملا درست باشه! بنابراین هم چالش هایی را دربر خواهد داشت وهم منافعی کاملا بستگی به نحوه برنامه نویسی و نوع نرم افزار شما وخیلی عوامل دیگه بستگی داره.
    ولی اگر هم نخواهید این فیلد مانده را از جدول تون خارج کنید، وبعد از هر بار تغییر رکوردهای وابسته را هم به روز کنید!
    در صورتی که نرمال سازی پایگاه داده را حداقل تا 2 لایه ویا بیشتر به خوبی انجام داده باشید و اعمال قوانین یکپارچگی داده ها را در فیلد های مورد نظر و در جداول مورد نظر اعمال کرده باشید به راحتی خود SQLServer این عملیات به روز رسانی را براتون انجام میده وشما نگران نوشتن محاسبات مجدد در سمت محیط کد نویسی نخواهید بود.
    البته حتما سعی کنید که این قوانین را بادقت اعمال کنید و حتما از مجموع عواملی که در بازدهی SQLServer دخالت دارند هم نهایت استفاده را ببرید مثل ایندکس های کلاستری و فایل استریم ها و پارتیشن بندی و ....
    درباره سرعت هم به راحتی می توانید از ابزارهای Profiler استفاده کنید تا هم estimate plan وهم actual plan ها را نسبت به عملیاتهای I/O در SQLServer پیش بینی کنید تا بتونید قوانین و یا حتی کوئری ها و خیلی اعمال مرتبط با جداول را پایه ریزی کنید تا بهترین نتیجه را دریافت کنید!
    البته از مجموع تریگرها و CDC ها به همراه SQL Server Integration Service ها هم برای این اهداف استفاده کنید. البته پیچیدگی هم بسیار زیاد خواهد شد و البته در صورت استفاده نادرست بازدهی هم مطمنا پایین خواهد بود

  7. #7
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: نحوه محاسبه در پشت پرده

    با سلام
    استفاده نکردن از فیلد محاسباتی فقط کدنویسی های بی فایده و غیر ضروری را افزایش میده و روش مطمئنی هم نیست. اولا به قول جناب مرادی فرض کنید 1000 ردیف داشته باشیم شما باید یکسری محاسبات انجام دهید تا مبلغ مانده در هر سطر بدست بیاید بعد دوباره رکوردها رو آپدیت کنید. یعنی در هر صورت محاسبات تعیین مانده در هر سطر باید انجام شود. در روش شما فقط یک کار اضافه (یعنی آپدیت هر رکورد) هم باید انجام شود. یک اشتباه کوچک ممکن است حسابهای کاربران و مشتریان آنها را خراب کند که شما را به دردسر می اندازد.

    ضمنا روشهایی برای نمایش رکوردها وجود دارد مثلاً صفحه بندی اطلاعات در گرید که سرعت نمایش را بالا می برد.

  8. #8

    نقل قول: نحوه محاسبه در پشت پرده

    ممنون از دوستان بابت راهنمایی
    مثالی ندارین برای بروزرسانی در صورتی که ما فیلد محاسباتی رو داشته باشیم و نخوام پاک کنم؟

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •