dati vs logica aziendale

-3

Oggi il mio manager ha detto: "Amir, non mescolare la logica di business con i dati nel database". Ho sorprendentemente scioccato! Ho detto "Dove?".

Secondo la logica aziendale wikipedia è:

In computer software, business logic or domain logic is the part of the program that encodes the real-world business rules that determine how data can be created, stored, and changed.

Ha detto che la categoria e la sottocategoria sono logiche di business nella nostra definizione e requisiti e non dovresti creare una relazione uno-a-molti nel database per loro. Ovviamente, devi codificarli in logica e creare alcuni oggetti o xml per loro.

A volte, è difficile separare logica e dati. La mia domanda è quali sono le tue opzioni o la tua esperienza su questa parte? Come posso separare molto bene i dati e le regole aziendali in base ai requisiti.

    
posta Amir Shabani 06.08.2018 - 15:11
fonte

2 risposte

2

Ci sono molte scuole di pensiero riguardo a quale logica & regole che puoi inserire nel database e questo varierà in qualche modo sulle capacità e sul tipo del database.

Tuttavia, una cosa è certa: se non si inserisce una sufficiente logica di dominio nel database per conservare l'integrità dei dati, è necessario avvolgere il database in un servizio e tutte le applicazioni accedono al servizio anziché database direttamente.

Sono d'accordo con Wikipedia sul fatto che le entità, le loro relazioni e requisiti sulla loro integrità referenziale, così come altri vincoli, fanno parte della logica aziendale / di dominio - eppure appartengono codificati nel database (se, per esempio, relazionali), o in un servizio che avvolge il database, ad esempio, se NoSQL. Non penso che tu possa veramente separare dati e amp; persistenza dalla logica aziendale / di dominio, poiché lo schema dei dati è semplicemente è logico per e del dominio aziendale. (Non penso che l'uso di xml risolverà fondamentalmente qualsiasi cosa a questo proposito - sposta semplicemente il problema su un'altra tecnologia.)

Personalmente ritengo che le relazioni one-to-many siano a volte esattamente ciò di cui abbiamo bisogno, ma altre volte possono essere pensate come un'ottimizzazione su relazioni molti-a-molti e, in quanto tale, può essere prematura e (business / dominio) limitando l'ottimizzazione.

Ad esempio, progettare il modello di dati per avere un ufficio per istruttore / professore o un reparto per istruttore, potrebbe funzionare a lungo, quindi cadere sul suo volto quando si incontra uno scenario raro che insegna un istruttore / professore in due (o più) reparti.

Altri esempi di ottimizzazione prematura nello schema sono la creazione di identità separate per l'entità Insegnante e un'entità Studente. Ora uno studente che insegna o un insegnante che segue un corso deve avere due identità nel sistema. Preferita sarebbe un'entità Person che può svolgere più ruoli nel tempo. (Questo vale anche per l'utilizzo di relazioni molti-a-molti su uno-a-molti.)

    
risposta data 06.08.2018 - 16:09
fonte
0

Nel tuo caso esemplificativo, capisco che la categoria sia solo un'etichetta strutturalmente identica alla sottocategoria: una stringa, possibilmente con una lunghezza massima. Secondo il tuo manager, il significato assegnato a quell'etichetta è la logica aziendale.

Ciò implicherebbe che la scelta di ritenere qualcosa una categoria o una sottocategoria non è fissa e sarà effettuata caso per caso, a seconda dello scenario.

Se questo non è il caso, vorrai memorizzare le relazioni genitore-figlio da qualche parte e torneresti al livello del tuo database.

    
risposta data 07.08.2018 - 07:30
fonte

Leggi altre domande sui tag