مقدمة إلى قواعد البيانات و MySQL
ما هي قاعدة البيانات؟
قاعدة البيانات هي مجموعة منظمة من البيانات المهيكلة المخزنة إلكترونياً. بدلاً من تخزين البيانات في ملفات، توفر قواعد البيانات طرقاً فعالة لتخزين واسترجاع وتحديث وإدارة كميات كبيرة من المعلومات.
لماذا نستخدم قواعد البيانات؟
- استمرارية البيانات: تخزين البيانات بشكل دائم بعد تنفيذ السكريبت
- الاسترجاع الفعال: الاستعلام عن بيانات محددة بسرعة من مجموعات كبيرة
- سلامة البيانات: فرض القواعد والعلاقات بين البيانات
- الوصول المتزامن: يمكن لعدة مستخدمين الوصول إلى البيانات في وقت واحد
- الأمان: التحكم في من يمكنه الوصول والتعديل على البيانات
قواعد البيانات العلائقية
معظم قواعد البيانات الحديثة هي قواعد بيانات علائقية، والتي تنظم البيانات في جداول بصفوف وأعمدة. كل جدول يمثل كياناً (مثل المستخدمين أو المنتجات أو الطلبات).
مثال: جدول المستخدمين +----+----------+-------------------+------------+ | id | username | email | created_at | +----+----------+-------------------+------------+ | 1 | john_doe | john@example.com | 2024-01-15 | | 2 | jane_s | jane@example.com | 2024-01-16 | | 3 | bob_m | bob@example.com | 2024-01-17 | +----+----------+-------------------+------------+
ما هو MySQL؟
MySQL هو واحد من أكثر أنظمة إدارة قواعد البيانات العلائقية مفتوحة المصدر شعبية. يُستخدم على نطاق واسع لتطبيقات الويب ومعروف بكونه سريع وموثوق وسهل الاستخدام.
مميزات MySQL
- مجاني ومفتوح المصدر: متاح بدون تكلفة لمعظم الاستخدامات
- متعدد المنصات: يعمل على Windows و Linux و macOS
- قابل للتوسع: يتعامل مع قواعد البيانات الصغيرة إلى الكبيرة جداً
- آمن: ميزات أمان مدمجة والتحكم في الوصول
- معيار صناعي: يستخدمه Facebook و Twitter و YouTube وملايين المواقع
مصطلحات قواعد البيانات
1. قاعدة البيانات (Database)
مجموعة من الجداول المترابطة. مثال: موقع تجارة إلكترونية قد يحتوي على قاعدة بيانات تحتوي على جداول للمستخدمين والمنتجات والطلبات والمراجعات.
2. الجدول (Table)
مجموعة من البيانات المترابطة المنظمة في صفوف وأعمدة. كل جدول يمثل نوعاً واحداً من الكيانات.
3. الصف / السجل (Row / Record)
إدخال واحد في الجدول. كل صف يمثل مثيلاً واحداً من الكيان. مثال: مستخدم واحد، منتج واحد، طلب واحد.
4. العمود / الحقل (Column / Field)
جزء محدد من المعلومات المخزنة في الجدول. مثال: اسم المستخدم، البريد الإلكتروني، السعر، الكمية.
5. المفتاح الأساسي (Primary Key)
معرّف فريد لكل صف في الجدول. عادة عمود id بأرقام متزايدة تلقائياً.
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT, -- المفتاح الأساسي
username VARCHAR(50),
email VARCHAR(100)
);
6. المفتاح الخارجي (Foreign Key)
عمود ينشئ علاقة بين جدولين من خلال الإشارة إلى المفتاح الأساسي لجدول آخر.
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT, -- المفتاح الخارجي
total DECIMAL(10, 2),
FOREIGN KEY (user_id) REFERENCES users(id)
);
SQL: لغة الاستعلام المهيكلة
SQL هي اللغة المستخدمة للتفاعل مع قواعد البيانات العلائقية. تسمح لك بإنشاء قواعد البيانات والجداول وإدراج البيانات والاستعلام عن البيانات وتحديث السجلات وحذف المعلومات.
فئات SQL الرئيسية
1. DDL (لغة تعريف البيانات)
أوامر تحدد هيكل قاعدة البيانات:
CREATE- إنشاء قواعد البيانات والجداول والفهارسALTER- تعديل هيكل الجدولDROP- حذف قواعد البيانات أو الجداولTRUNCATE- إزالة جميع البيانات من جدول
2. DML (لغة معالجة البيانات)
أوامر تعالج البيانات:
SELECT- استرجاع البياناتINSERT- إضافة سجلات جديدةUPDATE- تعديل السجلات الموجودةDELETE- إزالة السجلات
3. DCL (لغة التحكم في البيانات)
أوامر تتحكم في الوصول:
GRANT- منح امتيازات الوصول للمستخدمينREVOKE- إزالة امتيازات الوصول
أنواع بيانات MySQL
الأنواع الرقمية
INT -- عدد صحيح: -2147483648 إلى 2147483647 BIGINT -- عدد صحيح كبير DECIMAL(10,2)-- نقطة ثابتة: 10 أرقام إجمالي، 2 بعد الفاصلة (للأموال) FLOAT -- رقم عشري (تقريبي) DOUBLE -- رقم عشري مزدوج الدقة
أنواع النصوص
CHAR(50) -- نص بطول ثابت VARCHAR(255) -- نص بطول متغير (حتى 255 حرف) TEXT -- نص طويل (حتى 65,535 حرف) MEDIUMTEXT -- نص متوسط (حتى 16,777,215 حرف) LONGTEXT -- نص طويل جداً (حتى 4GB)
أنواع التاريخ والوقت
DATE -- تاريخ: YYYY-MM-DD TIME -- وقت: HH:MM:SS DATETIME -- تاريخ ووقت: YYYY-MM-DD HH:MM:SS TIMESTAMP -- طابع زمني (يتحدث تلقائياً) YEAR -- سنة: YYYY
أنواع أخرى
BOOLEAN -- صح/خطأ (يخزن كـ TINYINT: 0 أو 1) ENUM -- قائمة بالقيم المسموحة JSON -- بيانات JSON (MySQL 5.7+) BLOB -- كائن ثنائي كبير (للملفات)
الوصول إلى MySQL
1. سطر الأوامر
# الاتصال بـ MySQL mysql -u username -p # الاتصال بقاعدة بيانات محددة mysql -u username -p database_name
2. phpMyAdmin
واجهة ويب شهيرة لإدارة قواعد بيانات MySQL. عادة متوفرة على http://localhost/phpmyadmin في بيئات التطوير المحلية.
3. MySQL Workbench
تطبيق واجهة رسومية رسمي من MySQL لتصميم وتطوير وإدارة قواعد البيانات.
4. PHP (mysqli أو PDO)
الاتصال والتفاعل مع MySQL من سكريبتات PHP (سنغطيه في دروس لاحقة).
أفضل ممارسات تصميم قواعد البيانات
تصميم جيد لقاعدة البيانات
- استخدم أسماء وصفية:
user_emailبدلاً منe - استخدم دائماً المفاتيح الأساسية: كل جدول يجب أن يحتوي على
id - قم بتطبيع البيانات: تجنب البيانات المكررة بتقسيمها إلى جداول مترابطة
- استخدم أنواع البيانات المناسبة: VARCHAR للنص، INT للأرقام، DECIMAL للأموال
- أضف الطوابع الزمنية: قم بتضمين أعمدة
created_atوupdated_at - فهرس الأعمدة المستعلم عنها بشكل متكرر: لتسريع البحث
أخطاء شائعة يجب تجنبها
- تخزين الملفات في قاعدة البيانات: قم بتخزين مسارات الملفات بدلاً من الملفات الفعلية
- عدم وجود نسخ احتياطية: احتفظ دائماً بنسخة احتياطية من قاعدة بياناتك بانتظام
- تسمية سيئة: تجنب المسافات والأحرف الخاصة في أسماء الجداول/الأعمدة
- عدم وجود فهارس: الجداول الكبيرة بدون فهارس ستكون بطيئة جداً
- استخدام مستخدم الجذر: أنشئ مستخدمين محددين بصلاحيات محدودة
مثال: قاعدة بيانات مدونة بسيطة
هكذا يمكنك هيكلة قاعدة بيانات مدونة أساسية:
قاعدة البيانات: my_blog جدول: users +----+----------+-------------------+------------+ | id | username | email | created_at | +----+----------+-------------------+------------+ جدول: posts +----+---------+-------+---------+------------+ | id | user_id | title | content | created_at | +----+---------+-------+---------+------------+ جدول: comments +----+---------+---------+---------+------------+ | id | post_id | user_id | content | created_at | +----+---------+---------+---------+------------+ العلاقات: - posts.user_id → users.id (من كتب المنشور) - comments.post_id → posts.id (أي منشور) - comments.user_id → users.id (من علق)
تمرين: خطط لقاعدة بياناتك
صمم قاعدة بيانات بسيطة لمتجر إلكتروني بهذه المتطلبات:
- تخزين معلومات العملاء (الاسم، البريد الإلكتروني، الهاتف)
- تخزين معلومات المنتجات (الاسم، الوصف، السعر، المخزون)
- تخزين الطلبات (أي عميل، متى، المبلغ الإجمالي)
- تخزين عناصر الطلب (أي طلب، أي منتج، الكمية)
المهمة: ارسم الجداول التي ستحتاجها وأعمدتها وكيف ترتبط ببعضها البعض.
ما التالي؟
في الدروس القادمة، ستتعلم كيفية:
- إنشاء قواعد البيانات والجداول باستخدام SQL
- إدراج واختيار وتحديث وحذف البيانات
- كتابة استعلامات معقدة باستخدام WHERE و ORDER BY و LIMIT
- ربط جداول متعددة لاسترجاع البيانات المترابطة
- ربط PHP بـ MySQL وبناء تطبيقات ديناميكية
نصيحة احترافية: تدرب على أوامر SQL في بيئة آمنة مثل phpMyAdmin أو MySQL Workbench قبل استخدامها في تطبيقات الإنتاج. اختبر الاستعلامات دائماً على بيانات عينة أولاً!