Ho un problema concettuale qui. Quando interrogo il mio database, lo faccio spesso con join. Quindi una riga di serie di risultati potrebbe apparire come
+------------+--------------+------------+-------+----------+----------+---------+
| CustomerId | CustomerName | MaterialId | Sales | Quantity | Salesman | Manager |
+------------+--------------+------------+-------+----------+----------+---------+
Questo risultato contiene proprietà che verrebbero visualizzate in determinati oggetti, come Customer
, Material
, Invoice
e Salesman
. Non avrebbe senso mettere tutte queste proprietà in uno qualsiasi degli oggetti di cui sopra. Ad esempio, avere una proprietà sales
in un oggetto Material
interrompe la coesione degli oggetti secondo me. Le proprietà di un materiale (in questo contesto è una parte meccanica / plastica) dovrebbero elencare il suo id, il suo produttore, a quale macchina è applicabile, ecc. Per avere una proprietà di vendita non è correlata, perché le vendite hanno senso solo quando si parla di cliente.
Un altro avvertimento dei miei dati è che non lavoro mai con fatture individuali, ma piuttosto fatture aggregate per un certo periodo di tempo, raggruppando le fatture per cliente e materiale. Pertanto, anche la parola chiave Invoice
sembra errata, perché una fattura rappresenta un punto specifico nel tempo in cui è stata effettuata una vendita.
Il mio problema è che mi piacerebbe avere un oggetto che abbia tutte queste proprietà, ma non so come dargli un nome preciso. Che cosa quindi, dovrebbe essere chiamato questo oggetto? Qualcosa di generico come AggregateInvoice
? Come faccio a rappresentare accuratamente tutte queste diverse proprietà come un nome?