Qual è il modo corretto di progettare un modello e le sue relazioni?

0

Ho i seguenti modelli di database e le sue proprietà:

  • Utente (id, id_guida, nome, email, password)
  • Ruolo (id, nome, descrizione, attivo)
  • User2Role (user_id, role_id)
  • Cliente (id, nome, user_id)

Un utente ha molti ruoli. Un cliente è un utente. Ma un utente non è sempre un cliente (ad esempio amministratore)

Ora, come posso rappresentarlo nel mio livello di dominio?

Esempio 1:

public class User {

    private long userID;
    private List<Long> roleIds;

    private String userName;
    private String userEmail;
    private String userPassword;
}

Esempio 2:

public class User {

    private long userID;
    private List<Role> roles;

    private String userName;
    private String userEmail;
    private String userPassword;
}

Lo stesso vale per il cliente, dovrei solo salvare l'id utente nel cliente o creare un oggetto utente e salvare l'oggetto utente nel cliente?

    
posta Rep 01.05.2017 - 22:11
fonte

1 risposta

2

Perché C # (e Java) usa i riferimenti, il codice

private List<Role> roles;

è perfettamente valido.

roles è un elenco di riferimenti Role ; non stai memorizzando copie degli oggetti Role originali, o anche degli oggetti Role originali. Piuttosto, gli oggetti Role sono memorizzati in alcune posizioni arbitrarie in memoria e la raccolta roles memorizza semplicemente "puntatori" su tali oggetti.

Non ti costa nulla in più (come la memoria aggiuntiva), in altre parole.

Questa disposizione ti consente di fare riferimento allo stesso oggetto role in ciascuno dei diversi oggetti User . A differenza del tuo esempio roleID, ti dà comunque accesso a tutti i campi nella percentuale di riferimento% co_de.

    
risposta data 01.05.2017 - 22:40
fonte

Leggi altre domande sui tag