الانتقال إلى المحتوى

سؤال عن الـ Primary Key والـ Foreign Key


شمعة حزن

Recommended Posts

السلام عليكم

بس عندي استفسار ...

اذا عندي جدول معين مثلا جدول أنواع الأصناف فيه حقلين ( رقم النوع ، اسم النوع ) وكلا الحقلين primary key

وعندي جدول اخر للأصناف فيه عدة حقول ( رقم الصنف ، نوع الصنف ، سعره....الخ

هل ينفع انه اخلي حقل نوع الصنف في هذا الجدول يكون foreign key يرجع لحقل اسم النوع في الجدول الأول

بالرغم انه الجدول الاول في اثنين PK



بمعنى ... هل يجوز انه حقل في جدول ما يكون مفتاح اجنبي لحقل مفتاح رئيسي في جدول اخر رغم انه الجدول فيه اكثر من مفتاح رئيسي ..
والمفتاح الاجنبي فقط يرجع لمفتاح واحد فيهم ...

ولا راح يعتبر مخالف لقاعدة التنميط اللي تقول ازالة الاعتماد على جزء من المفتاح الرئيسي...؟؟؟؟!



اتمنى اني اكون وضحت الاستفسار بشكل صحيح ...

وارجو اني القى جواب سريع

جزاكم الله كل خير [وسط][/وسط]

رابط هذا التعليق
شارك

SQL> ed
Wrote file afiedt.buf

 1* create table hh ( id number primary key , name varchar2(9) primary key )
SQL> /
create table hh ( id number primary key , name varchar2(9) primary key )
													   *
ERROR at line 1:
ORA-02260: table can have only one primary key



هل انت متأكد اصلاً انه ينفع يكون فيه اكتر من primary key فى الجدول الواحد ؟؟؟؟؟

ORA-02260: table can have only one primary key

تم تعديل بواسطة hanyfreedom
رابط هذا التعليق
شارك

فعلا الجدول الواحد لازم مفتاح رئيسى واحد ان وجد لا اكثر ولكن ربما كان المفتاح الرئيسى الواحد يشمل اكثر من عمود فى الجدول كلهم مع بعض يعطوا المفتاح الرئيسى

رابط هذا التعليق
شارك

فعلا الجدول الواحد لازم مفتاح رئيسى واحد ان وجد لا اكثر ولكن ربما كان المفتاح الرئيسى الواحد يشمل اكثر من عمود فى الجدول كلهم مع بعض يعطوا المفتاح الرئيسى


كلامك صح ..... هو بيقبل على مستوى الجدول مش على مستوى العمود ..... كما فى الكود التالى :-

SQL> create table oug2 (
 2  id number,
 3  name varchar2(11),
 4  dd date,
 5  email varchar2(99),
 6  constraint oug2_pk primary key (id,email));

Table created.

SQL> desc oug2
Name                                      Null?    Type
----------------------------------------- -------- ------------
ID                                        NOT NULL NUMBER
NAME                                               VARCHAR2(11)
DD                                                 DATE
EMAIL                                     NOT NULL VARCHAR2(99)



انا حاولت اربط ذى ما الاخ ( شمعة حزن ) ما قال ...... لكن هذا ما حدث :-

1  create table oug3 (
 2  id number ,
 3  salary number,
 4  constraint oug3_fk foreign key (salary)
 5* references oug2(id))
SQL> /
references oug2(id))
               *
ERROR at line 5:
ORA-02270: no matching unique or primary key for this column-list



دورت على هذا الخطاء فى ال Knowledge Xpert for PLSQL وهذا ما حصلت عليه :-

Oracle Product Document Library © Oracle Corporation


Manual: Oracle Database Error Messages Manua10.1 Reference: B10744-01

ORA-02270: no matching unique or primary key for this column-list


Cause: A REFERENCES clause in a CREATE/ALTER TABLE statement gives a column-list for which there is no matching unique or primary key constraint in the referenced table.

Action: Find the correct column names using the ALL_CONS_COLUMNS catalog view



فيما يبدوا ان كلام الاخ شمعة صحيح و ان القاعدة اللى بيقول عليها دى صحيحة ايضاً ...... اخى شمعة لو فيها تعب ممكن تقولى على مصدر معلومتك لهذه القاعدة و شكراً .

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية