مخطط قواعد بيانات مجتمع حسوب

اذا اردت صناعة تطبيق مثل مجتمع حسوب كيف سيكون مخطط قواعد البيانات .


الهيكلة الأساسية ستكون على نحو كهذا:

users table
=============
id
name
email
password
created_at
updated_at
...

posts table
=============
id
type // link or post
title
link // link if type equal link or null if type equal post
body
user_id // foreign key form users table
created_at
updated_at
...

comments table
=============
id
comment
user_id // foreign key form users table
post_id // foreign key form posts table
created_at
updated_at
...

messages table
==============
id
title
body
sender_id // foreign key form users table
reciver_id // foreign key form users table
created_at
updated_at
...

message_replies
===============
id
body
status
message_id // foreign key form messages table
sender_id // foreign key form users table
reciver_id // foreign key form users table
created_at
updated_at
...

post_votes table
===============
id
voit
user_id // foreign key form users table
post_id // foreign key form posts table
...

comment_votes table
===============
id
voit
user_id // foreign key form users table
post_id // foreign key form posts table
...

notifations table
================
id
title
link
status
user_id // foreign key form users table
created_at
updated_at
...

اعتقد ان جدول التعليق يجب ان يكون كل تعليق فيه مرتبط بتعليق اخر حتى يتم تسلسل التعليقات

نعم سنضيف عمود باسم parent_id يدل على التعليق الأب للتعليق ويأخذ القيمة null في حالة كونه التعليق الجذر.

لا تنس جدول المجتمعات و مراجعات المواضيع و التعليقات .

كتبت تخطيط سريع على عُجالة وأشرت أنه سيكون على شاكلة هذا التخطيط، وليس هو التخطيط الفعلي لكل محتوى الموقع :)

إضافة الجداول التي أشرت إليها سيكون على النحو

communities table
==================
id
name
image
user_id
created_at
updated_at
...

posts_edit table
===================
id
type
title
link
body
post_id // foreign key form posts table
created_at
updated_at
...

comments_edit table
===================
id
body
comment_id // foreign key form comments table
created_at
updated_at
...

وسنضيف مفتاح غريب لجدول الموضوعات posts لربطه بالمجتمعات

community_id // foreign key form communities table