sql >> Database teknologi >  >> RDS >> Mysql

Gem flere e-mailadresser i databasen til forskellige brugertyper

Du har enten en e-mail-tabel, der har en fremmednøgle, som enten er et system_id, account_id eller customer_id. Så kan du have et felt, der angiver typen af ​​den fremmednøgle. En anden mere kompliceret strategi ville være at have stadig e-mail-tabellen, men ingen fremmednøgle. En anden tabel, som du ville kalde email_relation bestående af email_id og fremmednøglen. På den måde kan du bruge én e-mailadresse til alle tre tabeller.

Eksempel på brug af to 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

hvis du ønsker kundetabellen inklusive e-mailadressen

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

Hvis du vil have al e-mail til et system, kan du også

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. PostgreSQL:Unik overtrædelse:7 FEJL:dubletnøgleværdi overtræder unik begrænsning users_pkey

  2. MySQL:Hvad er forskellen mellem float og double?

  3. Hvordan vælger jeg forespørgselsresultatrangering af en bestemt række ved hjælp af MySQL?

  4. Udfyld INSERT med resultat fra SELECT