تالار گفتمان مانشت
رابطه بین تعداد Super Key ها با تعداد ستون های یک جدول؟ - نسخه‌ی قابل چاپ

رابطه بین تعداد Super Key ها با تعداد ستون های یک جدول؟ - soniasa - 29 خرداد ۱۳۹۱ ۱۱:۴۵ ق.ظ

سلام

این سوال یک سال کنکور ارشد نرم افزار بوده:

اگه یک جدول داشته باشیم که n تا ستون داشته باشه و یک کلید اصلی شامل یک ستون از اون n تا باشه و کلید های فرعی دیگه هم هر کدوم یک ستونی باشند، تعداد Super Key این جدول چند تا ست؟

RE: رابطه بین تعداد Super Key ها با تعداد ستون های یک جدول؟ - hadi_m - 29 خرداد ۱۳۹۱ ۰۶:۴۶ ب.ظ

(۲۹ خرداد ۱۳۹۱ ۱۱:۴۵ ق.ظ)soniasa نوشته شده توسط:  سلام

این سوال یک سال کنکور ارشد نرم افزار بوده:

اگه یک جدول داشته باشیم که n تا ستون داشته باشه و یک کلید اصلی شامل یک ستون از اون n تا باشه و کلید های فرعی دیگه هم هر کدوم یک ستونی باشند، تعداد Super Key این جدول چند تا ست؟

تعریف سوپر کلید : هر ترکیبی از صفتها که خاصیت یکتایی مقدار داشته باشد را سوپر کلید گویند و تنها کلیدی است که شرط کمینه بودن برایان الزاما صادق نیست به عنوان مثلا شماره پرسنلی کلید است و لذا شماره پرسنلی + نام نیز یک سوپر کلید است یا بهرت است بگویم که شماره پرسنلی با هر ترکیبی از صفات دیگر یک سوپر کلید است .
در مورد سئوال شما صورت مسئله گفته که کلیداصلی رابطه تک ستونی است بنابراین این کلید با هر ترکیبی از سایر صفات تشکیل ابر کلید میدهد و تعداد این ابر کلیدها برابر است تعداد تمام زیر مجموعه های n-1 عضوی یا [tex]2^{n-1}[/tex]
نکته اخر اینکه این محاسبات تنهای برای کلید اصلی رابطه محاسبه شده .و اگر کلید فرعی دیگری داریم که صورت سئوال اینگونه عنوان کرده لذا باید انها را هم دخیل کنیم اما فکر کنم صورت سئوال شما کمی ابهام دارد در مورد تعداد کلیدهای فرعی !!!!
اما با استدلال مشابه میتوان بدست اورد مثلا فرض کنید که تعداد کلیدهای فرعی هم یک باشد بنابراین این دو کلید را کنار گذاشته و با n-2 کلید [tex]2^{n-2}[/tex] زیر مجموعه داریم حال با انتساب کلید کاندیدو کلید اصلی به این زیر مجموعه ها سه حال پیش می اید
فقط کلید اصلی را لحاظ کنیم
فقط کلید کاندید را لحاظ کنیم
هم کلید اصلی و هم کلید اصلی را لحاظ کنیم
حالت چهار قابل قبول نیست یعنی نمیتوان هیچ از کلید اصلی و کاندید را لحاظ نکرد چون باید یکتایی مقدار داشته باشند .
بنابراین تعداد ابر کلیدها برابراست با : [tex]3* 2^{n-2}[/tex]