Come generare una chiave naturale per un'entità di dominio?

3

Recentemente ho letto questa domanda: Proprietà ID sugli oggetti Dominio in DDD

La domanda parla di avere una chiave surrogata nel livello infrastruttura, che è un ID del database. Io uso un Guid per questo:

Guid id = Guid.NewId();

Le risposte quindi parlano di avere una chiave naturale nel livello del dominio che identifica le entità. Un grande esempio di questo nella mia mente è un conto in banca, ovvero il GUID identifica il conto bancario nel database (e il modello di dati) e il numero di conto e il codice di ordinamento identificano il conto bancario nel livello del dominio. livello dominio.

Dire che ho un'entità prodotto e voglio generare un codice prodotto nel livello dominio. Come lo farei? La domanda che ho collegato al discorso sull'utilizzo di algoritmi. Quali algoritmi ci sono?

    
posta w0051977 08.02.2018 - 10:20
fonte

1 risposta

3

Tieniti fedele al tuo esempio:

Say I have a product entity and I want to generate a product code in the domain layer. How would I do this?

Innanzitutto, chiedi ai tuoi esperti di dominio sui loro requisiti per un codice prodotto. Potrebbero inventare cose come

  • deve essere stampabile su carta, usando solo numeri, o usando caratteri alfanumerici, ma senza usare numeri e lettere insieme che possono essere facilmente mescolati (come 0 e O, 1 e l)

  • deve essere un codice a barre "friendly"

  • deve essere unico per ogni prodotto che dovrebbe essere prodotto entro i prossimi 10 anni dalla nostra azienda

  • deve codificare la categoria di prodotto in una parte del numero

  • deve codificare l'anno di produzione

  • non devono scontrarsi con tutti i numeri di prodotto 123456 già assegnati che sono stati generati in un sistema precedente seguendo una logica diversa

  • deve impedire i duplicati anche quando il tuo sistema funziona offline in modo distribuito

Quindi sarà compito tuo analizzare questi requisiti, trovare una soluzione sotto forma di algoritmo e implementare il codice richiesto nel livello dominio.

Oppure, se sei fortunato, i tuoi esperti di dominio ti dicono

  • non abbiamo bisogno di qualcosa come un codice prodotto per il nostro business, non ne abbiamo mai avuto uno in passato, non lo abbiamo mai perso

In questo caso, non inventare una "chiave naturale". Usa invece la chiave surrogata esclusivamente laddove è necessario implementare relazioni modellate.

    
risposta data 08.02.2018 - 11:53
fonte

Leggi altre domande sui tag