表后缀:
身份证,姓名
(3, 'com')
表域名:
身份证,姓名
(2, 'microsoft')
表域:
id,name_code,sufix
(1, 2, 3) -- microsoft.com
表SubDomainName:
(4, 'windows')
表子域:
id,name_code,domain
(7, 4, 1) -- windows.microsoft.com
表格电子邮件:
ID,名称,服务器
(3, 'myemail', 7) -- myemail@windows.microsoft.com
(4, 'other', 1) -- other@microsoft.com
这是外键约束的问题。如何解析域和子域以正确创建电子邮件?我在使用NULL值的Unique INDEX时遇到问题,例如,一种解决方案可能是:
表格电子邮件:
ID,名称,子域,域
(3, 'myemail', 7, NULL) -- myemail@windows.microsoft.com
(4, 'other', NULL, 1) -- other@microsoft.com
但
(5, 'newemail', NULL, NULL) -- will duplicated values in the table
(6, 'newemail', NULL, NULL)
(7, 'newemail', NULL, NULL)
(8, 'newemail', NULL, NULL)
和
(**3**, 'myemail', 7, 1) -- myemail@windows.microsoft.com and myemail@microsoft.com
最佳答案
怎么样(5,“ newemail”,domain_id / subdomain_id,“ domain / subdomain”)
所以你可以
(5,'newemail',7,'subdomain')或(5,'newemail',1,'domain')
您仍然可以LEFT JOIN SubDomain和Domain表,但是您将基于“ domain / subdomain”字段仅从所需的数据中获取数据。
那是快速的解决方案。恕我直言,您的数据库结构不是很好,可以进行优化。您应该将所有域/子域记录保留在一个表中,并将其用于电子邮件。该表应为表FullDomain:id,name_code,domain_name,subdomain_name(1, 3, 2, 4) -- windows.microsoft.com
要么(1, 3, 2, 0) -- microsoft.com