اذا اردت صناعة تطبيق مثل مجتمع حسوب كيف سيكون مخطط قواعد البيانات .
مخطط قواعد بيانات مجتمع حسوب
الهيكلة الأساسية ستكون على نحو كهذا:
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
...
كتبت تخطيط سريع على عُجالة وأشرت أنه سيكون على شاكلة هذا التخطيط، وليس هو التخطيط الفعلي لكل محتوى الموقع :)
إضافة الجداول التي أشرت إليها سيكون على النحو
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
الموضوع كبير وفيه سيكون لديك عِدة جداول، وهنالك جداول مرتبطة بجداول أخرى، يمكنك إستخدام MySQL فهي تفي بالغرض، مثلًا:-
1- جدول لتخزين بيانات الأعضاء.
2- جدول لتخزين بيانات المواضيع.
3- جدول لتخزين الردود.
4- جدول لتخزين الإعجابات والتسليبات.
5- جدول للإداريين والمشرفين (إختياري ، يمكنك دمجهم مع الاعضاء مع إضافة عمود للتفرقة بين الصلاحيات).
كل جدول من هذه الجداول يحتوي على عدد من الإعمدة على حسب إحتياجك، ويوجد هنالك علاقات بين الجداول حتى يصير الأمر منطقى، فمثلًا، إذا تم حذف عضو من جدول الأعضاء، فإن جميع مواضيعه وردوده سيتم حذفها من جدولي المواضيع والردود، وسيتم حذف جميع الردود من الاعضاء الآخرين المتعلقة بمواضيعه.
وهكذا يتم تصميم قواعد البيانات غالبًا.
نصيحة بسيطة ، لا تكثر من عدد الجداول والأعمدة بقدر المستطاع حتى يكون التعامل مع البيانات سهل وسريع.
التعليقات