Sto pianificando uno schema di database e esito tra due progetti, quale dovrei scegliere?
Ai fini della domanda, supponiamo di voler preparare un database schema per un'applicazione che gestisce le informazioni degli studenti in a Università. Ci sono diversi moduli nell'applicazione:
-
Registro, che si occupa di informazioni generali, come la data di nascita, numero di assicurazione sanitaria e simili.
-
Libreria, che si occupa delle proprietà utili alla libreria gestione, come il numero di libri ritirati, quitus o sanzioni.
-
Esami, che riguardano gli esami presi e i voti.
La biblioteca dei moduli e gli esami vedono il registro dei moduli, ma a parte questo questo, sono indipendenti.
Nello scenario applicativo, c'è un numero molto grande di studenti, i dati vengono scritti una volta, raramente aggiornati e spesso letti. Inoltre, il l'università espande il suo sistema ogni anno, in modo che i moduli vengano aggiunti: Sport, Campus, qualunque cosa. I moduli rimangono abbastanza indipendenti.
Esito tra due layout di database.
Primo layout
Nel primo layout, una tabella MODULE
è associata a ciascun modulo e
un UID
è usato come chiave primaria. Poiché ogni modulo ha bisogno del
proprietà sotto controllo del Registro, prepariamo anche le viste del
join di REGISTRY
e MODULE
su UID
, in modo che il database lo sappia
useremo questo join in modo esteso.
Quando il sistema si espande, aggiungiamo una nuova tabella e una nuova vista da riflettere questa espansione.
Secondo layout
Nel secondo layout, creiamo una tabella con un numero elevato di colonne mantenendo le proprietà dei vari moduli.
Quando il sistema si espande, aggiungiamo colonne alle tabelle.
Confronto
Come si confrontano questi due approcci?
Se, per esempio, qualche aggiornamento del software viene fornito con un bug grave, che richiede downgrade del software ed esecuzione successiva di un secondo aggiornamento, sembra il primo layout essere più robusto Per quanto riguarda la perfomance, il secondo layout risparmia molto unire le operazioni, ma nel primo layout, abbiamo definito le viste per il unire le operazioni, quindi pubblicizzare quali operazioni complesse sono probabili accadere in modo che il sistema di database possa pianificare questo. Sono lontano da a esperto di database, ma ho ragione se penso che se metto tutto rilevante informazioni nelle mani del sistema di database, sarà in grado di portare correttamente l'operazione?
Se non l'avessi visto usato in applicazioni industriali, non lo avrei mai avuto dato 2 pences sul secondo layout. Ma dato che l'ho fatto, mi piacerebbe ottenere altri consigli.