في الوحدات السابقة ، قدمنا ​​مفهوم قواعد البيانات ، وناقشنا أنواع البيانات التي تخزنها ، وتدربنا على إرسال طلبات REST API لاسترداد البيانات. في الوقت نفسه ، ظللنا مشاركًا خارجيًا في العملية ولم نطلب سوى المعلومات من مصادر مختلفة.

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

أساسيات البيانات

شرح البيانات

الرائد المطلق في تمثيل البيانات في REST API هو تنسيق JSON. في جميع الأمثلة من الوحدات السابقة ، تلقينا بيانات بهذا التنسيق. تجدر الإشارة إلى أن REST لا تفرض قيودًا على اختيار التنسيق بالنسبة لنا ، في المستقبل ستلتقي بالتأكيد بالآخرين (على سبيل المثال ، XML). في الوقت نفسه ، نظرًا لوزنها الخفيف وسهولة قراءتها ، يفضل المطورون غالبًا JSON.

JSON (JavaScript Object Notation) هو تنسيق تبادل بيانات قائم على النص يعتمد على JavaScript. ولا تدع جافا سكريبت في العنوان يخدعك. تنسيق JSON ، على الرغم من أنه نشأ من لغة البرمجة هذه ، إلا أنه مستقل تمامًا عنه ويمكن استخدامه في أي مكان.

دعونا نرى ما يتكون منه كائن JSON وكيف يتم كتابته.

تم وضع جميع البيانات التي تلقيتها داخل أقواس معقوفة "{}". يتم وضعها دائمًا في بداية ونهاية كائن JSON.

يتكون الكائن نفسه من مجموعة من السجلات ، وهي أزواج "Key: Value" ويتم فصلها عن بعضها بفاصلات "،".

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

يمكن أن تكون القيم من أنواع مختلفة. دعونا نعتبرهم جميعًا.

  1. سلسلة . يحتوي على معلومات نصية ، مجموعة من الأحرف في معيار Unicode. يتم تضمين السلاسل بين علامتي اقتباس "".
  2. رقم . يمكن أن يكون إما عددًا صحيحًا أو فاصلة عائمة. إنه مكتوب كما هو ، ليس من الضروري إرفاق علامات الاقتباس.
  3. قيمة منطقية . واحدة من قيمتين. إما صواب أو خطأ. مثل الرقم ، هو مكتوب بدون علامات اقتباس.
  4. صفيف . مجموعة مرتبة من العناصر. يمكن أن يكون كل عنصر من أي نوع. يتم وضع المصفوفة بين قوسين مربعين "[]" ، ويتم فصل عناصرها بفاصلات.
  5. كائن . يمكن أن تكون قيمة JSON كائن JSON آخر. تنطبق نفس القواعد على الكائن الجذر. كما أنه محاط بأقواس معقوفة ويحتوي على مجموعة السجلات الخاصة به.

انظر إلى البيانات التي تلقيتها في الوحدات الأولى مع وضع هذه المعلومات في الاعتبار. حدد مكونات JSON ، وحدد نوع القيم المستلمة التي تنتمي إليها.

تخزين البيانات

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

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

يستخدم نظام DBMS لغة SQL لإدارة البيانات باستخدام نموذج علائقي.

SQL - لغة الاستعلام الهيكلية . هذه لغة تعريفية ، مما يعني أن أوامرها تصف الإجراء الضروري فقط (البحث عن البيانات ، حذفها ، التغيير) ، ويقرر كل DBMS بنفسه كيفية تنفيذه.

هناك العديد من نظم إدارة قواعد البيانات العلائقية المختلفة. من بين أكثرها شيوعًا Oracle و MySQL و MS SQL و PostgreSQL . بالمناسبة ، يستخدم AppMaster PostgreSQL ، مما يعني أنه يستخدم نظام DBMS حديثًا ومتقدمًا يعمل في عدد كبير من المؤسسات المختلفة وهو أيضًا برنامج مجاني (أي أنك لست بحاجة إلى دفع أموال إضافية لاستخدامه).

هل لاحظت وجود اختصار SQL في كل اسم من أسماء نظم إدارة قواعد البيانات تقريبًا؟ في الواقع ، الاسم البديل لقاعدة البيانات العلائقية هو قاعدة بيانات SQL.

ومع ذلك ، هناك نهج بديل. قواعد البيانات غير العلائقية ، أو NoSQL. وتجدر الإشارة إلى أن كلمة "لا" في هذه الحالة ليست نفيًا لكلمة "لا" ، ولكنها اختصار لـ "ليس فقط". هذا هو ، "ليس فقط SQL".

لا تستخدم نظم إدارة قواعد البيانات غير العلائقية تنسيق استعلام شائع (مثل SQL) ، فكل منها يطبق طريقته الخاصة في التعامل مع البيانات.

لا تتطلب بنية تخزين بيانات محددة بشكل فريد. لا يتم تخزين البيانات نفسها فيها في شكل جداول صارمة ، ولكن في شكل كائنات ذات مجموعة عشوائية من السمات (تشبه إلى حد كبير JSON). قد يكون هذا مناسبًا عند العمل مع البيانات التي يخضع هيكلها لتغييرات متكررة.

في الوقت نفسه ، نظرًا لبنيتها المجانية ، يسهل توسيع نطاق حلول NoSQL إذا كنت بحاجة إلى إنشاء قاعدة بيانات موزعة على خوادم متعددة.

تتضمن أمثلة NoSQL DBMS MongoDB و Redis.

تصميم قاعدة البيانات

حان الوقت لتصميم قاعدة البيانات الخاصة بك. للقيام بذلك ، انتقل إلى علامة التبويب تصميم البيانات (مصمم البيانات) على اللوحة اليمنى.

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

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

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

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

  1. المعرف (عدد صحيح) - معرف فريد ، مفتاح أساسي. يتم إنشاؤه تلقائيًا لكل إدخال جديد في الجدول ويهدف إلى ضمان عدم وجود تكرارات. يمكنك تحديد سجل في جدول بشكل فريد عن طريق المعرف. تبدأ قيمته من 1 وتزيد تلقائيًا بمقدار 1 لكل إدخال جديد.
  2. CreatedAt (التاريخ والوقت) - الوقت الذي تم فيه إنشاء السجل في الجدول.
  3. UpdatedAt (التاريخ والوقت) - وقت آخر تعديل للإدخال.
  4. DeletedAt (تاريخ / وقت) - الوقت الذي تم فيه حذف الإدخال. بالطبع ، فقط إذا تم استخدام الإزالة الناعمة. أي ، مثل هذا الحذف ، عندما يتم تمييز السجل فقط على أنه محذوف ومفلتر من خلال طلبات الوصول إليه ، ولكن في نفس الوقت يظل فعليًا في الجدول. هذا يختلف عن الحذف الجماعي ، الذي يؤدي في الواقع إلى حذف البيانات بالكامل.

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

لا ينبغي أن يكون اختيار نوع الحقل مشكلة. بالنسبة للاسم ، تعتبر السلسلة مناسبة ، وللوصيف المعلوماتي ، نص.


بالإضافة إلى ذلك ، تتوفر أربعة مفاتيح أخرى:

  1. قيم متعددة (صفيف) - استخدم المصفوفات بدلاً من الإدخالات الفردية.
  2. ليس فارغًا - لا يمكن أن يكون الحقل المحدد فارغًا ، يجب أن يحتوي دائمًا على بيانات.
  3. فريد - يجب أن تكون قيمة الحقل فريدة ، في هذا النموذج لا يمكن أن يكون هناك سجلين تتطابق قيم هذا الحقل.
  4. الفهرس - يشير إلى أنه سيتم إنشاء فهرس خاص لهذا الحقل من أجل تسريع البحث.

بشكل عام ، من الصواب تحديد العلامات فقط إذا كان ذلك ضروريًا حقًا. على سبيل المثال ، يمكننا وضع علامة Not null و Unique لأسماء البلدان ، بافتراض أنه لا يمكن أن يكون هناك بلد بدون اسم أو دولتين بنفس الاسم. ومع ذلك ، من الجيد التحكم في ذلك في مرحلة إنشاء منطق التطبيق ، وعدم وضع قيود على قاعدة البيانات نفسها.

وبالمثل ، قم بإنشاء جدول بمعلومات عن المدن. فكر في حقول البيانات التي يمكن أن تحتوي عليها ، وما نوع هذه الحقول.

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

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


هناك 3 أنواع مختلفة من التوصيلات:

  1. واحد لواحد (لديه واحد) . يتم تعيين كل سجل في الجدول إلى سجل واحد من الجدول المرتبط (هذا صحيح أيضًا في الاتجاه المعاكس). مثال بسيط هو الشخص وجواز سفره. يمكننا دائمًا التأكد من أن هذا الاتصال فريد من نوعه. يمكن أن يكون لجواز السفر حامل واحد فقط ، ويمكن لكل شخص الحصول على جواز سفر واحد ساري المفعول.
  2. واحد بأطراف (له العديد) . يمكن أن يحتوي كل سجل في جدول واحد على العديد من السجلات في جدول آخر. قاعدة بياناتنا هي مثال مشابه. يمكن أن يكون لأي بلد العديد من المدن المختلفة ، ولكن يمكن أن تنتمي كل مدينة إلى دولة واحدة فقط. هذا هو الرابط الذي سنقوم به.
  3. كثير إلى كثير . علاقة يمكن أن تتوافق فيها سجلات متعددة من جدول مع سجلات متعددة من جدول آخر. مثال بسيط هو العلاقة بين المعلمين والطلاب. يمكن لكل معلم تدريس العديد من الطلاب ، تمامًا كما يمكن لكل طالب التعلم من العديد من المعلمين المختلفين.

الواجب المنزلي

تخيل أنه يتعين عليك تطوير تطبيق لمتجر عبر الإنترنت. قم بإنشاء نموذج قاعدة بيانات لكي يعمل.

  • من الضروري النص على توافر السلع ببطاقات وصفها ، وفئات مختلفة من السلع ، ومعلومات حول الطلبات وحول العملاء.
  • املأ الجداول بالحقول من أنواع مختلفة (استخدم 5 أنواع على الأقل).
  • إنشاء علاقات بين الجداول. استخدم جميع أنواع الروابط الثلاثة.