PDA

View Full Version : مشکل با Master Detail در جداول DBISAM



Mojgan110
دوشنبه 13 آذر 1385, 16:03 عصر
سلام http://www.millan.net/minimations/smileys/veiledsmile1.gif

من جدولی که میخوام Master باشه را یک فیلد Code داره که Primary Index هست

جدولی که میخام Detail باشه هم همان فیلد Code را داره بعلاوه یک فیلد به اسم num که AUTO INC است و هردوتای این فیلدها را روی هم رفته ، Primary Key گرفتم برای جدوله.

حالا موقعی که میخوام Master/Detail را روی فیلد Code بین آنها برقرار کنم ، خطایی میگیره که در شکل دیده میشهhttp://kay.smiley.free.fr/images/926.gif

http://www.heresmyimage.com/uploads/063a47a4b5.png

مثل اینکه Master/Detail توی جداول DBISAM ، یک کم باید متفاوت باشه.

اگه کسی اطلاع داره ، راهنمایی کنید لطفا.http://www.cat-pause.com/fatcat.gif

ghabil
دوشنبه 13 آذر 1385, 21:48 عصر
قبل از اینکه به سوالت برسیم میشه بگی اصلا چرا وقتی یک فیلد AutoInc داری دیگه با یک فیلد دیگه ترکیبش کردی که بشه PrimaryKey؟ کلید در جدول برای اینه که باهاش بشه یک رکود منحصر به فرد رو شناسایی کرد و یک فیلد AutoInc به تنهایی برای این کار ایده آل هست دیگه.
از این موضوع که بگذریم این فیلدها مگه PrimaryKey جدول Detail نیستند ؟ پس شکی نیست که نمیشه ازشون بعنوان ForiegnKey استفاده کردو باهاشون یک رابطه مستر/دیلتیل درست کرد. چون قابل تکرار نیستند که بخواهند طرف چندگانه یک رابطه یک به چند باشند.
پس فکر میکنم بهتره یکبار دیگه با دقت بیشتر روابط دیتابیست رو طراحی کنی.

Mojgan110
دوشنبه 13 آذر 1385, 23:43 عصر
قبل از اینکه به سوالت برسیم میشه بگی اصلا چرا وقتی یک فیلد AutoInc داری دیگه با یک فیلد دیگه ترکیبش کردی که بشه PrimaryKey؟برای اینکه میخواستم بصورت Foreign Key ازش استفاده کنم. ! یعنی مثلا توی جدول Master ، رکوردی دارم که کلید اصلیش مثلا مقدارش ARC04 هست ( همان فیلد کد) .
حالا در جدول Detail هم باید داشته باشم یک فیلد Code دیگه درسته ؟ که بتونم رابطه MasterDetail برقرار کنم. از طرفی چون جدول Detail بودش ، پس امکان داره که اون فیلده Code ، چندین بار تکرار بشه در رکوردهای مختلف. پس برای همین یک فیلد AutoInc هم ساختم تا اون هی زیاد بشه و یونیک باشه و در ترکیب با Code ، یک P_K بسازه که بعدن بتونم قسمتی از این P_K را ( یعنی همان فیلدCode را) ، با فیلد Code از جدول Master ، ارتباط بدهم.

شما میفرمایین چجوری طراحی کنم ؟ http://kay.smiley.free.fr/images/1670.gif

ghabil
سه شنبه 14 آذر 1385, 00:04 صبح
من نمی فرمایم عرض میکنم ، تازه اونم من عرض نمیکنم اینطوری عرض شده که : همون AutoNumber میشه فیلد PrimeryKey جدول ، فیلد کد هم به تنهایی میشه فیلدی که باهاش Relation برقرار میشه (اصلا هم PrimeryKey نیست و نباید باشه)، تازه حتی از این هم عرض شده تر(توصیه شده تر). اینه که جدول مستر هم کنار کد یک دونه فیلد AutoNumber بگیری و توی جدول دیتیل هم مقدار اون فیلد(AuthoInc) رو نگهداری ، یعنی رابطه رو روی فیلد اطلاعاتیت(در اینجا کد) نبندی.
این کار فواید زیادی عرض میکنه (داره) .

Mojgan110
سه شنبه 14 آذر 1385, 00:08 صبح
http://www.millan.net/minimations/smileys/thankyou.gif
مرسی از راهنمایی تون
فردا طراحی جدولم را اینجوری که راهنمایی کردین تغییر بدم.
اگه مشکلی بود ،* مزاحم میشم again ! http://www.millan.net/minimations/smileys/flowerysmile.gif

Mojgan110
چهارشنبه 15 آذر 1385, 11:35 صبح
با تشکر از design guide line های جناب قابیل.http://www.millan.net/minimations/smileys/thankyou.gif
اون موارد را هم در طراحی جدولم ، لحاظ کردم.

در مورد مشکل خاصی که داشتم :

ترتیب مهم است ! یعنی وقتی کلیداصلیه ترکیبی تعریف کردم ، اون فیلدی که میخواستم بعنوان Join عمل کنه ، بایستی در سمت چپ ترین قرار میگرفت. مثلا اگه قراربود از فیلد code بعنوان Join استفاده میکردم ، ترتیب اضافه کردن فیلدهام به P_K اینجوری باید باشه که اول code وبعدش مثلا فیلده radif ، یعنی اینجوری : code;radif . ولی قبلا اینجوری بود که غلط میگرفت : radif;code