ورود

View Full Version : انبارداری با تحلیل متفاوت



hamzehsh
چهارشنبه 09 آذر 1401, 11:52 صبح
سلام عزیزان
من تحلیلهای زیادی در مورد دیتابیس انبارداری دیدم و بررسی کردم
دلیل یکسری از کارهایی که انجام میدهند را متوجه نمیشوم.

برای شروع
1 - جدول نام انبار ها
2- جدول کالا ها (برخی از نرم افزارهای معروف بازار یک رابطه 1 به n بین انبار و کالا دارند !!! دلیل این ارتباط را متوجه نمیشوم)
3- جدول اسناد (من همه نوع اسناد را یکسان دیدم با تایپ های متفاوت) رابطه 1 به n با جدول انبار
4- جزئیات اسناد (ردیف های سند) رابطه 1 به n با جدول اسناد و رابطه 1 به n با جدول کالاها

تا اینجا ساده ترین راه برای ساخت دیتابیس انبار هست

چند تا سوال وجود داره که بهترین راه حل چیه یا مزایا و معایب چیه؟ سرعت عمل و دقت یکی از مولفه های مهم هست برای سازمانی که ورود و خروج کالای فراوان دارد بهترین راه حل چیه؟

1- اسناد ورودی + و اسناد خروجی - ثبت بشوند => با sum راحتتر بتوان موجودی گرفت؟
2- همه یک جور ثبت بشوند در نهایت unio بشوند؟ یا اسناد خروجی موقع گزارش در -1 ضرب بشوند و بعد sum
3- جدول "موجودی" اضافه بشود و موجودی ها اینجا نگهداری بشوند؟ ( چند نرم افزار معروف بازار این روش را دارند)
4- جدول کاردکس ایا اصلا نیاز هست؟ وقتی میتوان با select کالاها را بدست آورد چرا باید چنین جدولی وجود داشته باشد؟ ( چند نرم افزار معروف بازار این روش را دارند)
5- جدول جمع سند ( چند نرم افزار معروف بازار این روش را دارند) وقتی میتوان با select بدست آورد چرا باید چنین جدولی وجود داشته باشد؟
6

mazoolagh
پنج شنبه 10 آذر 1401, 12:14 عصر
چند تا سوال وجود داره
من نظر شخصی خودم رو میگم البته:

1 و 2 : سند بهتره یکجا باشه و با یک فیلد نوع سند شناسایی بشه.
3 و 4و 5 : این نگهداری جمع های انباشته (یا هر نوع محاسبه مشابه از جدول ریز عملیات) رو فکر کنم برای بالا بردن سرعت محاسبات انجام میدن.
شاید در نگاه اولی کار خوبی بنظر برسه ولی در کل کار ریسکی هست؛
چون کافیه فقط یک مورد از insert/update/delete در جدول detail از دست دربره و اونوقت اون جمع انباشته در جدول master بی اعتبار هست.
برای اطمینان همه عملیات رو باید در transaction بیارن و روتین trigger ها هم باید خیلی دقیق باشه (بدون تریگر انجام تغییرات در کد خیلی پیچیده میشه).
بهتره نتایجی از این دست فقط موقع نیاز محاسبه بشه.

hamzehsh
شنبه 12 آذر 1401, 14:28 عصر
سلام

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


من دقیقا همین مدلی که نوشتم رو پیاده سازی کردم
هیچ خبری از جدول موجودی یا کاردکس نیست فقط برای جمع سند جدول را جدا کردم اون هم فقط به این دلیل که سربار دیتابیس کم بشه و جمع فاکتور ها را هر بار فراخوانی نکنم
این روش اجرای جداول یعنی موجودی و کاردکس یک مشکل بزرگ ایجاد میکنه!
فرض بر این بگیریم که دو نفر (یا بیشتر) به طور همزمان یک سند را ویرایش انجام بدهند ؟ یا همزمان سند دیگری ثبت کنند
چه اتفاقی برای موجودی میتوان تصور کرد؟

یکی از مواردی که ممکنه بهش فکر کنیم این هست که موقع ویرایش دسترسی سایر کاربران را از ویرایش قطع کنیم همزمان فقط یک نفر بتواند ویرایش انجام بدهد (کاری به روشهای پیاده سازی ندارم)
یا مشابه همین سند را یک نفر دیگر همزمان در حال ثبت در نظر بگیریم! به روز رسانی جداول مرتبط توسط کدام کاربر / تراکنش باید انجام بشود؟

برای کالا با موجودی هایی که چند تاریخ انقضا دارند یا سیستم انبار داری تعدیلی و متفاوت دارند اصلا قابل اجرا نیست.

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