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

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

صورة
- - - - -

مشكلة الربط بين جدولين


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

#1 Mn_902

Mn_902

    مشترك

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

تاريخ المشاركة 31 May 2005 - 02:14 PM

السلام عليكم

لدي مشكلة في الربط بين جدولين

ولكن العلاقة من Forign Key الى Unique في الجدول الاساسي وليس الى Praimary Key
علما ان Unique لحقلين مركبين

تظهر لي رسالة خطاء ORA-02270

no matching unique or primary key for this column-list

هل من الممكن في الاوركل انشاء تلك العلاقة

حيث انها تعمل في الاكسس ولاتوجد مشكلة في العلاقة

وشكرا

#2 elfatih_s

elfatih_s

    عضو

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

تاريخ المشاركة 31 May 2005 - 03:15 PM

اخي العلاقة ممكنه ولاكن هل يمكن التوضيح اكثر مثلا كم عدد الحقول في الForign Key و الامر الذي استخدمته للربط
اثابكم الله

#3 Osama Soliman

Osama Soliman

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

  • المجموعة الماسية
  • 1,611 مشاركة
  • الاسم الأول:Osama
  • اسم العائلة:Soliman
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle Technical Consultant - Asfour Crystal International

تاريخ المشاركة 31 May 2005 - 04:18 PM

اخى الكريم /
لعمل الربط بين جدولين هناك طريقتين :
اما ربط مؤقت وهو يتم داخل جمل الـ Select
مثال
Select e.employee_id, e.last_name, d.deptartment_name
from employee e department d
where e.department_id = d.department_id

وهذا ليس عليه اى قيود

اما النوع الثانى وهو عمل قيد دائم Foreign Cosntraint لعمل علاقة بين الجدول
ويتم انشاؤه اثناء انشاء الجدول او بعد انشاؤه
مثال

Create table employee (id number(7), last_name varchar2(40), department_id number(5) constraint employee_dept_id_fk references departments(department_id), salary number (7,2));


وهذا الطريقة الاولى

اما الطريقة الثانية
Alter table employee add constraint employee_dept_kf foreign key (department_id) references departments(department_id;


وهذا الطريقة تستخدم اذا كان الجدول موجود من قبل

ويجب ان اردت عمل قيد Foreign Key لابد ان يتم الربط بحقل Primary Key
فى المثال السابق الحقل department_id يمثل الـ Primary Key لجدول Departments

وقل رب زدنى علماً
Osama M. Soliman
Oracle Certified Professional
Oracle Technical Consultant

 Asfour Crystal International
Cairo - Egypt
Osama.Soliman@hotmail.com
Osama.Soliman@asfourcystal.com


#4 Mn_902

Mn_902

    مشترك

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

تاريخ المشاركة 01 June 2005 - 12:45 PM

السلام عليكم
بالنسبة للاخ elfatih_s
عدد الحقول في الForign Key حقيلن ومايقابلها في الجدول الاساسي ايضا حقلين

اما الاخ Osama Soliman

نورت الموضوع ويعطيك العافية على مرورك

اخي الكريم انا كنت اسال عن الربط مع UNIQUE وليس Primary Key

واانت اوضحت انه لايمكن في عبارتك

ويجب ان اردت عمل قيد Foreign Key لابد ان يتم الربط بحقل Primary Key
فى المثال السابق الحقل department_id يمثل الـ Primary Key لجدول Departments


وشكرا لكم

#5 elfatih_s

elfatih_s

    عضو

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

تاريخ المشاركة 01 June 2005 - 05:10 PM

اخي العزيز جرب هذه الطريقة كمثال

create table table1
( col1 number (10)
, col2 number(10)
, constraint col1_col2_UQ unique (col1,col2))


create table table2
( col3 number (10)
,col4 number(10)
,constraint col3_col4_FK Foreign Key (col3,col4)
references table1(col1,col2) )

اثابكم الله

#6 Osama Soliman

Osama Soliman

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

  • المجموعة الماسية
  • 1,611 مشاركة
  • الاسم الأول:Osama
  • اسم العائلة:Soliman
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle Technical Consultant - Asfour Crystal International

تاريخ المشاركة 02 June 2005 - 01:15 AM

الاخ الكريم Mn_902
الكلام الذى اشرت اليه فى الرد السابق

ويجب ان اردت عمل قيد Foreign Key لابد ان يتم الربط بحقل Primary Key

يسرى ايضاً عند وجود unique key

وقل رب زدنى علماً
Osama M. Soliman
Oracle Certified Professional
Oracle Technical Consultant

 Asfour Crystal International
Cairo - Egypt
Osama.Soliman@hotmail.com
Osama.Soliman@asfourcystal.com