Database e principio di responsabilità singola

2

Il principio di responsabilità unica può essere applicato ai database? database relazionali intendo.

Lo sto chiedendo perché un database tipico avrà diverse tabelle e potremmo trovare qualcosa di simile tra loro:

  • Le tabelle gestiscono ACL e autorizzazioni.
  • Le tabelle gestiscono l'autenticazione dell'utente.
  • Tabelle relative ai lavori cron e alle attività pianificate.
  • Tabelle relative al dominio stesso.
  • Tabelle relative a e-mail e inviti e così via.
  • Ricerca.

Inoltre, le tabelle relative al dominio potrebbero essere divise in base al modulo dell'applicazione su cui eseguono il backup.

Nel codice di solito dividiamo il nostro codice base in moduli / pacchetti / spazi dei nomi, ma questo concetto è assente dai database relazionali per quanto ne so.

quindi cosa sto chiedendo se il database fosse diviso in qualche modo in database più piccoli? o forse database (moduli ?!) O dovremmo semplicemente raggruppare tutto e sperare in una buona convenzione di denominazione, se esiste?!

    
posta Songo 08.07.2014 - 13:18
fonte

2 risposte

2

Penso che l'SRP si traduca direttamente nei principi del design ortogonale e della piena normalizzazione nei database relazionali.

Se ricordi che SRP afferma che non ci dovrebbe mai essere più di un motivo per cambiare classe, allora l'analogia diventa immediatamente evidente.

Tuttavia, se il database debba essere diviso in più database più piccoli è un problema ortogonale, che è più interessante per ragioni pratiche che logiche.

    
risposta data 08.07.2014 - 14:16
fonte
1

L'SRP si applica alle classi e ai metodi che definisci. Un database non è un'entità definita dall'utente, è un'infrastruttura che trascende i requisiti e le responsabilità individuali (infatti, è migliore che ha a che fare con un solo database per un sistema piuttosto che doversi destreggiare multipli).

Pertanto, non c'è motivo di preoccuparsi del fatto che funzionalità completamente diverse si associno a relazioni (tabelle) nella stessa base di dati. Se si desidera applicare l'SRP, concentrarsi su ottenere ogni relazione per servire uno scopo chiaramente definito, non l'intero DB.

    
risposta data 08.07.2014 - 13:22
fonte

Leggi altre domande sui tag