تالار گفتمان مانشت
تعریف کلید خارجی : - نسخه‌ی قابل چاپ

تعریف کلید خارجی : - Saman - 31 شهریور ۱۳۹۵ ۰۸:۳۱ ب.ظ

سلام

کسی میتونه یه تعریف از یکی از رفرنس ها در مورد کلید خارجی بنویسه اینجا :

تعاریف مدرسان و پارسه همخوانی دارن و اما با تعریف مقسمی همخوانی نداره و این عدم همخوانی در یکی از سوالات سراسری ۸۸ ایجاد مشکل میکنه یه جورایی.

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

RE: تعریف کلید خارجی : - Pure Liveliness - 31 شهریور ۱۳۹۵ ۰۹:۰۷ ب.ظ

سلام. کتاب دکتر رانکوهی:
تعریف در عمل: ستون C از جدول T2 در این جدول، کلید خارجی است هرگاه در جدول T1، کلید اسلی باشد.
تعریف تئوریک: رابطه های R1 و R2 (نه لزوما متمایز) را در نظر می گیریم. هر زیرمجموعه از صفات رابطه ی R2 که مقدار معلومش با یک مقدار از کلید کاندید رابطه ی R1 برابر باشد، کلید خارجی در رابطه ی R2 است.
به بیان دیگر صفت Ai (ساده یا مرکب) از رابطه ی R که هر مقدار معلومش از میدانی باشد که حداقل یک کلید کاندید، Ai، از آن بگیرد، کلید خارجی R است. بدیهی است اگر صفات Ai و Aj هر دو در یک رابطه باشند باید دو نام متمایز داشته باشند. بنابراین با توجه به مفهوم میدان کاندید می گوییم کلید خارجی یک رابطه صفت ساده یا مرکبی است که از یک میدان کاندید (یا میدان اصلی) مقدار بگیرد و می تواند همنام یا ناهمنام با کلید کاندید باشد.
با توجه به آن چه گفته شد:
صفت(صفات) کلید خارجی باید هم میدان با صفت (صفات) کلید کاندید باشد(باشند) (و معمولاََ همنام با کلید کاندید است، و گاه لازم می شود که نام دیگری داشته باشد.)
بدیهی است اگر رابطه ی R1 فقط یک کلید کاندید داشته باشد، در تعریف بالا به جای کلید کاندید می توان کلید اصلی را به کار برد.
توجه داریم که رابطه می تواند کلید خارجی نداشته باشد. بنابراین اگر N تعداد کلیدهای خارجی یک رابطه باشد، داریم : [tex]N\ge0[/tex]

پاسخ سوال سال ۸۸:
رد گزینه ی ۱ غلط: کلید خارجی یک رابطه لزوماََ کلید کاندید رابطه نیست.
رد گزینه ی ۲: کلید خارجی حتما باید کلید کاندید رابطه ی دیگری باشد اما لزوماََ کلید اصلی آن نیست.
رد گزینه ی ۳: کلید خارجی می تواند ساده یا مرکب باشد.
گزینه ی ۴ پاسخ سوال است.

RE: تعریف کلید خارجی : - Saman - 31 شهریور ۱۳۹۵ ۱۰:۲۱ ب.ظ

(۳۱ شهریور ۱۳۹۵ ۰۹:۰۷ ب.ظ)Pure Liveliness نوشته شده توسط:  سلام. کتاب دکتر رانکوهی:
تعریف در عمل: ستون C از جدول T2 در این جدول، کلید خارجی است هرگاه در جدول T1، کلید اسلی باشد.
تعریف تئوریک: رابطه های R1 و R2 (نه لزوما متمایز) را در نظر می گیریم. هر زیرمجموعه از صفات رابطه ی R2 که مقدار معلومش با یک مقدار از کلید کاندید رابطه ی R1 برابر باشد، کلید خارجی در رابطه ی R2 است.
به بیان دیگر صفت Ai (ساده یا مرکب) از رابطه ی R که هر مقدار معلومش از میدانی باشد که حداقل یک کلید کاندید، Ai، از آن بگیرد، کلید خارجی R است. بدیهی است اگر صفات Ai و Aj هر دو در یک رابطه باشند باید دو نام متمایز داشته باشند. بنابراین با توجه به مفهوم میدان کاندید می گوییم کلید خارجی یک رابطه صفت ساده یا مرکبی است که از یک میدان کاندید (یا میدان اصلی) مقدار بگیرد و می تواند همنام یا ناهمنام با کلید کاندید باشد.
با توجه به آن چه گفته شد:
صفت(صفات) کلید خارجی باید هم میدان با صفت (صفات) کلید کاندید باشد(باشند) (و معمولاََ همنام با کلید کاندید است، و گاه لازم می شود که نام دیگری داشته باشد.)
بدیهی است اگر رابطه ی R1 فقط یک کلید کاندید داشته باشد، در تعریف بالا به جای کلید کاندید می توان کلید اصلی را به کار برد.
توجه داریم که رابطه می تواند کلید خارجی نداشته باشد. بنابراین اگر N تعداد کلیدهای خارجی یک رابطه باشد، داریم : [tex]N\ge0[/tex]

پاسخ سوال سال ۸۸:
رد گزینه ی ۱ غلط: کلید خارجی یک رابطه لزوماََ کلید کاندید رابطه نیست.
رد گزینه ی ۲: کلید خارجی حتما باید کلید کاندید رابطه ی دیگری باشد اما لزوماََ کلید اصلی آن نیست.
رد گزینه ی ۳: کلید خارجی می تواند ساده یا مرکب باشد.
گزینه ی ۴ پاسخ سوال است.
ممنون.
خیلی لطف کردید. تعریفش واقعا خوب هست. انگار تست مستقیم از روی این کتاب طرح شده، هم این تست و هم تست های دیگه.

اینم بگم خدمت دوستان که تعریف پارسه و مدرسان به درد خودشون میخوره فقط.
من این تعریف رو پرینت میگرم حتما

RE: تعریف کلید خارجی : - Saman - 31 شهریور ۱۳۹۵ ۱۱:۵۶ ب.ظ

ضمن سپاس مجدد من با بررسی پاسخ کاربر گرامی Pure Liveliness که از کتاب رانکوهی هست با تعاریف لازم تکلیف این کلید خارجی رو یک سره میکنم با پاره ای از توضیحات از کتب مختلف.(دوس دارم این پاسخ برای بعد بمونه به همین دلیل تکمیل میکنم)

طبق تعریف کلید خارجی داریم : هر زیر مجموعه از صفات رابطه ی R2 که مقدار معلومش با یک مقدار از کلید کاندید رابطه ی R1 برابر باشد کلید خارجی در رابطه ی R2 است.

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

۱)کلید اصلی : کلید کاندیدی که توسط DBA مشخص میشود

۲)کلید فرعی (Alternatiive Key OR Secondary Key) : کلید کاندیدی است که برای کاربرد های خاص به کار میرود.
نکته : اگر یک رابطه دارای n کلید کاندید باشد یکی از آن ها کلید اصلی و n-1 کلید دیگر کلید فرعی هستند.
یه مثال :
[tex]R1(\ast A\: ,\: B\: ,\: C\: ,\: D\: ,\: E)[/tex]
و
[tex]R2(A\: ,\: B\: ,\: l\: ,\: D\: ,\: K)[/tex]

حال طبق تعریف رانکوهی علاوه بر کلید اصلی( که با *A مشخص شده)کلید B و D در رابطه ی R2 کلید خارجی میباشند. پس لزوما احتیاجی نیست که برای کلید خارجی بودن حتما کلید در رابطه دیگر کلید اصلی باشد.بلکه کلید فرعی بودن نیز کافیست.
تاکید بر همین نکته علت رد گزینه ی دوم در تست سراسری ۸۸ است.
سایر گزینه ها به صراحت در تعریف کلید خارجی در بالا وجود دارد.

RE: تعریف کلید خارجی : - Happiness.72 - 01 مهر ۱۳۹۵ ۱۲:۱۹ ق.ظ

(۳۱ شهریور ۱۳۹۵ ۰۸:۳۱ ب.ظ)samanbeigmiri نوشته شده توسط:  سلام

کسی میتونه یه تعریف از یکی از رفرنس ها در مورد کلید خارجی بنویسه اینجا :

تعاریف مدرسان و پارسه همخوانی دارن و اما با تعریف مقسمی همخوانی نداره و این عدم همخوانی در یکی از سوالات سراسری ۸۸ ایجاد مشکل میکنه یه جورایی.

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

در جواب سوال شما :
۱ - یک فیلد یا مجموعه ای از فیلدها در T1 می باشد که بطور اختصاصی ستونی از T2 را شناسایی می کند (Identification)
۲ - کلید خارجی در یک T2 تعریف میشود در حالی که به P.K از T1 اشاره دارد. (Refering)
۳ - بعنوان مثال Stu_tbl دارای P.K بنام Stu_id هستش در حالی که Stu_details یک F.K دارد که به Stu_id اشاره می کند (Refers) که باعث ارتباط Stu_tbl & Stu_details میشود.
۴ - جدولی که F.K را در خود دارد Child Table نامیده میشود و جدولی که C.K را در اختیار دارد Parent Table یا Referenced نام دارد.
۵ - یک R می تواند فاقد FK باشد پس اگر N تعداد FK از R باشد داریم : N>=0
۶ - FK برای نشان دادن ارتباطات صریح بین Entity ها و Instance های آنها بکار می رود.
۷ - علامت Fk خط چین زیر آن است.
۸ - Redundancy از معایب Fk است
۹ همچنین طول Ck طولانی میشود اگر FK جزه تشکیل دهنده آن باشد.

قطعه کد برای درک بهتر :
کد:
CREATE TABLE Supplier (
     SupplierNumber  INTEGER NOT NULL,
     Name            VARCHAR(20) NOT NULL,
     Address         VARCHAR(50) NOT NULL,
     Type            VARCHAR(10),
     CONSTRAINT supplier_pk PRIMARY KEY(SupplierNumber),
     CONSTRAINT number_value CHECK (SupplierNumber > 0) )

  CREATE TABLE Invoices (
     InvoiceNumber   INTEGER NOT NULL,
     SupplierNumber  INTEGER NOT NULL,
     Text            VARCHAR(4096),
     CONSTRAINT invoice_pk PRIMARY KEY(InvoiceNumber),
     CONSTRAINT inumber_value CHECK (InvoiceNumber > 0),
     CONSTRAINT supplier_fk FOREIGN KEY(SupplierNumber)
        REFERENCES Supplier(SupplierNumber)
        ON UPDATE CASCADE ON DELETE RESTRICT )

شاهد مثال :
کد:
SupplierNumber به ترتیب نقش کلید اصلی و کلید خارجی را ایفا میکند[/align]


RE: تعریف کلید خارجی : - Saman - 01 مهر ۱۳۹۵ ۰۹:۴۳ ق.ظ

سلام
سپاس از کاربر ITEngineering
به خاطر نوشتن پاسخ دومBlush