Mysql
 sql >> база данни >  >> RDS >> Mysql

Съхранявайте множество имейл адреси в база данни за различни типове потребители

Имате или имейл таблица, която има външен ключ, който е или system_id, account_id или customer_id. След това можете да имате поле, указващо типа на този външен ключ. Друга по-сложна стратегия би била да имате все още таблицата с имейли, но без външен ключ. Друга таблица, която бихте нарекли email_relation, състояща се от email_id и външния ключ. По този начин можете да използвате един имейл адрес и за трите таблици.

Пример за използване на две таблици

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

ако искате таблицата с клиенти, включително имейл адреса

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

Ако искате цялата електронна поща до система, можете също да

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изключение за счупена тръба с MySql в приложението Grails

  2. Как да премахнете запетаи от цяло число от заявката за избор на MY SQL

  3. Въпрос на MYSQL ПРИ АКТУАЛИЗИРАНЕ НА ДУБЛИРАН КЛЮЧ

  4. Актуализиране на изгледи в MySQL

  5. Мигриране на MySQL към PostgreSQL на AWS RDS, част 2