So che questa domanda è stata probabilmente posta diverse volte prima, ma la mia domanda è specifica per la mia situazione.
Sto implementando un servizio di notifica micro. Ha una tabella email e una tabella queue . Il servizio è esposto utilizzando un'API REST. Ogni email può avere più to indirizzi e cc indirizzi. La coda ha un ID e-mail. Una volta inviata l'email, la riga viene rimossa dalla coda.
Al momento, è necessario no richiedere chi ha inviato le email o se è stata inviata un'email per un determinato utente con un determinato indirizzo email. Esistono diverse idee su come memorizzare gli indirizzi email / cc.
- memorizzali in formato JSON in un campo indirizzo della tabella email:
{
toList: ['h@h','g@g'],
ccList: ['a@b','c@d']
}
Ho preso in considerazione l'utilizzo del tipo di dati JSON di MySQL 5.7, ma non è supportato in h2db che usiamo per i test di integrazione.
-
memorizzali come valori separati da virgola in
toList,ccListcolonne nella tabellaemail. -
Memorizzali in una tabella relazionale come
email,emailaddress,emailaddresstypedove la tabellaemailaddressconterràemailid, indirizzo email eemailaddressstypeid. Ciò comporta diversi record nella tabellaemailaddresse anche più join.
Quale sarebbe la migliore soluzione da implementare in questo caso? Generalmente sono contrario alla violazione dell'FNF e non sono sicuro di cosa significhi avere così tanti record in una tabella emailaddress come un record per ogni email inviata, ad esempio, a 2 o 3 persone. Non c'è una tabella user in questo sistema, se questo è importante.