Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lưu trữ nhiều địa chỉ email trong cơ sở dữ liệu cho các kiểu người dùng khác nhau

Bạn có một bảng email có khóa ngoại là system_id, account_id hoặc customer_id. Sau đó, bạn có thể có một trường chỉ định loại khóa ngoại đó. Một chiến lược khác phức tạp hơn sẽ là vẫn có bảng email nhưng không có khóa ngoại. Một bảng khác mà bạn sẽ gọi là email_relation bao gồm email_id và khóa ngoại. Bằng cách đó, bạn có thể sử dụng một địa chỉ e-mail cho cả ba bảng.

Ví dụ về việc sử dụng hai bảng

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

nếu bạn muốn bảng khách hàng bao gồm địa chỉ e-mail

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

Nếu bạn muốn tất cả e-mail vào một hệ thống, bạn cũng có thể

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 SELECT only not null value

  2. mysql tham gia 3 bảng

  3. Hỗ trợ Homebrew, MySQL 8

  4. DECIMAL mysql và không gian lưu trữ?

  5. Lỗi MySQL 1241:Toán hạng phải chứa 1 (các) cột