الأدلة

ما هي قاعدة البيانات؟ دليل لمن يبنون التطبيقات

قاعدة البيانات مخزن منظم للمعلومات يحفظ فيه التطبيق بياناته ويقرأ منها: مستخدموه وطلباته وحجوزاته ورسائله. وعلى عكس المعلومات المحفوظة في نافذة متصفح فقط، تبقى البيانات في قاعدة البيانات بعد التحديث أو إعادة التشغيل، ويرى الجميع السجلات نفسها. ومعظم قواعد البيانات تنظم البيانات في جداول، تشبه أوراق جدول البيانات، لكن مع قواعد صارمة تحافظ على اتساق البيانات.

لماذا يهم ذلك عند البناء بالذكاء الاصطناعي

أكثر ما يفاجئ من يبنون بالذكاء الاصطناعي هو تطبيق يبدو مكتملاً لكنه ينسى كل شيء. تضيف عميلاً، وتحدّث الصفحة، فيختفي. وغالباً هذا يعني أن التطبيق كان يحتفظ بالبيانات في ذاكرة المتصفح، لا في قاعدة بيانات.

قاعدة البيانات هي أيضاً المكان الذي تعيش فيه كثير من أهم القرارات، سواء أدركت ذلك أم لا:

  • ما تسجّله. إذا لم تخزّن حالة الحجز، فلن تستطيع عرض الحجوزات الملغاة.
  • كيف تترابط الأشياء. هل يستطيع العميل الواحد أن يملك حجوزات كثيرة، أم أن الحجز الواحد يضم خدمات كثيرة؟ هذا يشكّل التطبيق كله.
  • من يستطيع رؤية ماذا. معظم أخطاء الخصوصية تتعلق بالسجلات التي يستطيع المستخدم قراءتها.

لست بحاجة إلى تصميم قاعدة البيانات بنفسك. لكن فهم أساسياتها يمكّنك من وصف بياناتك بوضوح، واكتشاف المشكلات مبكراً.

تشبيه من الحياة اليومية

تخيّل خزانة ملفات مرتبة في مكتب صغير.

كل درج يحتوي نوعاً واحداً من الأشياء: درج للعملاء، وآخر للمواعيد، وثالث للفواتير. وداخل كل درج، كل ملف يتبع الشكل نفسه، وتُملأ فيه الحقول نفسها. ولكل ملف رقم مرجعي فريد، وعندما تنتمي فاتورة إلى عميل، فإن ملف الفاتورة يذكر رقم ذلك العميل بدلاً من نسخ ملفه كاملاً.

هذه هي قاعدة البيانات العلائقية. الأدراج هي الجداول، والملفات هي الصفوف، والحقول هي الأعمدة، والأرقام المرجعية هي المفاتيح الأساسية (Primary keys)، والملاحظات التي تشير إلى ملف آخر هي المفاتيح الأجنبية (Foreign keys). ومدير المكتب الجيد يفرض قواعد أيضاً، مثل: لا موعد بلا تاريخ، ولا عميلين برقم واحد، تماماً كما تفعل قاعدة البيانات.

مثال عملي: تطبيق حجوزات لصالون حلاقة

لنفترض أنك تطلب من الذكاء الاصطناعي بناء موقع حجوزات لصالون حلاقة. قاعدة البيانات المنطقية لذلك تضم أربعة جداول.

services (الخدمات)

idnameduration_minutesprice
1قصّ شعر4540.00
2صبغة9095.00

staff (الموظفون)

idnameemail
1سارةsara@example.com
2عمرomar@example.com

customers (العملاء)

idnameemailphone
101لينا باركlena@example.com555-0100

bookings (الحجوزات)

idcustomer_idservice_idstaff_idstarts_atstatus
5001101122026-10-03 14:00confirmed

انظر إلى جدول bookings. إنه لا ينسخ اسم لينا ورقم هاتفها في كل حجز، بل يخزّن customer_id = 101. إذا غيّرت لينا رقم هاتفها، يتغير في مكان واحد، ويظهر الرقم الجديد في كل حجز. هذه الفكرة الجوهرية في قاعدة البيانات العلائقية: خزّن كل حقيقة مرة واحدة، واربطها عند الحاجة.

البنية نفسها تجيب عن أسئلة مفيدة:

  • «ما المواعيد المتاحة لعمر يوم الجمعة؟» ابحث في حجوزات عمر في ذلك اليوم.
  • «كم كانت أرباح الصبغات هذا الشهر؟» اربط الحجوزات بالخدمات واجمع الأسعار.
  • «أي العملاء لم يحجزوا منذ 90 يوماً؟» قارن العملاء بآخر حجز لكل منهم.

مصطلحات أساسية

المصطلحمعناه
Table (جدول)مجموعة من سجلات من نوع واحد، مثل العملاء أو الحجوزات.
Row / record (صف / سجل)عنصر واحد في الجدول، كعميل واحد أو حجز واحد.
Column / field (عمود / حقل)جزء واحد من المعلومات يملكه كل صف، مثل البريد الإلكتروني أو السعر.
Primary key (المفتاح الأساسي)معرّف فريد لكل صف، عادةً رقم أو سلسلة عشوائية.
Foreign key (المفتاح الأجنبي)عمود يشير إلى صف في جدول آخر، مثل customer_id في جدول الحجوزات.
Schema (المخطط)التصميم العام: أي الجداول موجودة، وأعمدتها، وكيف ترتبط.
Query (استعلام)طلب لقراءة البيانات أو تغييرها، مثل «كل الحجوزات ليوم غد».
SQLلغة الاستعلام المعيارية (Structured Query Language) لقواعد البيانات العلائقية.
Migration (ترحيل)تغيير محفوظ وقابل للتكرار على المخطط، مثل إضافة عمود.
Index (الفهرس)بنية بحث تجعل البحث في عمود معين أسرع، كفهرس الكتاب.
CRUDالإنشاء والقراءة والتحديث والحذف، وهي العمليات الأربع الأساسية التي تقوم بها التطبيقات على البيانات.
Backup (نسخة احتياطية)نسخة من البيانات يمكن استعادتها إذا حدث خطأ ما.

أنواع قواعد البيانات

النوعطريقة تخزين البياناتأمثلةمناسبة لـ
علائقية (SQL)جداول بأعمدة ثابتة وروابط بينهاPostgres، MySQL، SQLiteمعظم تطبيقات الأعمال: الحجوزات، والمتاجر، وإدارة العملاء، وSaaS
مستندات (NoSQL)مستندات مرنة شبيهة بـ JSONMongoDB، Firestoreبيانات يتنوع شكلها كثيراً من سجل لآخر
مفتاح-قيمة (Key-value)قيمة مخزنة تحت مفتاحRedisالتخزين المؤقت، والبيانات قصيرة العمر كالجلسات

بالنسبة لمعظم ما يبنيه رائد أعمال أو صاحب عمل صغير في البداية، فإن قاعدة البيانات العلائقية هي الخيار الآمن الافتراضي.

أين تقع قاعدة البيانات في تطبيقك

الزوار لا يتحدثون مع قاعدة البيانات مباشرة. الصفحة في متصفحهم (the frontend) تطلب البيانات من خادمك (الخلفية أو backend)، عادةً عبر واجهة API. يتحقق الخادم من هوية الطالب وهل يحق له ذلك، ثم يستعلم من قاعدة البيانات، ويعيد فقط ما يحق لذلك الشخص رؤيته.

هذه الخطوة الوسيطة مهمة. لو استطاع المتصفح الاستعلام من قاعدة البيانات مباشرة بصلاحيات كاملة، لاستطاع أي شخص يفتح أدوات المطوّر قراءة كل شيء.

أخطاء شائعة وتصورات خاطئة

  • حفظ البيانات في المتصفح فقط. التخزين في المتصفح (مثل localStorage) يعيش على جهاز واحد ومتصفح واحد. وهو مناسب لفلتر تذكره الموقع، لكنه غير مناسب للطلبات.
  • حشر كل شيء في جدول واحد. جدول واحد للحجوزات، يُنسخ فيه اسم العميل ورقم هاتفه وسعر الخدمة في كل صف، سرعان ما يختل تزامنه.
  • تخزين كلمات المرور كنص عادي. يجب تشفير كلمات المرور (hashing) وعدم تخزينها مقروءة أبداً. انظر ما هي المصادقة.
  • غياب القواعد على البيانات. بدون حقول إلزامية وقواعد للتفرد، ستحصل على حجوزات بلا تاريخ وعملاء مكررين.
  • نسيان الحذف. قرّر هل حذف عميل يعني حذف حجوزاته، أم الإبقاء عليها، أم منع الحذف.
  • استخدام بيانات الإنتاج للتجربة. اختبر التغييرات الخطرة في مكان آمن أولاً، واحتفظ بنسخ احتياطية.
  • اعتبار جدول البيانات قاعدة البيانات إلى الأبد. جداول البيانات ممتازة للبداية، لكنها تعاني مع المستخدمين الكثيرين في وقت واحد والصلاحيات. انظر كيف تحوّل جدول بيانات إلى تطبيق.

ماذا تطلب من أداة البناء بالذكاء الاصطناعي

  • «احفظ هذا في قاعدة بيانات، لا في المتصفح. أخبرني بالجداول التي ستنشئها.»
  • «اعرض المخطط في جدول بسيط: كل جدول، وأعمدته، وكيف يرتبط.»
  • «العميل يستطيع أن يملك حجوزات كثيرة، وكل حجز له خدمة واحدة وموظف واحد بالضبط.»
  • «اجعل البريد الإلكتروني إلزامياً وفريداً للعملاء.»
  • «امنع تداخل حجزين لنفس الموظف.»
  • «المالك المسجّل فقط يستطيع قراءة كل الحجوزات، والعملاء يرون حجوزاتهم فقط. فعّل ذلك على الخادم.»
  • «عند حذف خدمة، لا تحذف الحجوزات السابقة، بل اجعل الخدمة غير نشطة.»

قواعد البيانات في Mythex

عندما يحتاج تطبيقك إلى حفظ البيانات، تضيف Mythex قاعدة بيانات Postgres مخصصة للمشروع. يمكنك الطلب في المحادثة («احفظ تسجيلات قائمة الانتظار في قاعدة بيانات») أو استخدام الأمر /database. تُمرَّر بيانات الاتصال إلى تطبيقك تلقائياً، ويُنشئ الوكيل الجداول. تنام قاعدة البيانات بعد خمس دقائق من الخمول، وتستيقظ عند الطلب التالي، ويُحتسب على الاستخدام المنشور الوقت الذي كانت فيه مستيقظة، من رصيد الأرصدة نفسه المستخدم في البناء. وهي متاحة في الخطة المجانية وخطة Pro. توضح وثائق قاعدة البيانات التفاصيل، وتتضمن قوالب التطبيقات نقاط بداية تعتمد على البيانات.

الأسئلة

ما هي قاعدة البيانات ببساطة؟

قاعدة البيانات مخزن منظم للمعلومات يستطيع التطبيق الكتابة إليه والقراءة منه، مثل المستخدمين والطلبات والحجوزات. وعلى عكس البيانات المحفوظة في نافذة المتصفح فقط، تبقى البيانات في قاعدة البيانات بعد التحديث أو إعادة التشغيل، ويستطيع أي شخص يفتح التطبيق من جهاز آخر رؤيتها.

هل جدول البيانات (Spreadsheet) قاعدة بيانات؟

يستطيع جدول البيانات حفظ النوع نفسه من البيانات، لكنه غير مصمم للتطبيقات. قاعدة البيانات الحقيقية تفرض قواعد على ما يحتويه كل عمود، وتربط الجداول ببعضها بشكل موثوق، وتتعامل مع كثيرين يكتبون في الوقت نفسه، وتتحكم في من يستطيع قراءة ماذا.

ما الفرق بين قواعد بيانات SQL وNoSQL؟

قواعد بيانات SQL (العلائقية) مثل Postgres وMySQL تخزّن البيانات في جداول لها أعمدة محددة وعلاقات بينها. أما قواعد NoSQL مثل MongoDB فتخزّن مستندات أكثر مرونة. ومعظم تطبيقات الأعمال، كالحجوزات وإدارة العملاء والمتاجر، تناسب النموذج العلائقي جيداً.

هل يحتاج تطبيقي إلى قاعدة بيانات؟

إذا كان يحتاج إلى تذكّر أي شيء يُدخله الناس، مثل التسجيلات والطلبات والرسائل والإعدادات، وعرضه لاحقاً أو لشخص آخر، فنعم. أما الموقع المعلوماتي البحت الذي لا يحتوي نماذج تحفظ البيانات فلا يحتاج إليها عادةً.

Mythex · Pricing · ابنِ أي شيء بالذكاء الاصطناعي · قوالب المواقع والتطبيقات · مقارنات Mythex · مصطلحات بناء التطبيقات بالذكاء الاصطناعي · أدوات مجانية لبناء التطبيقات بالذكاء الاصطناعي · English

English አማርኛ Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)