PDA

View Full Version : سوال: راهنمایی برای relation تیبل ها و نرمالسازی پایگاه داده



Override@
جمعه 27 شهریور 1394, 19:13 عصر
سلام
من یه دیتابیس دارم که مربوط به خط بسته بندی یه شرکت مواد غذایی هست که در اون مواد تحویل گرفته شده از انبار باید در مرحله اول بر اساس کیفیت درجه بندی شوند و بعد از اون بسته بندی، هدف اینه که از هر سری کالایی که بر حسب وزن از انبار تحویل گرفته شده ، درجه بندیهای صورت گرفته با توجه به شماره شناسه پالت تحویل گرفته شده قابل پیگیری باشه مثلا مقدار سورت شده ی درجه دو در فعالیت سورت یک تاریخ مشخص، مربوط به کدوم یک از پالت های تحویل گرفته شده از انبار بوده یا برعکس محصول یا پالت (بر حسب وزن) تحویل گرفته شده مربوط به کدوم سورتها بوده (در چه فعالیتهایی سورت شده.) همین گزارش گیری بین فعالیتهای سورت و بسته بندی صورت گرفته هم نیاز هست. من ارتباط بین جداول رو به صورت زیر تعریف کردم چون راه بهتری به ذهنم نرسید.

135306
مشکلی که هست اینه که من برای ثبت هر یک از فعالیتهای سورت ، بسته بندی مجبور شدم یه تیبل جداگانه بسازم (tblSortAct و PackAct) تا بتونم برای گزارش گیری بین اونها ارتباط برقرار کنم ولی در واقع فیلدهای این فعالیتها مثلا نوع فعالیت ، ساعت کاری ، تعداد اعضای گروه و غیره یکسان هستند از طرفی این کار باعث شده که شناسه ای که به هر فعالیت اختصاص پیدا میکنه تکراری بشه مثلا شناسه 1 هم در فعالیت سورت و هم در بسته بندی که کار من رو برای موارد دیگه خیلی سخت کرده و در صورتی که اگر همه فعالیتها در یک جدول قابل سازماندهی بودند و میشد بین اونها ارتباط چند به چند برقرار کرد که منطقی تر هم هست خیلی بهتر بود.

میخواستم ببینم راهی وجود داره که بشه دو جدول: tblSortAct و PackAct رو جوری با هم ادغام کرد مثلا در یه جدول به اسم Act ولی در عین حال بشه بین دو نوع فعالیت سورت و بسته بندی ارتباط برقرار کرد؟

خلاصه بخوام بگم آیا میشه بین رکوردهای یک تیبل به یه روشی ارتباط چند به چند برقرار کرد؟ اگر امکانپذیر نیست (که به احتمال 99 درصد نیست) راه حل شما برای این مورد خاص چیه؟
لطفا کمکم کنید چون واقعا کلافه شدم. ممنون از پاسخگویی

Override@
جمعه 27 شهریور 1394, 19:46 عصر
من relation رو به این شکل تغییر دادم که فیلدهای مشتترک مربوط به فعالیتهای سورت و بسته بندی رو از جداول مربوطه حذف کردم و اونها رو در قالب یک جدول جدید به نام tblActID به دیتابیس اضافه کردم و بین ActID در جدول tblActID و کلید sortActID ازجدول tblSortAct ,همچنین دوباره بین ActID از جدول tblActID و کلید PackActID ازجدول tblPacktAct رابطه ی یک به یک برقرار کردم.
ولی این راه هم یه مشکل دیگه داره و دو تا سئوال مطرح میشه:
1. چه طوری میتونم همزمان شناسه اختصاص یافته در تیبل tblActID رو در جدول مربوطه، بر اساس نوع فعالیت در tblSortAct یا tblPackAct ثبت کنم؟ مثلا اگر با VBA کدی بنویسم که بعد از ثبت رکورد، ID فعالیت رو در جدول صحیح ثبت کنه به نظرتون را حل درستی هست یا خیر؟
2.از لحاظ مبحث نرمالسازی و بهینه سازی سایر موارد مثل سهولت گزارش گیری و آپدیت و حذف آیا ریلیشنهای یک به یک که بین( tblSortAct و tblActID )-- ( tblSortAct و tblPackAct )-تعریف کردم مشکلی نداره؟

135307

والبته سئوال اصلی که در پست قبل پرسیدم هنوز به پاسخ نیاز داره - این فقط یه راه حل بود که به ذهنم رسید نمیدونم کار رو خراب تر کردم یا بهتر و هنوز به راهنمایی اساتید محترم و بزرگوار و دوستان عزیز نیاز دارم.

Rasool-GH
جمعه 27 شهریور 1394, 21:49 عصر
سلام
به نظر میرسه در مواردی از سوال با هم همدردیم .
برای جلوگیر از پراکندگی مباحث به این لینک مراجعه کنید . شاید مورد استفاده واقع بشه .
http://barnamenevis.org/showthread.php?320114-%D9%86%D8%B1%D9%85%D8%A7%D9%84-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87

Override@
جمعه 27 شهریور 1394, 22:37 عصر
سلام
به نظر میرسه در مواردی از سوال با هم همدردیم .
برای جلوگیر از پراکندگی مباحث به این لینک مراجعه کنید . شاید مورد استفاده واقع بشه .
http://barnamenevis.org/showthread.php?320114-%D9%86%D8%B1%D9%85%D8%A7%D9%84-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87

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

Override@
شنبه 28 شهریور 1394, 10:28 صبح
خب کسی جواب نمیده منم هی relation تغییر میدم میذارم اینجا تا یکی دلش بسوزه یه راهنمایی یا سرنخی بده یا دست کم بگه اینجوری بهتر شده یا بدتر.:افسرده:

135316

Rasool-GH
شنبه 28 شهریور 1394, 11:43 صبح
سلام . اقا یکم حوصله کن . بچه ها دائم سرکشی نمیکنن . یه مقدار طول میکشه جواب بگیری . ضمنا کل چارت برنامه رو بدون نمونه فایل اینجا گذاشتی تقریبا کسی چیزی نمیفهمه . هم سادش کن هم نمونه بزار که فقط قسمتی که مشکل داره بررسی بشه

Override@
شنبه 28 شهریور 1394, 13:43 عصر
سلام . اقا یکم حوصله کن . بچه ها دائم سرکشی نمیکنن . یه مقدار طول میکشه جواب بگیری . ضمنا کل چارت برنامه رو بدون نمونه فایل اینجا گذاشتی تقریبا کسی چیزی نمیفهمه . هم سادش کن هم نمونه بزار که فقط قسمتی که مشکل داره بررسی بشه

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

Rasool-GH
شنبه 28 شهریور 1394, 15:30 عصر
چرا جداول سورت و بسته بندی رو جدا کردین در حالی که فیلدها مشترک هستند و به راحتی در یک جدول میتونستی تجمیع کنی و یک شناسه به هر رکورد اختصاص بدی ؟

Override@
شنبه 28 شهریور 1394, 16:11 عصر
چرا جداول سورت و بسته بندی رو جدا کردین در حالی که فیلدها مشترک هستند و به راحتی در یک جدول میتونستی تجمیع کنی و یک شناسه به هر رکورد اختصاص بدی ؟

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

فکر کنم تنها راه منطقی و درستش این باشه که دو جدول رو ادغام کنم و بسته به نیاز با استفاده از sub query و query روابط مورد نیاز رو ایجاد کنم و در حالت کلی relation برقرار نکنم.

اینم فایل نمونه: https://www.dropbox.com/s/ks0xhmpc0atyo1e/rel%20Problem1.0.rar?dl=0