ما أفضل تصميم قاعدة بيانات لخطّ زمني؟

السلامُ عليكم .

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

يا تُرى ماهي أفضل طريقة لتصميم قاعدة بيانات لهذه الفكرة؟

علمًا بأن لدي أربع جداول :

  • التقييم

  • الآراء

  • تحديث للحالة

  • إضافة مشروع

فكّرت في الطريقة التالية :

أنشئ جدول يحتوي على :

id,Event_type,Event_id,user_id,date

لكن كيف سأعرف الجدول الذي فيه Event_id ؟ - في نفس الاستعلام- ؟ ، إذا كان بواسطة Event_type فكيف سأعرفه؟ ، اعذروني لا زلت مبتدئًا.

وشكرًا لكم مقدمًا.

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

بأبسط شكل، ستنشئ جدول للأحداث، تخزّن فيه [ id, user_id, item_id, type, event, date] ..

رقم العضو.. ID المادة (مشروع، رأي، تقييم .. الخ) .. نوعها (project,opinion, whatever..) ، نص الحدث نفسه ، التاريخ

هذه الأحداث يتم تخزينها حسب تعامل العضو مع الموقع .. مثلاً عندما يقوم بإنشاء مشروع جديد، وبعد الإنتهاء من عملية إنشاء المشروع وتخزينه في جدول المشاريع، ستنشئ مباشرة حدث جديد في جدول الأحداث .. يأخذ رقم المادة الجديدة التي تم إنشائها ويخزنها في item_id ، ويسجّل النوع كـ project ويسجل رقم العضو الذي أنشئ المشروع في user_id ونص الحدث نفسه حسب ما تراه أنت، ثم التاريخ ..

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

ثم في التايم لاين للعضو تقوم بإظهار جميع الأحداث الخاصة بهذا العضو أو الأعضاء الذين يتابعهم حسب جدول الـ following ..

تظهر الأحداث حسب التاريخ .. قم عبدلله بتحديث حالته، قم محمد بإنشاء مشروع جديد (وتضع رابط للمشروع بالإعتماد على item_id) وتأخذ(اسم وصورة محمد من جدول الأعضاء بالإعتماد على user_id) .. وهكذا

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

حسنًا لو كان الـitem_id في جدول الآراء يساوي لitem_id في جدول التقييم مثلًا ؛ هنا ستحصل مشكلة تشابه قيمتين ، فكيف يمكنني أن أميّز الجداول عن بعضها؟

فكّرت في التواطؤ على نظام :

type_id

بحيث إذا كان 1 يعني في جدول الآراء ، 2 جدول التقييم وهكذا ، لكن لا أعلم كيف يمكنني التحقق من هذه القيمة في MySql ؟