Sto cercando di creare un database per un prossimo webproject di Ruby on Rails.
Ci saranno 4 tabelle minium: compiti, utenti, allegati e commenti. E 1 tabella per unire le relazioni n: m (attività < - > utenti).
Un'attività ha molti utenti, molti commenti e molti allegati. Un commento ha molti allegati ed è stato creato da un utente. Un allegato è stato creato da un utente.
Gli utenti possono avere molte attività, molti commenti e molti allegati.
Un piccolo schizzo per illustrare i miei pensieri:
Le tabelle con relazioni 1: n contengono l'ID della tabella correlata (ad es. un commento contiene l'id utente)
Pensi che questo schema segua le regole di normalizzazione? Ha senso o ci sono ridondanze? Penso che ci sia un piccolo problema con la tabella degli allegati, perché questo deve contenere un campo tipo e un campo id per distinguere tra attività e commenti.
E tutti i tipi di contenuto (attività, commenti, allegati) sono assegnati da molti utenti (attività) o creati da (commenti, allegati) un utente.
I commenti sono non ricorsivi.
Ho preso in considerazione il seguente pseudocodice:
tasks = getTasks
each tasks as task
# get task content
users = getUsersByTaskID
each users as user
#get user content
attachments = getAttachmentsByTypeAndTaskID
each attachments as attachment
# get attachment content
user = getUserByID
comments = getCommentsByTaskID
each comments as comment
# get comment content
user = getUserByID
attachments = getAttachmentsByTypeAndCommentID
each attachments as attachment
# get attachment content
user = getUserByID
Penso che sia ancora un po 'complicato. Ho trascurato qualcosa? Ci sono modi migliori per implementare le mie idee?