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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

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


3 رد (ردود) على هذا الموضوع

#1 شمعة حزن

شمعة حزن

    عضو

  • الأعضــاء
  • 11 مشاركة

تاريخ المشاركة 23 March 2008 - 02:06 AM

السلام عليكم

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

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

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

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

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



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

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



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

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

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

#2 hanyfreedom

hanyfreedom

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,481 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Chess , Sudoku

تاريخ المشاركة 24 March 2008 - 10:30 AM

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, 24 March 2008 - 10:32 AM.


#3 أحمد السيد احمد

أحمد السيد احمد

    مشترك

  • الأعضــاء
  • 140 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 24 March 2008 - 04:33 PM

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

#4 hanyfreedom

hanyfreedom

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,481 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Chess , Sudoku

تاريخ المشاركة 24 March 2008 - 05:25 PM

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


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

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


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