همونطور که بیان کردید یک رکورد از جدول "انتخاب رشته" که حاوی شماره دانشجو در اون هست زمانی که اون دانشجو واقعا در جدول دانشجویان وجود داشته باشه با ارزش هست. پس فیلد "کد دانشجویی" در جدول "انتخاب رشته" اگه به دانشجویی اشاره نداشته باشه نامعتبر است و باید از ورود همچین دیتایی در جدول جلوگیری کرد. همچنین نباید امکان حذف دانشجویی که انتخاب رشته کرده وجود داشته باشه تا دیتاهای جدول انتخاب رشته بدون ارجاع نمونن.
نیاز به ایجاد نداره کلید خارجی یک مفهومه
درسته که ایجاد کلید خارجی ضروری نیست و سیستم بدون اون هم کار میکنه، اما ضمن این که اکثر سیستم های مدیریت دیتابیس مثل SqlServer و MySql و Oracle و... به ما امکان ایجادش رو میدن، چرا ازش استفاده نکنیم؟! ضمن این که در طراحی اصولی، اکیدا توصیه میشه که باید ایجادش کرد تا از مختل شدن و بی معنی شدن بعضی داده ها جلوگیری کرد.
بدیهیست که سیستم مدیریت دیتابیس پس از تعریف کلید خارجی، وظیفه نگه داری از رکوردهای مرتبط شده به هم رو برای ما بعهده میگیره و از حذف اونها جلوگیری میکنه.
کد نمونه ایجاد کلید خارجی در MS Sql Server:
Create Table Companies(ID int primary key, Name nvarchar(100));
Create Table CarModels(ID int primary key, Name nvarchar(100), CompanyID int foreign key references Companies(ID));