Sono uno studente di ingegneria dei sistemi, e tutti i miei insegnanti e amici (che lavorano effettivamente nell'area) dicono che è meglio avere la maggior logica possibile implementata nel database (query, viste, trigger, < a href="http://en.wikipedia.org/wiki/Transact-SQL"> T-SQL , ecc.). Penso che sia meglio averlo nel codice.
Le loro ragioni sono:
-
Se hanno bisogno di cambiare la lingua, quasi tutta la logica sarà nel Banca dati; quindi il tempo di implementazione sarà minimo.
-
Le modifiche nella lingua sono più comuni rispetto al database.
Le mie ragioni sono:
-
È ovvio (nell'attuale contesto del mio paese almeno) che non cambiano la lingua dei progetti che "facilmente". (Ho visto programmi che sono ancora in FoxPro , perché se funziona, non c'è bisogno di cambiarlo).
-
I linguaggi di programmazione riguardano la funzionalità, mentre i database riguardano i dati. Puoi avere funzionalità di programmazione nei database, ma penso che dovrebbe essere limitato ai componenti che influenzano i dati.
-
È più semplice implementare nuovi requisiti (ad esempio: se il cliente desidera un'API).
-
Normalmente quando usano la logica nel database, il resto della logica implementata nel codice è più simile a spaghetti (funzioni casuali, ad esempio).
-
Generalmente, è più comune avere più programmatori che amministratori di database (DBA).
Quale implementazione è la migliore?