PDA

View Full Version : حرفه ای: ارتباط بین جداول



hossein2007
جمعه 07 خرداد 1389, 21:22 عصر
با سلام خدمت همه دوستان
می خواستم نظرتون رو درباره این جداول و ارتباطشان از لحاظ معماری دیتابیس بدونم.
در این شکل، جدول d از دو مسیر از جدول b تغذیه می شود.
به نظرتون اشکالی پیش نمیاد؟

متشکر.

mohsensaghafi
شنبه 08 خرداد 1389, 01:11 صبح
سلام دوست عزیز.
به خودی خود چون بصورت کاملا شماتیک و فرضی است نمی توان قطعی گفت. می تواند درست باشد یا نباشد. بستگی به اسکوپ پروژه دارد.
یا علی!

pezhvakco
شنبه 08 خرداد 1389, 08:28 صبح
درود :

در این شکل، جدول d از دو مسیر از جدول b تغذیه می شود.
به نظرتون اشکالی پیش نمیاد؟

اگه واقعا لازمه جدول d همزمان با دو جدول a,c ارتباط داشته باشه (شاید در روند کار، سرعت پایین بیاد) و نمی تونی ار ارتباط پلکانی به جای زنجیری اسفاده کنی، مشکل در ارتباط ها در ظاهر پیش نمی یاد .

فکر خوش .

ASKaffash
شنبه 08 خرداد 1389, 09:04 صبح
سلام
Loop است به نظر منطقی نیست ! با مثال واقعی منعکس کنید می شود بحث فنی کرد

محمد سلیم آبادی
دوشنبه 10 خرداد 1389, 13:03 عصر
تا در مورد سناریو بطور دقیق مطلبی گفته نشود نمی شود روی آن بحثی انجام داد. ولی از لحاظ منطقی و قیود هیچ مشکلی به نظر نمی رسد که وجود داشته باشد.

hossein2007
سه شنبه 11 خرداد 1389, 23:30 عصر
از دوستانی که نظرشون رو گفتند واقعا تشکر می کنم و عذرخواهی بابت تاخیر در توضیح دقیق مطلب.

من دو سند دارم، که هر سند از دو بخش سربرگ و اقلام تشکیل شده است.

مشخصات سربرگ سند اول را در جدول b و مشخصات اقلام آن را در جدول c قرارداده ام.
همچنین مشخصات سربرگ سند دوم را در جدول a و مشخصات اقلام آن را در جدول d قرارداده ام.

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

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

شاید یه جور دیگه هم بشه db رو طراحی کرد.
من که فعلا غیر از این ارتباط چیزی به ذهنم نرسید.

با تشکر.

ASKaffash
چهارشنبه 12 خرداد 1389, 07:54 صبح
سلام
این معماری بصورت ذیل است :
- Master/Detail (برای سند اول با جزئیات سند اول)
- Master/Detail/Detail (برای سند اول /سند دوم / جزئیات سند دوم)
کاملا رابطه درختی است

محمد سلیم آبادی
چهارشنبه 12 خرداد 1389, 10:04 صبح
Self-referencing راه حل شماست،
به این طراحی دقت کنید:
(در تصویر به جای وراثتی وارثتی نوشته شده که اشتباه تایپی بر اثر سرعت بالای تایپ بوده است)
http://www.barnamenevis.org/forum/attachment.php?attachmentid=50228&stc=1&d=1275458655

hossein2007
چهارشنبه 12 خرداد 1389, 23:59 عصر
Self-referencing راه حل شماست،
به این طراحی دقت کنید:
(در تصویر به جای وراثتی وارثتی نوشته شده که اشتباه تایپی بر اثر سرعت بالای تایپ بوده است)
http://www.barnamenevis.org/forum/attachment.php?attachmentid=50228&stc=1&d=1275458655


اگه ممکنه توضیح بیشتری بدید. درست متوجه نشدم.
ممنون

محمد سلیم آبادی
پنج شنبه 13 خرداد 1389, 13:26 عصر
اگه ممکنه توضیح بیشتری بدید. درست متوجه نشدم.
ممنون
با این اطلاعات اندکی که وجود داره به نظر می رسه نیازی به چهار جدول برای ذخیره کردن اطلاعات این دو سند وجود نداره. یعنی میشه سربرگ هر دو نوع سند را داخل یک جدول در نظر گرفت و جزئیاتشان را در جدول دیگر.
برای بحث فرزند و والد میاییم از یک جدول دیگه استفاده می کنیم.

بطور مثال در جدول فرزند/والد درخت را پیاده سازی می کنیم. یعنی در واقع اطلاعات هر گره را در آن ذخیره می کنیم.
و در پایان با کمک همین جدول کوئری هایی را که مورد نظرمان هست را برای پیمایش درخت و بدست آوردن گره های زیر شاخه استفاده می کنیم.

در اینترنت راجب self-referencing و adjacency list model و recursive cte و ... جستجو کنید مقاله های زیادی وجود داره که می تونید از آنها چیزهای فراوانی یاد بگیرید.

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

موفق باشید.

hossein2007
جمعه 14 خرداد 1389, 12:19 عصر
متشکر از اینکه وقت گذاشتید.
فکر کنم مساله رو مصداقی شرح دهم بهتر باشه.

ما در سند اول تعدادی اقلام را سفارش می دهیم.
طبعا در سربرگ، مشخصات سفارش دهنده و نیز مشخصات کلی سفارش را می آوریم و در قسمت اقلام مشخصات هر قلم را می نویسیم. نکته مهم این است که به ازای هر قلم یک منبع خرید مشخص می کنیم که نشان می دهد آن قلم را کدام منبع خرید باید بخرد.

هر کدام از منابع خریدی که اسمشان در مقابل هر قلم(در سند اول) آمده بایست یک سند پر کنند.(سند دوم)

مثلا فرض کنید تقاضا دهنده در سند اول سه قلم را تقاضا داده و تعیین کرده که قلم اول را منبع خرید a قلم دوم را منبع خرید b و قلم سوم را منبع خرید c بخرد.

حال هر کدام از منابع خرید یک سند (سند دوم) پر می کنند
(در سند دوم در واقع قیمت واقعی قلم در بازار نوشته می شود)

همون طور که می بینید به ازای هر سند اول ممکن است چند سند دوم پر شود.

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

البته بازم تاکید کنم سوالم دقیقا اینه که طراحی db ام مشکلات اساسی مانند circle یا همچین چیزهایی نداره؟

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

محمد سلیم آبادی
جمعه 14 خرداد 1389, 14:05 عصر
توضیحات این پستتان با پست قبلیتان (پست 6) تطابق نداره! یعنی در پست قبلی گفته بودین که سند دوم دوباره یکسری اقلام داره ولی در این پست به آن اشاره ای نشده.
نظرم اینه که اقلام سند اول باید به اطلاعات سند دوم رجوع کنند. یعنی اول بیایین مشخصات سند دوم و اقلامش را وارد کنید سپس در جدول اقلام سند اول به آن اطلاعات رجوع/لینک بدین (با کمک کلید خارجی).