PDA

View Full Version : کاربرد relationship



master_pro
یک شنبه 02 تیر 1398, 14:38 عصر
کاربرد relationship در اکسس برای حذف و آپدیت آبشاری و انتخاب والد صحیح دیده ام , در php ایجاد relationship بین جداول چه خاصیتی دارد ؟

kazemimorteza
یک شنبه 02 تیر 1398, 23:29 عصر
درود
فرض بفرمایید شما یک جدول book و یک جدول authors (مولفین ) دارید حالا توی جدول مولفین نام کتاب را هم وارد می کنید به عبارتی کلید خارجی هست اگر مقدار این فیلد در جدول book وجود نداشته باشه دیتابیس اطلاعات را ثبت نمیکنه و خطا برمیگردونه. اگه ریلیشن هم نباشه باز هم اطلاعات ثبت میشه.
البته اگه با mysql و phpmyadmin کار کنید اون نمایش ابشاری اطلاعات را می بینید همون طور که اشاره کردید.

master_pro
دوشنبه 03 تیر 1398, 08:32 صبح
منظورتون اینه که اگر ریلیشن بین جداول توسط phpadmin ایجاد کنم در جدول authors رکوردی که فیلد نام کتابش در جدول book نیست در جدول authors درج نمیشه ؟
انتخاب والد صحیح منم منظورم همین بود , پس مشابه اکسس عمل میکنه
غیر از انتخاب والد صحیح , حذف آبشاری و آپدیت آبشاری , ایجاد ریلیشن خاصیت دیگه ای نداره؟
به عنوان مثال وردپرس ریلیشن بین جداولش ایجاد نشده

ali_sed
سه شنبه 04 تیر 1398, 13:43 عصر
سلام

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

از طرفی اگر ما بررسی سازگاری را در سطح برنامه انجام ندهیم و روابط را در دیتابیس پیاده کنیم وقتی کوئری حذف نویسنده را اجرا می کنید دیتابیس خطایی برمی گرداند که شما باید آن خطا را بررسی کنید و پیام مناسبی به کاربر نمایش دهید. اینجاست که سر و کله زدن با خطاهای نامفهوم و متفاوت دیتابیسهای مختلف (بسیاری از برنامه ها قابل اجرای روی دیتابیس های مختلف هستند) کار را مشکل می کند.

master_pro
چهارشنبه 05 تیر 1398, 19:49 عصر
پس به نظر شما اصلا relation رو دیتابیس پیاده نکنیم؟