رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
حذف کلید های خارجی و کنترل ارتباطات به صورت دستی
#1
سلام دوستان
بعضی وقتها پروژه ها آدم رو مجبور می کنن که کلیدهای خارجی رو حذف کنیم و خودمون ارتباطات رو کنترل کنیم
خواستم بپرسم این مسئله روی performance چقدر تاثیر داره؟

ممنون
no pain, no gain
پاسخ
تشکر شده توسط:
#2
قطعاً تأثیر داره. بعید میدونم نشه با تحلیل درست و دقیق، شرایطی فراهم کرد که هم به نیازهای پروژه جواب داده بشه و هم از ارتباطها و کلیدهای خارجی به خوبی استفاده کنیم.
پاسخ
تشکر شده توسط:
#3
چیزی که از پروپزال مشتری متوجه شدیم به این صورته:(حالا تا وقتی بیاد کامل توضیح بده نمی دونم چقدر تغییرات داره)
فرض کنید سه تا جدول A,B,C داریم
جدول B قراره با کلید خارجی به جدول A وصل باشه و جدول C می تونه ارتباطش رو از جدول A یا  B بگیره( یعنی کلیدش معلوم نیست به کدوم جدوله)
شاید بهتر باشه توی جدول C دوتا فیلد کلید خارجی تعریف کنم که یکیش وصل به جدول  اولی بشه و یکیش به جدول دومی و پر شدن و کش شدن اطلاعات و ... رو کنترل کنم؟
no pain, no gain
پاسخ
تشکر شده توسط:
#4
یک راهش همینه و ابداً استفاده از کلیدهای ترکیبی مثل اون چیزی که توی لاراول هست رو توصیه نمیکنم. میتونید چک کنید اگه یکی از فیلدها ست شده باشه، یکی دیگه حتماً باید Null باشه. حتی میتونید از جداول واسط برای ارتباط N به N استفاده کنید.
پاسخ
تشکر شده توسط:
#5
(18-03-1394، 11:18 ق.ظ)ADMIN نوشته: یک راهش همینه و ابداً استفاده از کلیدهای ترکیبی مثل اون چیزی که توی لاراول هست رو توصیه نمیکنم. میتونید چک کنید اگه یکی از فیلدها ست شده باشه، یکی دیگه حتماً باید Null باشه. حتی میتونید از جداول واسط برای ارتباط N به N استفاده کنید.
راه بهتری هم هست که بتونم نتیجه بهتری بگیرم؟
از کلیدهای ترکیبی که گفتید اطلاعاتی ندارم، ممنون می شم راهنمایی کنید که به اشتباه به اون سمت کشیده نشم

تشکر
no pain, no gain
پاسخ
تشکر شده توسط:
#6
اینکه یک فیلد بگذارین برای اسم جدول و یک فیلد هم برای خود کلید که واقعاً کلید نیست و فقط عدد رکورد مربوطه توش هست. مثلاً فیلدهای foreign_id و foreign_table و مثلاً اگه اولی روی 5 بود و دومی روی a یعنی رکورد 5 از جدول a و اگه دومی روی b بود یعنی رکورد 5 از جدول b
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان