قواعد البيانات أو Database وهي مجموعة من العناصر التي غالبًا ما يتم ربطها بواسطة جداول علائقية مكونة من حقول وأعمدة.
تتيح قواعد البيانات للمستخدمين إجراء عمليات منها أدوات الاستعلام التعديل والحذف في محتوياتها.
ومع ذلك يتم استدعاؤها من أماكن تخزين آمنة على خوادم المضيف المحلي.
تلعب قواعد البيانات دور هام في إدارة المشاريع المتوسطة والكبيرة.
كما تزود المنظمات ببيانات متعددة ومرتبة فهي غالبًا ما تربط أحداث عمل المنظمة وتواريخها بالأنظمة الإلكترونية.
على سبيل المثال خادم Web Application يمكّن المستخدمين من التفاعل معه.
وهو يشير إلى طريقة عصرية في إدارة البيانات أدت إلى تخلي الإعتماد على البيانات الورقية والتقليدية.
خصائص قواعد البيانات
تتمثل طريقة الوصول إلى قواعد البيانات عن طريق الأوامر المتاحة التي توفرها لغة SQL.
بالإضافة إلى بعض تقنيات الاستعلام الأخرى على حد سواء.
فهي تعطي المستخدم صلاحيات التأثير على قيم محددة وذلك وفقا لطلبات الخادم Request.
على سبيل المثال تشمل بعض الخصائص عددًا من الوظائف المخزنة في لغات الوصول إلى الخادم وأشهرها:
- عمليات الاستعلام.
- إمكانية إنشاء وحذف البيانات.
- التحديث وإجراء بعض التعديلات على الجداول.
- تسجيل المستخدمين ومنحهم الصلاحيات المتعددة.
- عمليات الإدخال.
- ترتيب وتصنيف البيانات.
- أدوات البحث.
تشترك قواعد البيانات مع تطبيقات الويب بمزايا عالية الأداء فهي بدورها تمنح قنوات الاتصال المباشر لها.
بالتالي تمكن المبرمجين من السيطرة على الإدخالات التي يقوم بها المستخدم كونها إحدى أدوات التفاعل الحقيقي على الخادم.
عمليات الاستعلام
توفر عمليات الاستعلام أغراض متعددة في جلب العناصر من قواعد البيانات.
حيث أن منها ما يوفر عرض لكافة بيانات الجدول ومنها ما يتم وفقا لشروط المبرمجين في حصر القيم.
وبذلك نعتبر الأمر SELECT أحد أشهر السمات الرئيسية في لغة SQL.
SELECT * FROM `users`;
وعلى فرض أن لدينا جدول باسم users ونريد جلب البيانات منه .
فغالبًا ما يقوم الأمر SELECT باستخدام حرف النجمة في جلب كافة القيم في الحقول المرادفة.
أما في حال كنا نريد تحديد قيمة ما قبل جلبها فإنه يتعين علينا وضع شرط تمامًا مثل الشيفرة التالية:
SELECT * FROM `users` WHERE id = \'16\';
تظهر لنا قيمة واحدة مكونة من حقل واحد يمتلك مفتاح id أساسي وهو الرقم 16.
تلعب عمليات الاستعلام دور هام في جلب البيانات كونها تعطي فكرة عن الحقول قبل البدء بإجراء التعديلات عليها.
وفي بعض الأحيان وفي المشاريع الكبيرة تتأثر بعض قيم الجداول بعملية التحديث ما يتطلب البحث عن الأخطاء مجددًا.
تتشارك بعض الاستعلامات بوجود أعمدة مترابطة مع جدولين أو أكثر في قيمة واحدة.
وذلك بسبب الحاجة للعثور على بيانات أكثر تفصيلا قد لا تمتلكها إحدى الجداول منفردة.
بالتالي قد نعتبر الشيفرة التالية مثال على عملية Sub Query أو عملية الاستفسار المتعدد.
SELECT * FROM `currency` INNER JOIN `food_file` ON `country` = `food_country` AND `country` IN (SELECT country FROM users WHERE user_mail = \'user\');
نجد في الشفرة السابقة جملة استعلام لمتجر غذائي يقوم بعرض قيمة العملة التي تتوافق مع رمز دولة المستخدم.
مع ذلك تظهر لنا لغة SQL قوة كبيرة في السيطرة على جلب القيم.
فهي تتيح جلب بيانات ضخمة دون بناء جداول لا حاجة لها على الإطلاق.
إنشاء وحذف البيانات
تتمثل عمليات الإنشاء والحذف إما بزيادة أعداد الجداول أو تقليصها.
وفي حال كانت الصفحات تقبل بتجميع القيم في جدول واحد فإن ذلك من شأنه إضافة أعداد الحقول أو حذفها.
عادة ما يمنح المبرمجين تلك الميزة لبعض المستخدمين وليس ككل نظرًا لمنع عمليات الحذف في المؤسسات الكبيرة.
لكن فكرة الإنشاء والحذف تعتمد على بعض الأوامر الثابتة والمتعارف عليها في لغات قواعد البيانات.
DROP TABLE table_name;
تمنح الأداة DROP إمكانية حذف البيانات على الخادم.
فهي بدورها تمثل الاستغناء عن بعض الجداول أو انتهاء مهمتها التقنية في وقت محدد.
على سبيل المثال ربما تفيد عملية الغاء عضوية العميل من المنظمة إجراء حذف على بعض الجداول الخاصة به.
تتيح قواعد البيانات إمكانية حذف بعض العناصر دونا عن غيرها وذلك من خلال الوصول إلى مفتاح id الأساسي.
والشيفرة التالية تعرض لنا عملية حذف لأحدى قيم الجدول users.
DELETE FROM `users` WHERE ID = \'30\' LIMIT 1;
يمكن الإشارة إلى عمليات الحذف بأنها واحدة من أخطر الإجراءات التي يتم اتباعها في قواعد البيانات.
بالتالي قد لا يخوّل لبعض المستخدمين أو حتى المبرمجين القيام بذلك الأمر نظرًا لصعوبة إرجاع بعض الحقول.
وقد يتطلب ذلك إجراء نسخ احتياطي شبه يومي للخادم.
قد يبدي بعض المطورين الإشارة للبيانات المحذوفة بأعمدة إضافية خاصة تصف حالتها على أن يتم الإبقاء عليها بدلاً من عمليات الحذف.
بل ربما يتم ملئ الحقول بمفردات تستثنى من جلب القيم مثل Deprecated أو inactive.
تحديث قواعد البيانات وإجراء بعض التعديلات
تتطلب عمليات التحديث وإجراء بعض التعديلات جلب القيم والحقول أولا ومن ثم اتخاذ هذا الإجراء.
وغالبًا ما تتم هذه العملية على بعض الحقول والقيم منفردة.
وبالتالي تعود أسبابها إلى حدوث بعض الأخطاء أثناء إدخال بعض البيانات من قبل المستخدمين.
إلا أنه في غالب الأمر قد لا يملك المبرمجين حسابات مدير البيانات في الخادم.
لذلك يتجهون إلى تعديل القيم عبر المحررات بدلاً من التعديل المباشر بقيم الجداول.
UPDATE `users` SET `user_name` = \'ِAhmad\' WHERE `user_id` = 2;
يمكن إجراء بعض التغييرات على اسم مستخدم ما.
حيث أن الشيفرة السابقة ليست سوى عملية إجراء تحديث على جدول users في قواعد البيانات.
لكن نضع بعين الإعتبار أن عمليات التغيير ترتبط ارتباط وثيق بالعنوان الفريد للحقل مثل أعمدة id.
غالبا ما ترتبط الحقول بعمود يحتوي على قيمة تسلسلية لفهرس البيانات وهي أعمدة id والتي تكون مفتاحية.
ما يعني Unique Value أو Primary Key.
تسجيل المستخدمين
يتبع عمليات تسجيل المستخدمين توفير صلاحيات الاستخدام لهم في قواعد البيانات.
والتي تتمثل منحهم أو حجبهم إمكانية التعديل على الجداول أو التأثير في قيمتها بدور استثنائي.
وذلك أن جميع زائري قواعد البيانات هم مستخدمين سواء كانوا مبرمجين أو موظفين أو حتى عملاء من خارج المؤسسة.
توفر خوادم قواعد البيانات أدوات منح أو حجب الصلاحيات عن المستخدمين في حال ما كان الحساب يحمل درجة مسؤول .
mysql> GRANT ALL PRIVILEGES ON database_name.* TO \'username\'@\'localhost\';
ولو نظرنا إلى الشيفرة السابقة نجد أن قواعد البيانات mysql توفر هذه الخاصية من محرر الأوامر.
على سبيل المثال تفيد عبارة ALL PRIVILEGES إلى منح كافة الصلاحيات و database_name إلى اسم قاعدة البيانات و username إلى اسم الحساب.
يمكن منح الصلاحيات للمستخدمين على جداول وأعمدة دونًا عن غيرها.
بالتالي يتبع ذلك إجراء بعض التخصيصات من قبل المبرمج المسؤول.
ولا ننسى أن بعض التطبيقات الكبيرة تمنح تلك الخصائص من خلال صفحات الويب أو حتى واجهات البرامج.
عمليات الإدخال
قد يحتاج المستخدم إلى إدخال بعض القيم المؤثرة في قواعد البيانات.
ذلك من شأنه الرجوع إلى تلك القيم مستقبلاً أو حتى ظهورها باستمرار على شاشة العميل.
وقد وفرت لغة SQL ذلك الأمر اليسير للمستخدمين.
بالتالي يستطيع كافة المبرمجين والعملاء من المستخدمين إدخال بعض القيم على جداول قواعد البيانات.
الشيفرة التالية تظهر عملية إدخال إلى جدول لإحدى حسابات المستخدمين في مواقع التواصل الاجتماعي.
INSERT INTO `users_posts_videos` (`video_name` , `session` , `main_comment`) VALUES (\'VideoName\' ,\'Username\' ,\'id\' );
ترتيب البيانات
نعتبر عمليات الفرز والترتيب واحدة من خصائص وسمات استخدام قواعد البيانات.
على سبيل المثال نستطيع إدخال البيانات بشكل عشوائي وغير خاضع لوتيرة ثابتة خلال استخدام الخادم.
ومع ذلك عند جلب البيانات من الجداول يمكنك استخراجها كما هي أو بمزايا إضافية مثل خصائص الترتيب.
وتخضع عمليات الترتيب وفقًا للأبجدية في الحقول أو للأرقام أو حتى التواريخ.
وعند النظر إلى الشيفرة التالية سنجد أن ترتيب البيانات جاء وفقًا لحقل date:
SELECT * FROM `users` ORDER BY `date` DESC , ID DESC;
عند اختبار الشيفرة السابقة نجد أنها تجلب بيانات الجدول user وفقًا لعمود التاريخ والقيم بداخله.
بالتالي سيتم عرض القيم على طريقة العد التنازلي.
وفي حال ما أردنا عرض البيانات تصاعديًا يمكن ذلك من خلال تغيير العنصر الأخير بالشيفرة إلى ASC.
أدوات البحث
تنتشر محركات البحث في كافة التطبيقات التي لا تقتصر فقط على صفحات Web Application.
ويمكن العثور عليها في المركبات أو بعض التطبيقات لبرامج الهاتف أو حتى أنظمة التشغيل ويندوز و Linux.
بالتالي هي تأخذ الدور ذاته أينما كانت وخاصة في ظل الحاجة إلى تحديث البيانات باستمرار.
في عالم الويب أو التطبيقات المحلية قد يتطرق المبرمج إلى استخدام بعض الأوامر خلال عمليات البحث.
SELECT * FROM `users` WHERE `email` LIKE \'%salma@live.com%\'
عند حدوث هذا الإجراء , تدرك قواعد البيانات أن هناك عملية بحث.
ويحقق ذلك الأمر وجود إشارتي النسبة المئوية والأمر LIKE.
محققة بذلك جلب أقرب معلومة لعبارة البحث.
بالتالي لا يمكننا تجاهل أن خوارزميات البحث هي محط اهتمام كافة المنشآت تقوم بمهام الاستعلام.
الخلاصة
- توفر قواعد البيانات اتصال دائم مع بيانات المستخدمين.
- يمكن التفاعل مع قواعد البيانات بكافة اللغات المتاحة.