مهدی
3 سال پیش توسط مهدی مطرح شد
2 پاسخ

اگه کلید خارجی رو قرار ندیم چ اتفاقی میوفته

سلام یه سوالی که برام پیش اومده بود اینه که مثلا اگه ما بجای اینکه کلید خارجی رو اینجوری تعریف کنیم

table->foreignId('user_id')->references('id')->on('users')->onDelete('cascade')

بیایم و به این شکل وارد کنیم

table->integer('user_id');

چ مشکلی پیش میاد؟
البته ارتباط ها رو در Model ها تعریف میکنیم


ثبت پرسش جدید
Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش آپدیت شد
4

سلام. سوال خوبیه و برای همین همیشه میگم برنامه‌نویسی فقط تجربه نیست و قبل این دانش و تئوریه. شما از کلید خارجی باید استفاده کنید تا:

  1. integrity دیتابیس حفظ بشه. فکرشو کنین که یه یوزر حذف شده ولی کامنت‌هاش موندن، حالا کامنت‌هایی داریم که به کاربری که وجود نداره اشاره می‌کنن!
  2. Foriegn Keyها ایندکس میشن، پس وقتی روی اونها شرطی اجرا بشه، سرعت بهتری رو شاهد هستید.

saman
@saman1111 3 سال پیش مطرح شد
0

سلام
کلید خارجی در سطح دیتابیس تعریف نمیشه در اون صورت، فقط مثل یک عدد معمولی عمل میکنه
ولی در لاراول بدون مشکل کار میکنه. تفاوت خاصی حس نمیکنید


Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش آپدیت شد
4

سلام. سوال خوبیه و برای همین همیشه میگم برنامه‌نویسی فقط تجربه نیست و قبل این دانش و تئوریه. شما از کلید خارجی باید استفاده کنید تا:

  1. integrity دیتابیس حفظ بشه. فکرشو کنین که یه یوزر حذف شده ولی کامنت‌هاش موندن، حالا کامنت‌هایی داریم که به کاربری که وجود نداره اشاره می‌کنن!
  2. Foriegn Keyها ایندکس میشن، پس وقتی روی اونها شرطی اجرا بشه، سرعت بهتری رو شاهد هستید.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام