PDA

View Full Version : سوال: Relation چیست؟



amin7x
یک شنبه 18 اسفند 1392, 11:59 صبح
سلام دوستان
من میخواستم بدونم که Relation در دیتابیس به چه دردی میخوره؟

ممنون میشم یک توضیح خوب به من بدهید.

amin7x
سه شنبه 20 اسفند 1392, 15:04 عصر
up post...

Beginner Programmer
سه شنبه 20 اسفند 1392, 16:16 عصر
سلام و درود
خیلی چیزها تو دنیای کامپیوتر هستند که تا باهاشون کار نکنی نمیفهمی دقیقا چی هستند و به چه دردی میخورند.
من هم یه زمانی هرچی تو اینترنت و کتابها میخوندم نمیفهمیدم relation یعنی چی.
به طور خیلی کلی بخوام بگم relation از ایجاد خطا جلوگیری میکنه.

amin7x
سه شنبه 20 اسفند 1392, 20:23 عصر
سلام و درود
خیلی چیزها تو دنیای کامپیوتر هستند که تا باهاشون کار نکنی نمیفهمی دقیقا چی هستند و به چه دردی میخورند.
من هم یه زمانی هرچی تو اینترنت و کتابها میخوندم نمیفهمیدم relation یعنی چی.
به طور خیلی کلی بخوام بگم relation از ایجاد خطا جلوگیری میکنه.

یعنی چی که از خطا جلوگیری میکنه؟
من یک توضیح کامل میخوام.

amin7x
شنبه 24 اسفند 1392, 12:12 عصر
up post...

amin7x
یک شنبه 25 اسفند 1392, 19:29 عصر
up post...

MMSHFE
پنج شنبه 29 اسفند 1392, 14:15 عصر
Spam نفرستین!

MMSHFE
پنج شنبه 29 اسفند 1392, 14:22 عصر
Relation بطور کلی یک قابلیت خیلی خوب در بانکهای اطلاعاتی محسوب میشه. برای اینکه راحت متوجه بشین، با مثال توضیح میدم. فرض کنید توی جدول students فیلدهای id و name و توی جدول grades فیلدهای sid و grade رو داریم که sid یک کلید خارجی هست که به فیلد id از جدول students وصله و چنین قیدی روش داریم:

ALTER TABLE `grades`
ADD CONSTRAINT `fk_grade_student` FOREIGN KEY (`sid`) REFERENCES `students` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE;

الآن این قید باعث میشه اگه بخوایم یک دانشجو رو حذف کنیم درحالی که توی جدول grades نمره داره، اجازه حذف نده. ازطرفی وجود relation باعث میشه نتونیم رکوردی رو توی جدول grades ثبت کنیم که sid اون برابر با 5 هست، درحالی که دانشجویی با id شماره 5 نداریم!
ازطرفی دوباره قیدی که گذاشتیم باعث میشه اگه بیایم id دانشجوی شماره 5 رو به 7 تغییر بدیم، تمام رکوردهای منتاظرش توی جدول grades هم sid اونها به 7 تغییر کنه (بدون کدنویسی و بطور خودکار توسط MySQL)
حالا اگه قید رو اینطوری تعریف میکردیم:

ALTER TABLE `grades`
ADD CONSTRAINT `fk_grade_student` FOREIGN KEY (`sid`) REFERENCES `students` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

باعث میشد با حذف یک دانشجو، تمام نمراتش هم حذف بشن (باز هم بطور خودکار و بدون کدنویسی اضافه)
در کل بهتره درمورد Differences of DBMS and RDBMS و انواع مختلف قید (Constraint) در MySQL و تفاوتهای اونها جستجوی بیشتری داشته باشین. البته تمام این موارد روی موتور InnoDB کار میکنه و MyISAM از این قابلیتها بهره مند نیست.

bikran
پنج شنبه 29 اسفند 1392, 15:35 عصر
با سلام استاد
ميشه در مورد اين مبحث در پكيج آموزشيتون هم قسمتي رو تدارك ببينيد؟
آخه در مورد Relation مطالب فارسي خوبي پيدا نميشه.
با تشكر

MMSHFE
پنج شنبه 29 اسفند 1392, 17:07 عصر
پکیج آموزشی PHP روی این موضوعات تمرکز نداره چون این مباحث مربوط به تجزیه و تحلیل دیتابیس و ویژه DBMS موردنظره. برای مثال ممکنه یکنفر بخواد توی پروژه از Access استفاده کنه و دلیلی نداره ساختار Relationهای Access رو هم توی پکیج PHP توضیح بدیم. البته از این موارد توی دو پروژه نمونه ای که توی پکیج PHP انجام میشه، استفاده شده و توضیحات مناسب رو هم درموردشون ارائه کردم ولی همونطور که گفتم، تمرکز این پکیج روی MySQL نیست و تولید آموزشهایی درمورد MySQL و مباحث طراحی دیتابیس و حتی مباحث کلی مثل معماری سه لایه (با MVC اشتباه نگیرین) و اصول مهندسی نرم افزار و طراحی ساختار دیتابیس و ارتباطها و نرمالسازی و... هم توی دستور کاری دپارتمان آموزش ایران نهاد هست (اگه عمری باقی باشه).

آخه در مورد Relation مطالب فارسي خوبي پيدا نميشه.
بجز پکیجهای ایران نهاد! درمورد چی طلب فارسی خوب پیدا میشه که این دومیش باشه :چشمک: