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
,ccList
colonne nella tabellaemail
. -
Memorizzali in una tabella relazionale come
email
,emailaddress
,emailaddresstype
dove la tabellaemailaddress
conterràemailid
, indirizzo email eemailaddressstypeid
. Ciò comporta diversi record nella tabellaemailaddress
e 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.