Utilizzo di aggregazione e associazione

1

Dire che ho due classi: cliente e fattura. Le tabelle del database hanno questo aspetto:

CREATE TABLE Customer (ID int, name varchar(30), primary key (ID))
CREATE TABLE Invoice (ID int, date datetime, foreign key (CustomerID) references Customer(ID), primary key (ID))

Sto cercando di decidere se questa relazione debba essere modellata usando Aggregation o Association:

Aggregazione

public class Customer
{
 int ID;
 string Name;
 List<Invoice> Invoices;

 public void DoSomething()
 {
     //Do something with Customer.Invoices
 }

}

Qui l'oggetto cliente (incluse le fatture) viene popolato dall'ORM.

Associazione

public class Customer
{
 int ID;
 string Name;

     public Customer int id, string name, list<Invoice> invoices)
     {
        ID=id;
            Name = name;
        Invoices=invoices;
     }

     public void DoSomething(List<Invoice> Invoices)
     {
         //Do something with local Invoices
     }

    }

Dire che ho due storie di utenti. Una storia utente richiede che le fatture sopravvivano al cliente e una storia utente richiede che la fattura venga eliminata con il cliente. Come modellerei questo? Avrei un membro di n Invoices (come il frammento di codice uno) e un metodo che accetta le fatture come argomento (come il frammento di codice due)?

Non sto sviluppando un sistema che utilizza clienti e fatture. Sto solo cercando di migliorare il mio modo di pensare.

    
posta w0051977 08.11.2017 - 16:46
fonte

1 risposta

1

Ha a che fare con ciò che pensi di eliminare.

In Aggregation, both the entries can survive individually which means ending one entity will not effect the other entity

When there is a composition between two entities, the composed object cannot exist without the other entity.

geeksforgeeks.org: Association Composition Aggregation

Quindi, se il team legale ha preso d'assalto il dipartimento IT con un'ingiunzione del tribunale e ti ha costretto a eliminare un record cliente, vuoi eliminare automaticamente anche le fatture dei clienti, anche se questo non fa parte dell'ordine del tribunale?

Ci sono molti motivi per eliminare. È il significato dell'eliminazione a dettare come dovrebbe passare a cascata attraverso il sistema. Come si comporterà il sistema se le fatture puntano a clienti che non esistono? È così che vuoi che si comporti?

    
risposta data 08.11.2017 - 18:05
fonte

Leggi altre domande sui tag