بنية قاعدة البيانات بسيطة جداً. لقد تم استخدام بعض المصطلحات الدارجة التي يمكنك التعرف عليها بسهولة لدى قراءتك لهذا المستند. على سبيل المثال، تحتوي معظم العناصر دليل تعريف هو عبارة عن عدد صحيح يتزايد آلياً واسمه من نوع id_object، ومحدد على انه مفتاح اولي في الجدول المناسب.
ملاحظة: هذا المقال اصبح قديماً نوعاً ما ولم يتقدم احد لتحديثه. لذلك، يستحسن قراءته كمستند يتيح فهم كيفية عمل SPIP وليس كأداة مرجعية. اذا رغبت في المساهمة بإعادة صياغة هذا المقال، فلا تتردد!
المحتوى التحريري
نعرض هنا جداول القاعدة التي تحتوي المكونات التحريرية:
الأقسام: spip_rubriques
– كل قسم معرّف بـid_rubrique.
– اما id_parent فهو id_rubrique العائد الى القسم الذي يحتوي القسم الحالي (وقيمته صفر اذا كان القسم مباشرة في اصل الموقع).
– titre, descriptif, texte هي تباعاً عنوان المقال ووصفه ومادته.
– id_secteur هو id_rubrique العائد الى القسم الموجود في اعلى الهرم (نسميه في ما بعد القسم الاساسي) الذي يحتوي القسم الحالي. فاي قسم يتبع الى قسم آخر وهذا الاخير يتبع الى قسم ثالث وهكذا حتى نصل الى القسم الاساسي؛ وهو هذا القسم الاخير الذي يحدد قيمة id_secteur. وتتيح هذه القيمة المحسوبة سلفاً تسريع بعض الحسابات في الموقع العمومي (والحال، فإن الاخبار مثلاً مبوبة حسب الاقسام الاساسية فقط وليس حسب البنية الهرمية).
– maj هو حقل تقني في القاعدة وتقوم MySQL بتحديثه آلياً ويحتوي تاريخ آخر تعديل دخل على العنصر في القاعدة.
– export, id_import هما حقلان محجوزان لاستخدامات مستقبلية.
المقالات: spip_articles
– كل مقال معرّف بـid_article.
– يدل id_rubrique الى القسم الذي يحوي هذا المقال.
– يدل id_secteur الى القسم الاساسي الذي يحوي القسم الذي سبق ذكره (راجع الفقرة السابقة حول الفرق بين الاثنين).
– titre, surtitre, soustitre, descriptif, chapo, texte, ps تدل هذه الحقول الى العنوان والمدخل والعنوان الفرعي والوصف والمقدمة والمادة والملاحظة تباعاً.
– date هو تاريخ نشر المقال (واذا لم يتم نشر المقال بعد، فهو تاريخ تحرير المقال).
– date_redac هو تاريخ النشر السابق اذا تم تفعيل هذه الوظيفة والا، فقيمته «00-00-0000».
– statut هو وضع المقال الحالي: prepa (قيد التحرير)، prop (معروض للتقييم)، publie (منشور)، refuse (مرفوض)، poubelle (الى المهملات).
– accepter_forum: يتيح هذا الحقل تفعيل او تعطيل المنتديات للمقال يدوياً (القيمة الافتراضية هي تفعيل).
– maj: نفس الحقل الموجود في جدول الاقسام.
– export هو حقل محجوز لاستخدامات مستقبلية.
– images حقل يحتوي قائمة الصور المستخدمة في المقال، بتنسيق خاص. ويقوم ملف spip_image.php3 بإنشاءه.
– يستخدم حقلا visites وreferers للاحصاءات المتعلقة بالمقالات. فالاول يحصي عدد المرات التي تم فيها تحميل المقال (اي عدد الزيارات) في الموقع العمومي والثاني يحتوي مقتطف من حشوة مواقع مصدر الزيارات من اجل معرفة عدد مواقع المصدر المختلفة. راجع inc_stats.php3.
المؤلفون: spip_auteurs
– كل مؤلف معرّف بـid_auteur.
– الحقول nom, bio, nom_site, url_site, pgp هي تباعاً اسم المؤلف وسيرته المقتضبة واسم موقعه وعنوان موقعه على النسيج ومفتاح PGP لديه. يمكن للمؤلف تعديل هذه المعلومات بحرية.
– email, login هما عنوانه الالكتروني الذي تسجل به ومعرّفه للدخول الى المجال الخاص. ولا يحق الا لاحد المدراء تعديلهما.
– pass هو حشوة MD5 لكلمة المرور.
– htpass هي القيمة المشفّرة (التي تولدها دالة crypt) لكلمة المرور لملف htpasswd. الذي يحصر الدخول الى بعض اجزاء من الموقع.
– statut هو وضع المؤلف: Omnirezo (مدير)، 1comite (محرر)، 5poubelle (الى المهملات)، 6forum (مشترك في المنتديات عندما تكون هذه الاخيرة في وضعية «بالاشتراك»).
– maj يحمل المعنى نفسه الموجود في الجداول الاخرى.
الاخبار: spip_breves
– كل خبر معرّف بـid_breve.
ـ id_rubrique هو القسم (والاصح، القسم الاساسي) الذي يحوي الخبر.
– حقول titre, texte, lien_titre, lien_url هي عنوان الخبر ومادته واسم الوصلة العائدة الى الخبر وعنوانها تباعاً.
– date_heure هو تاريخ الخبر.
– statut هو وضع الخبر: prop (مقترح للتقييم)، publie (منشور)، refuse (مرفوض).
– maj مثل الجداول الاخرى.
المفاتيح: spip_mots
– كل مفتاح معرّف بـid_mot.
– اما type فهو نوع المفتاح او مجموعة المفاتيح التي ينتمي اليها. وبإنشاء عدة انواع (او مجموعات) يتم تحديد تصنيفات عدة مختلفة ومستقلة عن بعضها (مثلاً «سياسة»، «مجتمع»، «ثقافة»...).
– titre, descriptif, texte هي تباعاً اسم المفتاح ووصفه ونص توضيحي له.
– maj مثل الجداول الاخرى.
المواقع المرخصة: spip_syndic
– كل موقع معرّف بـid_syndic.
– اما id_rubrique وid_secteur فيحددان المكان في هرمية الموقع حيث توجد المادة المرخّصة.
– nom_site, url_site, descriptif هي تباعاً اسم الموقع المرخص وعنوانه ووصفه.
– url_syndic هو عنوان الملف الديناميكي المستخدم لجلب المواد المرخصة (غالباً ما يكون على شكل عنوان تتصل به عبارة backend.php3).
المقالات المرخصة: spip_syndic_articles
– كل مقال مرخّص معرّف بـid_syndic_article.
– اما id_syndic فهو الموقع المرخص الذي جاء منه المقال.
– titre, url, date, lesauteurs هي تباعاً اسم المقال وعنوانه وتاريخه ومؤلفه.
العناصر التفاعلية
وهنا جداول المكونات التي تتعامل مع تفاعلية الموقع:
مشاركات المنتديات: spip_forum
– كل مشاركة في المنتدى معرّفة بـid_forum.
– العنصر الذي ينتمي اليه المنتدى معرّف بـid_article اذا كان مقالاً وid_rubrique اذا كان قسماً وid_breve اذا كان خبراً. اما القيم الافتراضية لهذه الحقول فهي صفر.
– المشاركة الام، اي المشاركة التي تردّ عليها المشاركة الحالية، معرّفة بـid_parent. اذا لم تكن المشاركة الحالية رداً على مشاركة اخرى، تكون قيمة هذا الحقل صفراً.
– titre, texte, nom_site, url_site هي تباعاً عنوان المشاركة ونصها واسم الموقع المرتبط بها وعنوانه.
– auteur وemail_auteur هما اسم مؤلف المشاركة والعنوان الالكتروني اللذان ادخلهما. في حال كان المنتدى بالاشتراك، قد لا يعادل هذان الحقلان البيانات التي تم تسجيلها لدى اشتراك المؤلف في المنتدى (اي في جدول spip_auteurs المذكور اعلاه).
– id_auteur يحدد هوية مؤلف المشاركة في حال كان المنتدى بالاشتراك.
– statut هو وضع المشاركة: publie (منشورة اي ظاهرة في الموقع العمومي)، prive (كُتبت كتعقيب على مقال ما في المجال الخاص)، privrac (كُتبت في المنتدى الداخلي في المجال الخاص)، off (محذوفة او قيد النشر حسب وضعية المنتديات - مراقبة استباقية او بعدية).
– ip هو عنوان ip العائد الى المؤلف في الموقع العمومي.
– maj مثل الجداول الاخرى.
العرائض: spip_petitions
– يعرّف id_article بالمقال الذي ترتبط به العريضة (عريضة واحدة لكل مقال).
– email_unique, site_obli, site_unique, message تحدد تنسيق العريضة وهي تباعاً: هل يجب ان يكون لكل توقيع عنوان موقع الكتروني وحيد، هل عنوان موقع الموقّع الزامياً، هل هناك عنوان واحد فقط، هل يُسمح بربط رسالة بالتوقيع (oui او non).
– اما texte فهو نص العريضة.
– maj مثل الجداول الاخرى.
توقيعات العرائض: spip_signatures
– كل توقيع يعرّف بـid_signature.
– يعرّف id_article بالمقال، وبالتالي بالعريضة التي تم التوقيع عليها.
– nom_email, ad_email, nom_site, url_site هي تباعاً اسم الموقع وعنوانه الالكتروني واسم موقعه وعنوانه.
– statut هو وضع التوقيع: publie (مقبول)، poubelle (محذوف)، اي قيمة اخرى هي قيمة مفتاح التصديق المستخدم للتثبيت بواسطة البريد الالكتروني.
– maj مثل الجداول الاخرى.
العلاقات بين العناصر
هذه الجداول لا تتحكم بأي مواد، ولكنها تحصي العلاقات بين عناصر الجداول الاخرى. هكذا:
– spip_auteurs_articles تحدد العلاقة بين المؤلفين والمقالات. فإذا تم ربط id_auteur معيّن بـid_article معيّن، يعني ذلك ان المؤلف المعيّن كتب او شارك في كتابة المقال المعيّن (يمكن وجود عدة مؤلفين لمقال معيّن او العكس صحيح بالطبع).
– spip_mots_articles تحدد كذلك العلاقة المرجعية بين المقالات والمفاتيح.
ادارة الموقع
الجدول spip_meta مهم جداً اذ يحتوي على ازواج اسم، قيمة مفهرسة حسب الاسم (المفتاح الاولي). وتتيح هذه الازواج تخزين معلومات مختلفة مثل اعداد الموقع او اصدار SPIP او غير ذلك.
يستخدم الجدول spip_forum_cache لتكييف نظام الذاكرة المخبأة مع فورية المنتديات. فلكل ملف من الذاكرة المخبأة نتج عنه استفسار لجدول spip_forum، يخزّن جدول spip_forum_cache قيم الاستفسار (المقال والقسم والخبر والمشاركات الام اذا وجدت). عندما يتم ارسال مشاركة، تُقارن قيم المشاركة بتلك الموجودة في spip_forum_cache ولكل مطابقة يتم العثور عليها يُحذف ملف الذاكرة المخبأة المناسب في الجدول. هكذا لا تحتاج المشاركات لانتظار اعادة انعاش الصفحة الاعتيادية للظهور في هذه الصفحة.
الفهرسة (محرك البحث)
يستخدم محرك البحث ستة جداول مقسمة الى نوعين:
قاموس الفهرسة: spip_index_deco
يخزن هذا الجدول كل كلمة يتم العثور عليها خلال الفهرسة اضافة الى اول 64 بت من حشوة MD5 العائدة لها. وتستخدم الكلمة كمفتاح اولي يتيح تنفيذ استفسارات سريعة لبداية الكلمة. نستحصل هكذا على الحشوة التي تلبي الاستفسار لتنفيذ البحث فعلياً في جداول الفهرسة.
جداول الفهرسة: spip_index_*
يدير كل من هذه الجداول الخمسة فهرسة نوع محدد من العناصر: المقالات والاقسام والاخبار والمؤلفون والمفاتيح. ويتم تخزين سجل لكل كلمة ولكل عنصر. ويحتوي كل سجل حشوة الكلمة (بالاحرى، 64 بت من الجزد الاساسي لحشوة MD5، انظر اعلاه) ومعرّف العنصر المفهرس (مثلاً id_article اذا كان مقالاً) وعدد النقاط المخصصة لفهرسة الكلمة في العنصر. ويتم حساب عدد النقاط هذا بالعتماد على تكرار ظهور الكلمة مثقلاً بالحقل حيث يوجد هذا الظهور: فظهور الكلمة في عنوان المقال يولد عدد نقاط اكبر من ظهورها في مادة المقال.
ويتم شرح عملية الفهرسة بتفاصيلها هنا.