الفرق بين المراجعتين لصفحة: «SQL/keys»

من موسوعة حسوب
< SQL
لا ملخص تعديل
 
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}'
 
سطر 276: سطر 276:
* [https://sqlite.org/foreignkeys.html توثيق قيود المفاتيح في محرك SQLite]
* [https://sqlite.org/foreignkeys.html توثيق قيود المفاتيح في محرك SQLite]
* [https://docs.microsoft.com/en-us/sql/relational-databases/tables/primary-and-foreign-key-constraints توثيق قيود المفاتيح في محرك SQL Server]
* [https://docs.microsoft.com/en-us/sql/relational-databases/tables/primary-and-foreign-key-constraints توثيق قيود المفاتيح في محرك SQL Server]
[[تصنيف:SQL]]
[[تصنيف:SQL|{{SUBPAGENAME}}]]
[[تصنيف:SQL Tables]]
[[تصنيف:SQL Tables|{{SUBPAGENAME}}]]

المراجعة الحالية بتاريخ 15:38، 28 يناير 2018

تستخدم المفاتيح بهدف الربط ما بين الجداول في قواعد البيانات.

المفتاح الأوليّ PRIMARY KEY

هو عمود (أو أكثر) من الجدول والذي يميّز السجلات عن بعضها، تكون القيم فيه فريدة (غير مكررة) ولا يمكن ألّا يحتوي قيمة (قيمته NULL)، ويكون للجدول مفتاح أولي وحيد.

المفتاح الثانويّ FOREIGN KEY

هو عمود (أو أكثر) من الجدول والذي يمكن عدّه مرجعيةً (reference) لعمود آخر في جدول ثانٍ (وغالبًا ما يكون هذا العمود هو المفتاح الأولي للجدول الثاني).

مثال

تحتوي قاعدة بيانات أحد المراكز التعليمية الجداول الآتية:

الجدول الأول: جدول الطلاب students

المفتاح الأولي فيه هو عمود StudentID والمفتاح الثانوي هو عمود CourseID للربط مع جدول الدورات التدريبية courses

RegDate CourseID LastName FirstName StudentID
‎07-JUL-2017 0206 Najjar Rama 1147
‎08-NOV-2017 0604 Kordi Jenan 1148
‎07-JUL-2017 0206 Bitar Rahaf 1149
‎20-AUG-2017 0607 Taweel Farah 1150
‎08-NOV-2017 0610 Arab Rami 1151
‎24-OCT-2017‎ 0803 Akkad Aya 1152
‎08-NOV-2017 0504 Haddad Abed 1153
‎20-AUG-2017 0801 Fares Tasneem 1154
‎24-OCT-2017 0607 Hamsho Monther 1155
‎30-SEP-2017 0607 Abd Allah Hiba 1156
‎07-JUL-2017 0509 Khatib Mohammad 1157
‎20-AUG-2017 0801 Sharif Ibrahim 1158
‎24-OCT-2017 0802 Fehmi Hanin 1159
‎20-AUG-2017 0204 Zein Loujain 1160
‎08-NOV-2017 0503 Helali Ammar 1161

الجدول الثاني: جدول الدورات التدريبية courses

المفتاح الأولي فيه هو عمود CourseID والمفتاح الثانوي هو عمود DepartmentID للربط مع جدول الأقسام departments

DepartmentID Lecturer Course CourseID
EN01 Dr. Reem Hadi English (Adv)‎ 0204
EN01 Dr. Shadi Balid English (Int)‎ 0206
EN02 Dr. Firas Abd English (TOEFL)‎ 0211
IT01 Eng. Nasser Sharif Artificial Intelligence 0604
IT01 Eng. Amal Safi Networks 0607
IT01 Eng. Salem Najm ICDL 0610
IT02 Eng. Nasser Sharif SQL Programming 0703
IT02 Eng. Amal Safi FrontEnd Programming 0704
IT03 Mr. Maher Siraj Photoshop Design 0801
IT03 Ms. Nadia Taleb Illustrator Design 0802
IT03 Mr. Maher Siraj UI Design 0803

الجدول الثالث: جدول الأقسام departments

المفتاح الأولي فيه هو DepartmentID وبقاعدة البيانات في هذا المثال لا توجد مرجعية له لربطه مع جدول آخر.

Head DepatementName DepartmentID
Dr. Firas Abd General English EN01
Dr. Saer Raslan Advanced English EN02
Dr. Osama Najjar Information Technology IT01
Eng. Amal Safi Programming IT02
Eng. Fares Ahmad Graphic Design IT03

تعيين قيود المفاتيح الأولية والثانوية لأعمدة الجدول

تعيين أعمدة المفاتيح لجدول جديد

لتعيين قيود المفاتيح الأوليّة والثانويّة تضاف العبارة المفتاحية PRIMARY KEY و FOREIGN KEY في تعليمة إنشاء الجدول CREATE TABLE.

مثال

لإضافة المفاتيح على الجدول السابق students، يصبح الاستعلام بالشكل الآتي:

CREATE TABLE students(
  StudentID INTEGER NOT NULL,
  LastName TEXT,
  FirstName TEXT,
  CourseID INTEGER,
  RegDate DATE,
  PRIMARY KEY (StudentID),
  FOREIGN KEY (CourseID) REFERENCES courses (CourseID)
);

أما عندما يكون هناك أكثر من عمود للمفتاح فتُضاف كافة الأعمدة المطلوبة ضمن القوسين بجانب الكلمة المفتاحية لتصبح بالشكل:

PRIMARY KEY (StudentID, FirstName)

تعيين أعمدة المفاتيح لجدول موجود

يُمكن تعيين أعمدة المفاتيح لجدول موجود مسبقًا من خلال الكلمة المفتاحية ADD في تعليمة تعديل الجدول ALTER TABLE ليصبح استعلام إضافة المفتاح الأوليّ بالشكل الآتي:

ALTER TABLE tbl_name
ADD PRIMARY KEY (col_name);

وإضافة المفتاح الثانوي بالشكل:

ALTER TABLE tbl_name
ADD FOREIGN KEY (col_name) REFERENCES tbl_name2 (col_name2);

مثال

لإضافة المفتاحين الأوليّ والثانويّ للجدول السابق students يُستخدَم الاستعلام الآتي:

ALTER TABLE students
ADD PRIMARY KEY (StudentID)
ADD FOREIGN KEY (CourseID) REFERENCES courses (CourseID);

حذف قيود المفاتيح من الجدول

يُمكن حذف قيود المفاتيح لجدول موجود مسبقًا من خلال الكلمة المفتاحية DROP في تعليمة تعديل الجدول ALTER TABLE ليصبح الاستعلام عند حذف المفتاح الأوليّ بالشكل الآتي:

ALTER TABLE students
DROP PRIMARY KEY;

وحذف مفتاح الثانوي بالشكل:

ALTER TABLE students
DROP FOREIGN KEY;

التوافقية

SQLServer SQLite Oracle PostgreSQL MySQL
نعم نعم نعم نعم نعم

مصادر