ورود

View Full Version : طراحی سیستم حسابداری و انبارداری



stabesh
یک شنبه 24 اسفند 1393, 12:06 عصر
با سلام
من یک سیستم انبارداری طراحی کردم که در اون هر ورود و خروج از انبار به صورت یک تراکنش ذخیره میشود برای اینکه مشخص شود ورودی یا خروجی از کجاست یه جدول کمکی دارم که رکوردهاش فاکتور خرید، فاکتور فروش، فاکتور واردات، فاکتور صادرات هستند که هر کدام یک شناسه دارند و آن شناسه و شناسه فاکتور برای هر رکورد تراکنش ذخیره میشود تا مشخص شود این تراکنش به کجا باید متصل شود تا اطلاعات فاکتور مربوطه آن یافت شود
برای نمایش کلیه ی تراکنش ها مجبورم بین جدول تراکنش و هر فاکتور یک کوئری بزنم و سپس این چهار کوئری را union کنم ولی این کار زمانبر است
حالا برای تراکنشهای حسابداری هم همین مشکل را دارم تازه این بار دیگر 4 جدول نیست بلکه 8 تا جدول هست که باید بین انها و تراکنش حسابداری کوئری بزنم و جواب را union کنم
آیا راه حل بهتری برای طراحی وجود دارد که از دست union زدن خلاص بشم
متشکرم

SabaSabouhi
یک شنبه 24 اسفند 1393, 12:55 عصر
با سلام
من یک سیستم انبارداری طراحی کردم که در اون هر ورود و خروج از انبار به صورت یک تراکنش ذخیره میشود برای اینکه مشخص شود ورودی یا خروجی از کجاست یه جدول کمکی دارم که رکوردهاش فاکتور خرید، فاکتور فروش، فاکتور واردات، فاکتور صادرات هستند که هر کدام یک شناسه دارند و آن شناسه و شناسه فاکتور برای هر رکورد تراکنش ذخیره میشود تا مشخص شود این تراکنش به کجا باید متصل شود تا اطلاعات فاکتور مربوطه آن یافت شود
برای نمایش کلیه ی تراکنش ها مجبورم بین جدول تراکنش و هر فاکتور یک کوئری بزنم و سپس این چهار کوئری را union کنم ولی این کار زمانبر است
حالا برای تراکنشهای حسابداری هم همین مشکل را دارم تازه این بار دیگر 4 جدول نیست بلکه 8 تا جدول هست که باید بین انها و تراکنش حسابداری کوئری بزنم و جواب را union کنم
آیا راه حل بهتری برای طراحی وجود دارد که از دست union زدن خلاص بشم
متشکرم

سلام
راه حل که همیشه وجود داره. یک راه حل اضافه‌کردن یک ستون «ملاحظات» به جدول تراکنش‌ها هست که یک متن رو نگهداری می‌کنه.
هنگامی که بابت هر کدوم از انواع تراکنش‌ها رکوردی اضافه کردی، بنا بر همون مرجع ( فاکتور/ رسید / حواله / . . . ) متن رو تهیه می‌کنی.
زمان گرفتن گزارش هم دیگه نیازی به join زدن نداری، چون اطلاعات مورد نیازت تو این ستون وجود داره.

صبا صبوحی

stabesh
دوشنبه 25 اسفند 1393, 08:14 صبح
خیلی ممنونم که پاسخ دادید
اما در این حالت ما داده های اضافی را ذخیره میکنیم که باعث افزونگیه داده میشه درسته؟
راه حل دیگه ای به نظرتون نمیرسه؟
من تاپیک گفتگوی فنی در مورد سیستم مالی رو هم خوندم ولی بحثش به جایی نرسیده بود
http://barnamenevis.org/showthread.php?264879-%DA%AF%D9%81%D8%AA%DA%AF%D9%88%DB%8C-%D9%81%D9%86%DB%8C-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-Database-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%85%D8%A7%D9%84%DB%8C/page2

SabaSabouhi
دوشنبه 25 اسفند 1393, 10:01 صبح
خیلی ممنونم که پاسخ دادید
اما در این حالت ما داده های اضافی را ذخیره میکنیم که باعث افزونگیه داده میشه درسته؟
راه حل دیگه ای به نظرتون نمیرسه؟
من تاپیک گفتگوی فنی در مورد سیستم مالی رو هم خوندم ولی بحثش به جایی نرسیده بود
http://barnamenevis.org/showthread.php?264879-%DA%AF%D9%81%D8%AA%DA%AF%D9%88%DB%8C-%D9%81%D9%86%DB%8C-%D8%AF%D8%B1-%D9%85%D9%88%D8%B1%D8%AF-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-Database-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%85%D8%A7%D9%84%DB%8C/page2

سلام
نه دوست من، نگران فضای مصرفی نباش. اصولاً پس از نرمال‌سازی ما یک مرحله denormal کردن هم داریم. که برای رسیدن
به سرعت بیشتر ( به ویژه برای گزارش‌ها ) دیتابیس رو از نرمال خارج می‌کنیم. طبیعی هست که فضای بیشتری مصرف
می‌شه، اما این فضا به حدی نیست که شما نگران اون باشی.
من خودم varchar استفاده نمی‌کنم و در این موارد دو تا ستون عددی استفاده می‌کنم. یک ستون مرجع رو نشون می‌ده که شما
هم داری ( مثلاً رسید، حواله، برگشت از فروش، مرجوعی و غیره ) و یک ستون هم شماره سند در جدول مرجع که از ترکیب این
دو ستون مثلاً به عبارت «برگشت از فروش شماره 27» رو به دست میارم.

صبا صبوحی