إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    SQL تعيين العمود كمفتاح رئيسي

    مفهوم المفتاح الرئيسي ( Primary Key )

    المفتاح الرئيسي هو العمود الذي نضعه في الجدول بهدف جعلنا قادرين على الوصول إلى كل سطر فيه بسهولة سواء بهدف الحصول على قيمه, تعديلها أو لحذف السطر كما هو من الجدول. بالإضافة إلى ذلك, فأننا نستخدمه لربط قيم الجداول ببعضها البعض و هذه الأمور سبق و شرحناها بتفصيل ممل.

    كمثال بسيط, في الجدول التالي يمكننا الوصول لأي سطر من خلال رقم id السطر.

    id first_name last_name
    1 Ahmad Eid
    2 Ramez Morad
    3 Hassan Mortada
    4 Saad Alkassem
    5 Zaher Fahmi

    معلومة تقنية

    العمود الذي يتم تعيينه كمفتاح رئيسي لا يسمح بأن يتم تخزين قيم مكررة فيه.
    بمعنى آخر, جميع قيم المفتاح الرئيسي تعتبر موحدة ( UNIQUE ) حتى و إن لم نعرفها كذلك.


    تعيين المفتاح الرئيسي

    في أغلب الأوقات, تحتاج وضع عمود واحد في الجدول ليكون بمثابة المفتاح الرئيسي للوصول لكل سطر فيه و هذا الأمر تطرقنا له كثيراً في الدروس السابقة حيث كنا نضع عمود واحد إسمه id كمفتاح رئيسي في أي جدول ننشئه, و لكن في بعض الحالات قد تجد أنك بحاجة إلى تكوين مفتاح رئيسي في الجدول من عامودين أو أكثر و ليس من عمود واحد فقط.

    تعيين العمود كمفتاح رئيسي عند إنشاء الجدول

    إذا كنت تنوي تعيين عمود كمفتاح رئيسي في الجدول, يمكنك إضافة الخاصية PRIMARY KEY إلى تعريف العمود فقط.
    عندها سيصبح العمود لا يقبل أن تخزن فيه قيم مكررة و سيجبرك على إدخال قيم بنفسك له.


    المثال الأول

    في المثال التالي, عند إنشاء جدول جديد قمنا بإنشاء عمود نوعه INT و تعيينه كمفتاح رئيسي في الجدول.

    الإستعلام

    CREATE TABLE users (
        id         INT PRIMARY KEY,   -- users كمفتاح رئيسي للجدول id هنا قمنا بتعريف العامود
        first_name VARCHAR(50),
        last_name  VARCHAR(50)
    );
    		

    المثال الثاني

    في المثال التالي, عند إنشاء جدول جديد قمنا بإنشاء عمود نوعه VARCHAR و تعيينه كمفتاح رئيسي في الجدول.

    الإستعلام

    CREATE TABLE users (
        username   VARCHAR(50) PRIMARY KEY,   -- users كمفتاح رئيسي للجدول username هنا قمنا بتعريف العامود
        first_name VARCHAR(50),
        last_name  VARCHAR(50)
    );
    		

    تعيين أكثر من عمود كمفتاح رئيسي عند إنشاء الجدول

    لتعيين أكثر من عمود كمفتاح رئيسي في الجدول, يجب إضافة قيد ( CONSTRAINT ) على الجدول نحدد فيه كل الأعمدة التي نريدها أن تكون بمثابة مفتاح رئيسي.
    إنتبه لنقطة مهمة جداً, و هي أنه عند تعيين عامودين كمفتاح رئيسي, فإن كل عمود منهم يعتبر عمود عادي جداً و لكنهما مع بعض يشكلان مفتاح واحد.


    الشكل العام لإضافة قيد خاص بتعيين المفتاح الرئيسي

    لإضافة CONSTRAINT خاص بتحديد الأعمدة التي نريد تعيينها بمثابة PRIMARY KEY واحد يجب كتابتة الإستعلام كالتالي.

    CREATE TABLE table_name (
        column1 datatype NOT NULL,
        column2 datatype NOT NULL,
    	...,
    	CONSTRAINT PK_table_name PRIMARY KEY (column1, column2)
    );
    	

    مثال

    في المثال التالي, عند إنشاء جدول جديد قمنا بإنشاء عمود نوعه INT و عمود نوعه VARCHAR و تعيينهما كمفتاح رئيسي في الجدول.

    لتعيين هذين العمودين كمفتاح واحد فعلنا التالي:

    • العمود id قمنا بتعريفه INT NOT NULL لأننا نريد إدخال قيمة رقمية و أن لا يسمح بترك الحقل فارغاً.
    • العمود username قمنا بتعريفه VARCHAR(50) NOT NULL لأننا نريد إدخال قيم نصية لا يتعدى طولها 50 حرف و أن لا يسمح بترك الحقل فارغاً.
    • قمنا بإضافة CONSTRAINT نوعه PRIMARY KEY بإسم pk_users ليكون مشابهاً لإسم الجدول فقط.
    • ذكرنا فيه إسم العمودين اللذين نريد وضعهما كمفتاح رئيسي في الجدول بين أقواس القيد PRIMARY KEY.

    الإستعلام

    CREATE TABLE users (
    	id         INT NOT NULL,
        username   VARCHAR(50) NOT NULL,
        first_name VARCHAR(50),
        last_name  VARCHAR(50),
    	CONSTRAINT pk_users PRIMARY KEY (id, username)
    );
    		

    الآن, لاحظ أن العمود username يمكنه أن يحتوي على قيم مكررة و العمود id كذلك أيضاً.
    السببب الذي يجعل ذلك لا يشكل مشكلة هو أن كل عمود منهما لا يشكل مفتاح رئيسي لوحده, بل قيمتهما مع بعضهما هي ما تشكل المفتاح الرئيسي في كل سطر.

    id username first_name last_name
    1 ahmad Ahmad Eid
    2 ahmad Ahmad Rashad
    2 hassan Hassan Mortada
    3 saad Saad Alkassem

    • 1ahmad هو مفتاح السطر الأول.
    • 2ahmad هو مفتاح السطر الثاني.
    • 2hassan هو مفتاح السطر الثالث.
    • 3saad هو مفتاح السطر الرابع.

    إذاً في حال كان المفتاح الرئيسي يتألف من أكثر من عامود, يمكننا جعل الأعمدة تقبل أن يكون فيها قيم مكررة و لكن لا يمكننا تكرار نفس قيم الأعمدة الموجودة على نفس السطر في سطر آخر.

    في الجدول السابق ممنوع تكرار نفس الـ id و الـ username في أكثر من سطر. أي ممنوع إدخال قيم مكررة كالتالي.

    id username first_name last_name
    1 ahmad Ahmad Eid
    1 ahmad Ahmad Rashad

    تعيين المفتاح الرئيسي بعد إنشاء الجدول

    إذا كنت تنوي تعيين المفتاح الرئيسي بعد إنشاء الجدول, يجب أن تتأكد أولاً أن العمود أو الأعمدة التي تنوي وضعها كمفتاح رئيسي لا تحتوي على حقول فارغة.


    في حال كنت تنوي تعيين عمود واحد كمفتاح رئيسي, يمكنك استخدام الأمر ALTER لتعيينه كالتالي.

    ALTER TABLE table_name
    ADD PRIMARY KEY (column_name);
    	

    في حال كنت تنوي تعيين أكثر من عمود واحد كمفتاح رئيسي, يجب إضافة CONSTRAINT لتعيينه كالتالي.

    ALTER TABLE table_name
    ADD CONSTRAINT pk_constraint_name PRIMARY KEY (column1, column2, ..); 
    	


    المثال الأول

    الإستعلام التالي يقوم بتعيين العمود id الموجود في الجدول users كمفتاح رئيسي.

    الإستعلام

    ALTER TABLE users
    ADD PRIMARY KEY (id);
    		

    المثال الثاني

    الإستعلام التالي يقوم بتعيين العمودين id و username الموجودين في الجدول users كمفتاح رئيسي.

    الإستعلام

    ALTER TABLE users
    ADD CONSTRAINT pk_users PRIMARY KEY (id, username); 
    		

    حذف المفتاح الرئيسي

    في حال أردت إلغاء المفتاح الرئيسي الذي قمت بتعيينه سابقاً. يمكنك تعديل العمود بواسطة الأمر ALTER مع الإشارة إلى أن طريقة فعل ذلك تختلف من قاعدة بيانات لأخرى.


    في قواعد بيانات MySQL

    ALTER TABLE table_name
    DROP PRIMARY KEY;
    	

    الإستعلام التالي يقوم بإلغاء تعيين المفتاح الرئيسي الموضوع في الجدول users.
    هنا لا داعي لذكر إسم المفتاح الرئيسي الذي تنوي إلغاؤه.

    مثال

    ALTER TABLE users
    DROP PRIMARY KEY;
    		


    في قواعد بيانات SQL Server / Oracle / Access

    ALTER TABLE table_name
    DROP CONSTRAINT pk_constraint_name;
    	

    الإستعلام التالي يقوم بحذف القيد pk_users الذي تم وضعه سابقاً لتعيين المفتاح الرئيسي في الجدول users.
    هنا يجب ذكر إسم القيد الذي يمثل المفتاح الرئيسي الذي تنوي إلغاؤه.

    مثال

    ALTER TABLE users
    DROP CONSTRAINT pk_users;
    		
    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب