PDA

View Full Version : ایجاد کلیدهای خارجی و اصلی و ارتباط بین این دو در mysql



saeedphp
جمعه 17 آذر 1391, 00:05 صبح
با سلام خدمت دوستان
2تا جدول دارم یکیش دارای کلید اصلی هست که قراره 1 جدول فرعی رو هم پوشش بده
مثال:
جدول اول : اطلاعات دانشجو کلید اصلی:ID
جدول دوم : آدرس دانشجو کلید خارجی: ID (کلید اصلی جدول اول)
تو mysql چجوری تعریف کنم
با سپاس

pary_daryayi
جمعه 17 آذر 1391, 07:01 صبح
معمولا آدرس دانشجو در همون جدول دانشجو قرار میگیره . چون یک دانشجو یک آدرس داره و قرار نیست اضافه بشه.
معمولا جدول دروس و نمرات از جدول دانشجو تفکیک میشه.

برای تعریف جداول هم همونطور که خودتون گفتید فیلد کلید اصلی جدول اول ، میشه کلید خارجی جدول دوم.
مثلا :
جدول STUDENT :
student_id
fname
lname
tel
جدول SCORE :
id
student_id
score و ....

اگر میخواید هنگام حذف دانشجو تمام اطلاعات اون در جداول دیگه ای که بهش مربوط هستند بصورت خودکار حذف بشن ، میبایست از ویژگی cascade استفاده کنید.

navid3d_69
جمعه 17 آذر 1391, 12:22 عصر
با سلام خدمت دوستان
2تا جدول دارم یکیش دارای کلید اصلی هست که قراره 1 جدول فرعی رو هم پوشش بده
مثال:
جدول اول : اطلاعات دانشجو کلید اصلی:ID
جدول دوم : آدرس دانشجو کلید خارجی: ID (کلید اصلی جدول اول)
تو mysql چجوری تعریف کنم
با سپاس
برای تعریف و ارتباط جدول ها توی mysql اگر از phpmyadmin استفاده می کنی توی قسمت structure جدول گزینه relation view رو بزن و فیلد های ارتباطی رو انتخاب کن

saeedphp
جمعه 17 آذر 1391, 16:03 عصر
معمولا آدرس دانشجو در همون جدول دانشجو قرار میگیره . چون یک دانشجو یک آدرس داره و قرار نیست اضافه بشه.
معمولا جدول دروس و نمرات از جدول دانشجو تفکیک میشه.

برای تعریف جداول هم همونطور که خودتون گفتید فیلد کلید اصلی جدول اول ، میشه کلید خارجی جدول دوم.
مثلا :
جدول STUDENT :
student_id
fname
lname
tel
جدول SCORE :
id
student_id
score و ....

اگر میخواید هنگام حذف دانشجو تمام اطلاعات اون در جداول دیگه ای که بهش مربوط هستند بصورت خودکار حذف بشن ، میبایست از ویژگی cascade استفاده کنید.

با سلام
ممنون از راهنماییتون
با این تفاصیر فیلد آدرس 1 فیلد مرکب میشه،که خیلی طولانی میشه
مثال: استان البرز-شهر کرج-مهرشهر-بلوار ارم-خیابان دانشکده-انتهای بلوار ملت-و........
با کدوم query باید مثلا کسایی که تو استان البرز هستند بیرون کشید؟
اگه هم بخوایم جدا جدا کنیم و تو همون جدول اول اضافه کنیم تعداد ستون ها زیاد میشهو مشکلات خودش،البته من اینطوری فکر میکنم
سپاس از اینکه کمک کردین

navid3d_69
جمعه 17 آذر 1391, 16:06 عصر
با سلام
ممنون از راهنماییتون
با این تفاصیر فیلد آدرس 1 فیلد مرکب میشه،که خیلی طولانی میشه
مثال: استان البرز-شهر کرج-مهرشهر-بلوار ارم-خیابان دانشکده-انتهای بلوار ملت-و........
با کدوم query باید مثلا کسایی که تو استان البرز هستند بیرون کشید؟
اگه هم بخوایم جدا جدا کنیم و تو همون جدول اول اضافه کنیم تعداد ستون ها زیاد میشهو مشکلات خودش،البته من اینطوری فکر میکنم
سپاس از اینکه کمک کردین


بهترین راه اینه که یک جدول از شهر ها باشه و با ارتباط به این جدول توش شهر هارو ذخیره کنی و و میشه هم یم فیلد توی همون حدول بزاری و با یک dropdown لیست شهر رو کاربر انتخاب کنه و یا می تونی با کوئری سرچ مثلا هر آدرسی که توش کرج رو داره نمایش بدی که ممکنه این به مشکل بخوره چون اگر کسی شهر تهران باشه اون رو نمایش میده و اگر کسی شهر اصفهان باشه ولی خیابان تهران باشه باز اونم نمایش میده

saeedphp
جمعه 17 آذر 1391, 16:06 عصر
سپاس دوست عزیز
دنبال همین بودم
ممنونم ازت

saeedphp
جمعه 17 آذر 1391, 16:19 عصر
بهترین راه اینه که یک جدول از شهر ها باشه و با ارتباط به این جدول توش شهر هارو ذخیره کنی و و میشه هم یم فیلد توی همون حدول بزاری و با یک dropdown لیست شهر رو کاربر انتخاب کنه و یا می تونی با کوئری سرچ مثلا هر آدرسی که توش کرج رو داره نمایش بدی که ممکنه این به مشکل بخوره چون اگر کسی شهر تهران باشه اون رو نمایش میده و اگر کسی شهر اصفهان باشه ولی خیابان تهران باشه باز اونم نمایش میده

ممنون،مشکلم حل شد،دنبال همون Relation View بودم که پیدا شد ، الان مشکلی که دارم اینکه،فیلدی که تو جدول فرعی به عنوان ارتباط با refrence در نظر گرفتم،تو dropdown ای که باید relation ها رو اتخاب کنم نیست،میدونید مشکلش چیه؟

navid3d_69
جمعه 17 آذر 1391, 16:27 عصر
یا باید اون فیلد primary باشه یا index بزار