sql >> Databasteknik >  >> RDS >> Mysql

Lagra flera e-postadresser i databasen för olika användartyper

Du har antingen en e-posttabell som har en främmande nyckel som antingen är ett system_id, account_id eller customer_id. Sedan kan du ha ett fält som anger typen av den främmande nyckeln. En annan mer komplicerad strategi skulle vara att ha kvar e-posttabellen men ingen främmande nyckel. En annan tabell som du skulle kalla email_relation bestående av email_id och den främmande nyckeln. På så sätt kan du använda en e-postadress för alla tre tabellerna.

Exempel på användning av två tabeller

system
--------
s1 
s2
s3

account
--------
a1
a2
a3

customer
--------
c1
c2
c3

email
------
e1 [email protected]
e2 [email protected]
e3 [email protected]
e4 [email protected]

email_relation
---------------
email_id     foreign_id      relation_type
e1           s1              system
e1           a1              account
e1           c1              customer
e2           c1              customer
e3           c2              customer
e4           a3              account
e4           c3              customer

om du vill ha kundtabellen inklusive e-postadressen

select c.customer_id, e.email
from customer c
left join email_relation r on (r.foreign_id = c.customer_id and relation_type = 'customer')
left join email          e on (e.email_id    = r.email_id)
where r.email_id is not null

Om du vill ha all e-post till ett system kan du också

select e.email
  from email e
  join email_relation r on (r.email_id = e.email_id and relation_type = "system")
 where r.foreign_id = 1 


  1. Skapa en tabellvärderad funktion i SQL Server

  2. Skapa en Optgroup från en matris med data

  3. Vilken MySQL-datatyp ska användas för latitud/longitud med 8 decimaler?

  4. Rails på OSX 10.11 El Capitan:Biblioteket är inte laddat:libmysqlclient.18.dylib