مقدمة
في مقال "نموذج بيانات الشبكة العلائقية" ، تم اقتراح مفهوم جديد لنمذجة بيانات HTMS ، وهو تطور للنموذج العلائقي الكنسي. ستوضح هذه المقالة أمثلة حول كيفية استخدامها عمليًا باستخدام واجهة برمجة تطبيقات مستوى المنطق.
وترتبط الأمثلة بالحل التعليمي والمنهجي المعروف لإنشاء المواقع - وهو قالب لمشروع مسح قائم على الويب حول إطار عمل Django في برنامج MS Visual Studio .
يتطلب فهم هذه المقالة فهمًا أساسيًا للغة بايثون وإطار جانغو.
وصف قاعدة البيانات
مخطط البيانات المفاهيمي هو أربعة جداول ووصف التبعيات بينهما:

ملاحظات:
- رقم تسلسل الاستجابة في الاستطلاع - يستخدم فقط لتشكيل مجموعة Queryset عند عرض الصفحة مع الاستطلاع
- اسم مشارك الاستبيان المسجل على الموقع - يتم ملؤه فقط للمستخدمين المسجلين (يمكن للمستخدمين غير المسجلين التصويت والتعليق). قد يقترح المستخدمون المسجلون إنشاء استطلاعات جديدة ، لكننا لا نعتبر هذه التفاصيل الدقيقة في هذه المقالة.
تبعيات:
- يتوافق كل استطلاع (صف في جدول الاستطلاعات ) مع إجابتين أو أكثر ، أي: الصفوف في جدول الإجابات
- كل إجابة (صف في جدول الإجابات ) تقابل 0 أو أكثر من التعليقات ، أي الصفوف في جدول التعليقات
- إذا قام زائر الموقع بالتصويت لأول مرة ، فسيتم إنشاء صف جديد له في جدول الزائرين . يتم تحديد المستخدمين عن طريق عنوان IP
- بعد كل تصويت ، يزداد عدد الأصوات المدلى بها للإجابة المحددة في الاستطلاع بمقدار 1
- يجب أن يتذكر الموقع الإجابات التي قدمها كل زائر والتعليقات التي تركها: يتم كتابة كل تعليق مستخدم في سطر جديد من جدول التعليقات
إضفاء الطابع الرسمي على قاعدة بيانات باستخدام ORM Django
أولاً ، نوضح كيف سيتم وصف قاعدة البيانات بشكل تقليدي - باستخدام فئات حزمة Django للنماذج .

ملاحظات:
- قد تبدو سمة الاستطلاعات زائدة عن الحاجة ، نظرًا لأنه من الممكن الحصول على قائمة من الاستطلاعات من خلال قائمة الإجابات ، ولكن يتم ذلك حتى لا تفقد حقيقة المشاركة في الاستطلاع إذا تمت إزالة الإجابة من الاستطلاع
- ينشئ Django فعليًا (أو يعدل) قاعدة البيانات قبل البداية الأولى لبرنامج الموقع استنادًا إلى الفئات الفرعية المخصصة للطرز. نموذج باستخدام أوامر python management.py ترحيل و makemigrations التي يتم تنفيذها في سياق التطبيق
إضفاء الطابع الرسمي على قاعدة بيانات باستخدام HTMS
لإنشاء وصف قاعدة بيانات ، يجب عليك تحديد فئاتها:

Polls_db هي فئة قاعدة البيانات الرئيسية لتطبيق موقع الاستطلاع. يتم تعريف فئة قاعدة البيانات الرئيسية على أنها فئة فرعية من HTdb ، والتي تعمل في HTMS كفئة فائقة لقواعد بيانات التطبيق (يمكن أن يكون هناك عدة).
استطلاعات ، إجابات ، تعليقات ، زوار - فصول لجداول قاعدة البيانات. يُعد Table - أحد الفئات الرئيسية في HTMS ، بمثابة فئة فائقة لفئات جداول محددة.
HTMS ينشئ (أو يفتح قاعدة بيانات موجودة) مباشرة أثناء تنفيذ برنامج الموقع. الخيارات ذات الصلة:
- قم بإنشاء قاعدة بيانات جديدة باسم "الاستطلاعات":
my_db = Polls_db (db_name = "polls"، new = True )
- سيتم إنشاء ملفات قاعدة البيانات الرئيسية ("فارغة") ماديًا ،
- في OP ، سيتم إنشاء كائن قاعدة البيانات الرئيسية my_db - مثيل لفئة Polls_db .
- افتح قاعدة بيانات باسم "استطلاعات الرأي":
my_db = Polls_db (db_name = "polls")
- سيتم فتح الملفات الرئيسية لقاعدة البيانات الموجودة فعليًا ،
- سيتم إنشاء الكائن my_db في OP ، والذي تحتوي سماته على المعلومات الأساسية حول قاعدة البيانات التي تمت قراءتها من ملفاته.
عندما يكون هناك قاعدة بيانات جديدة تم إنشاؤها أثناء تهيئة مثيل للفئة HTdb الفرعية ، فمن الضروري تحديد الهيكل الفعلي (المخطط) على المستوى المنطقي. يتم ذلك مرة واحدة عند الإطلاق الأول للموقع ، ولكن ، على عكس تقنية ORM ، في رمز البرنامج الخاص بالموقع نفسه.
- حدد جميع سمات قاعدة البيانات - أسمائها وأنواع البيانات:

- حدد أنواع السمات بالارتباطات (سيكون الباقي افتراضيًا من النوع "السبب"):

- حدد كائنات الجدول وحدد السمات (الأعمدة) لها من مجموعة جميع سمات GT:

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

مقارنة بين HTMS و ORM
من الواضح أن إضفاء الطابع الرسمي على نظام البيانات على المستوى المنطقي في HTMS و ORM متشابهان ، ولكن هناك عددًا من الاختلافات الأساسية.
في HTMS ، يتم تعريف السمات وأنواع البيانات كمسافة واحدة ؛ في ORM ، تكون مرتبطة بجداول منفصلة.
يتم إنشاء مجموعة كاملة من سمات قاعدة البيانات في ORM "بطريقة إضافية" ، نظرًا لتعريف النماذج ، لا يمكن تغييرها برمجيًا ، ولكن في HTMS لقاعدة البيانات بأكملها ، ويمكنك إضافتها أو إزالتها في التطبيق دون ترحيل.
سمات كل نموذج فردي في ORM ثابتة ، بينما في HTMS ديناميكية. يتم تعريف هياكل الجدول في HTMS على أنها إسقاطات لمساحة سمة واحدة - إنها أبسط وأكثر وضوحًا من ORM. يمكن لخوارزميات موقع الويب HTMS توفير خيارات لتغيير بنية قاعدة البيانات الأصلية ، على سبيل المثال ، إضافة سمات جديدة أو حذف السمات الموجودة ، وهو أمر مستحيل من حيث المبدأ في تقنية ORM .
لاحظ أن تقنية HTMS ، إذا طبقت في إطار عمل Django ، تعمل فقط على توسيع قدراتها ، ولا تتطلب التخلي عن استخدام ORM. على سبيل المثال ، يمكن استخدام نظام المصادقة الممتاز بأكمله في جانغو ، بناءً على الطرز وفئة المستخدم (من وحدة django.contrib.auth.models). لذلك ، في الواقع ، فإن الموقع الذي يقع في جانغو مع HTMS عادة ما يكون "متعدد النماذج" ، أي أن جزءًا من قاعدة البيانات الإجمالية سيكون علائقيًا بحتًا ، والشبكة العلائقية الأخرى.
أمثلة استخدام المستوى المنطقي HTMS لقواعد بيانات المسح
وظيفة الأداة المساعدة لملء قاعدة بيانات أولية من ملف JSON

وظيفة تشكيل مجموعة من الكائنات مع صناديق الاقتراع (queryset للعرض المستند إلى الفصل - استطلاعات CBV)

وظيفة تشكيل مجموعة من الكائنات مع إجابات المسح (queryset لإجابات مسح CBV)

وظيفة تشكيل مجموعة من الكائنات مع نتائج تصويت الاستطلاع (queryset for CBV)

وظيفة لتسجيل نتيجة التصويت في قاعدة البيانات (تسمى عبر عنوان URL من نموذج التصويت)

نأمل أن يقدر القراء بساطة وطبيعية العمل مع البيانات في HTMS!