انتقل إلى محتوى الدرس

Foreign Keys and InnoDB Engine المفاتيح الأجنبية ومحرك التخزين InnoDB

نفّذ أوامر بناء الهيكلة DDL بأمان في PHP 8 عبر PDO::exec لإنشاء قواعد البيانات وجداول UTF8MB4 والمفاتيح الأساسية والفهارس.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تربط المفاتيح الأجنبية (FOREIGN KEY) السجلات الفرعية مثل الطلبات بسجل الأب في جدول المستخدمين، وتتطلب محرك التخزين InnoDB في MySQL.

  • يجب أن يطابق عمود المفتاح الأجنبي (user_id) نوع وإشارة المفتاح الأساسي الأب تماماً (مثل BIGINT UNSIGNED في كليهما).
  • استخدم ON DELETE CASCADE لحذف السجلات الفرعية تلقائياً مع الأب، أو ON DELETE RESTRICT لمنع حذف أب يمتلك سجلات مرتبطة.
  • ألحق دائماً ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci بنهاية جمل CREATE TABLE في MySQL.

تعريف المفتاح الأجنبي FOREIGN KEY (dept_id) REFERENCES depts(id) يمنع وجود موظفين مرتبطين بقسم غير موجود ويحفظ التكامل المرجعي.

PHP
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('PRAGMA foreign_keys = ON');
$pdo->exec('CREATE TABLE depts (id INTEGER PRIMARY KEY, name TEXT)');
$pdo->exec('CREATE TABLE staff (
    id INTEGER PRIMARY KEY,
    dept_id INTEGER NOT NULL,
    FOREIGN KEY (dept_id) REFERENCES depts(id) ON DELETE CASCADE
)');
echo "Foreign key constraint active\n";