Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 具有唯一索引MySQL和空列的重复行_Php_Mysql_Database_Email_Dns - Fatal编程技术网

Php 具有唯一索引MySQL和空列的重复行

Php 具有唯一索引MySQL和空列的重复行,php,mysql,database,email,dns,Php,Mysql,Database,Email,Dns,表Sufix: id,name (3, 'com') (2, 'microsoft') 表域名: id,name (3, 'com') (2, 'microsoft') 表域: id、名称和代码、sufix (1, 2, 3) -- microsoft.com 表子域名: (4, 'windows') 表子域: id、名称、代码、域 (7, 4, 1) -- windows.microsoft.com (3, 'myemail', 7, NULL) -- myema

表Sufix: id,name

(3, 'com')
(2, 'microsoft')
表域名: id,name

(3, 'com')
(2, 'microsoft')
表域: id、名称和代码、sufix

(1, 2, 3)    -- microsoft.com
表子域名:

(4, 'windows')
表子域: id、名称、代码、域

(7, 4, 1)     -- windows.microsoft.com
(3, 'myemail', 7, NULL)  -- myemail@windows.microsoft.com
(4, 'other', NULL, 1)    -- other@microsoft.com
表格电子邮件: id、名称、atserver

(3, 'myemail', 7)    -- myemail@windows.microsoft.com
(4, 'other', 1)      -- other@microsoft.com
这里有一个外键约束问题。如何解析域和子域以正确创建电子邮件?我在使用空值的唯一索引时遇到问题,例如,解决方案可能是:

表格电子邮件: id、名称、子域、域

(7, 4, 1)     -- windows.microsoft.com
(3, 'myemail', 7, NULL)  -- myemail@windows.microsoft.com
(4, 'other', NULL, 1)    -- other@microsoft.com
但是


MySQL中的Unique只检查非空值是否唯一。 因此,如果您不喜欢使用多行代码:

(6, 'newemail', NULL, NULL)
您必须在最后两个字段上放置唯一索引,并在其中放置除NULL(即0)以外的值


然后MySQL将阻止多个条目。

Unique在MySQL中只检查非空值是否唯一。 因此,如果您不喜欢使用多行代码:

(6, 'newemail', NULL, NULL)
您必须在最后两个字段上放置唯一索引,并在其中放置除NULL(即0)以外的值

然后MySQL将阻止多个条目。

如何(5,'newemail',domain\u id/subdomain\u id',domain/subdomain')

所以你本来可以

(5,“新邮件”,7,“子域”)或(5,“新邮件”,1,“域”)

您仍然可以保留JOIN SubDomain和Domain表,但根据“Domain/SubDomain”字段,您只能从所需的表中获取数据

这是一个快速的解决方案。我想你的数据库结构不是很好,可以优化。您应该将所有域/子域记录保存在一个表中,并将其用于电子邮件。该表应为表FullDomain:id、名称\代码、域名、子域\名称


(1,3,2,4)--windows.microsoft.com


(1,3,2,0)--微软网站

怎么样(5,'newemail',domain\u id/subdomain\u id',domain/subdomain')

所以你本来可以

(5,“新邮件”,7,“子域”)或(5,“新邮件”,1,“域”)

您仍然可以保留JOIN SubDomain和Domain表,但根据“Domain/SubDomain”字段,您只能从所需的表中获取数据

这是一个快速的解决方案。我想你的数据库结构不是很好,可以优化。您应该将所有域/子域记录保存在一个表中,并将其用于电子邮件。该表应为表FullDomain:id、名称\代码、域名、子域\名称


(1,3,2,4)--windows.microsoft.com


(1,3,2,0)--微软网站

约束没有问题吗?我无法在“域\u id/子域\u id”列中设置“仅来自子域和域的值”约束。该约束没有问题吗?我无法在“域id/子域id”列中设置“仅限子域和域的值”约束。