Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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
MySQL中的电子邮件组_Mysql_Sql - Fatal编程技术网

MySQL中的电子邮件组

MySQL中的电子邮件组,mysql,sql,Mysql,Sql,我有一个小项目,我的数据有一些SQL设计问题 假设我的数据库中有2个表: Contacts ID name privateemail1 privateemail2 office email 我有小组 ID Groupname 将它们链接在一起的最佳方式是什么?我也可以在组中使用组 如果我做了一个成员表 ID GroupID ContactID 我看不出如何将嵌入的子组与主组相匹配 例如 主要群体,如管弦乐队成员;歌手 分组,如管乐器手、弦乐手、男歌手、女歌手等 修改后的问题:上述示例无法涵

我有一个小项目,我的数据有一些SQL设计问题

假设我的数据库中有2个表:

Contacts
ID
name
privateemail1
privateemail2
office email
我有小组

ID
Groupname
将它们链接在一起的最佳方式是什么?我也可以在组中使用组

如果我做了一个成员表

ID
GroupID
ContactID
我看不出如何将嵌入的子组与主组相匹配

例如

主要群体,如管弦乐队成员;歌手
分组,如管乐器手、弦乐手、男歌手、女歌手等

修改后的问题:上述示例无法涵盖所有变化。。。任何组都可以成为子组或主组,如Outlook通讯组列表

只需查看评论,我非常感谢,如果能够看到一个CREATE、SELECT和所有组以及一个DELETE示例,那就太好了。这将带来更多的关注,并有望带来更多的结果


我希望这不是一个很愚蠢的问题,但作为一个初学者,我在发布这篇文章之前花了几个小时。。。提前感谢您的帮助

通过理解您的问题,您必须将一个表链接到自身,然后您可以通过在组中再添加一列来链接到该表,让说Pid*,它将与组中Id的数据类型*相同,然后将其作为同一表中引用ID的外键。我想它会解决你的问题。

通过理解你的问题,你必须将一个表链接到它本身,然后你可以通过在组中添加一列来链接到该表,让说Pid*,它的数据类型*与组中Id的数据类型*相同,然后将其作为同一表中引用ID的外键。我想它会解决你的问题。

我已经用两用表解决了这个问题:

表:集团成员资格

id
groupID
linktype
linkID
linktype
可以是一个好读的文本字段(“用户”、“组”)(如果您自己进行SQL访问,可能值得一点性能损失),也可以使用一个INT字段(1,2),其中每个字段对您都有意义

要查找组2中的所有用户,请执行以下操作:

SELECT linkID as userID FROM groupMemberships 
WHERE groupID=2 AND linktype='user';
要查找所有子组,请执行以下操作:

SELECT linkID as groupID FROM groupMemberships 
WHERE groupID=2 AND linktype='group';
这样的双表的一个问题是,当您想——比如说——获取所有组用户时,您不知道它们可能有多少个子组。如果您可以确定只有一个级别的子组,则可以执行以下操作:

SELECT linkID as userID FROM groupMemberships
WHERE groupID=2 and linktype='user'
UNION
SELECT sg.linkID as userID FROM groupMemberships g,groupMemberships sg
WHERE g.groupID=2 AND g.linktype='group' 
  AND sg.groupID=g.linkID AND sg.linktype='user'
如果您有两层子组,则需要两个工会,以此类推。当您有
n个
子组时,您需要n个联合,这是一个难以编写且效率低下的问题

另一种解决方案是保持您的
联系人
表相同,只需将联系人链接到组-表
联系人组

ID
groupID
userID

现在,代码端(数据库之外)当您将用户添加到组(WindPlayer)时,您也会自动将其添加到任何父组(orchestra),因此用户实际上会在
contactsGroup
表中获得两个条目。这具有相同的存储信息,但使数据检索更容易。您甚至可以将此子组信息存储在数据库中,尽管您已经有了对象继承或类似的代码端。

我已经用两用表解决了这个问题:

表:集团成员资格

id
groupID
linktype
linkID
linktype
可以是一个好读的文本字段(“用户”、“组”)(如果您自己进行SQL访问,可能值得一点性能损失),也可以使用一个INT字段(1,2),其中每个字段对您都有意义

要查找组2中的所有用户,请执行以下操作:

SELECT linkID as userID FROM groupMemberships 
WHERE groupID=2 AND linktype='user';
要查找所有子组,请执行以下操作:

SELECT linkID as groupID FROM groupMemberships 
WHERE groupID=2 AND linktype='group';
这样的双表的一个问题是,当您想——比如说——获取所有组用户时,您不知道它们可能有多少个子组。如果您可以确定只有一个级别的子组,则可以执行以下操作:

SELECT linkID as userID FROM groupMemberships
WHERE groupID=2 and linktype='user'
UNION
SELECT sg.linkID as userID FROM groupMemberships g,groupMemberships sg
WHERE g.groupID=2 AND g.linktype='group' 
  AND sg.groupID=g.linkID AND sg.linktype='user'
如果您有两层子组,则需要两个工会,以此类推。当您有
n个
子组时,您需要n个联合,这是一个难以编写且效率低下的问题

另一种解决方案是保持您的
联系人
表相同,只需将联系人链接到组-表
联系人组

ID
groupID
userID

现在,代码端(数据库之外)当您将用户添加到组(WindPlayer)时,您也会自动将其添加到任何父组(orchestra),因此用户实际上会在
contactsGroup
表中获得两个条目。这具有相同的存储信息,但使数据检索更容易。您甚至可以将此子组信息存储在数据库中,尽管您已经有了对象继承或类似的代码端。

我认为user911882的意思是拥有如下模式:

Contacts
- ID
- name
- privateemail1
- privateemail2
- office
- email

Groups
- ID
- Groupname
- ParentGroupID **foreign key which references Groups.ID**

Memberships
- ID
- GroupID
- ContactID

我认为user911882的意思是有这样一个模式:

Contacts
- ID
- name
- privateemail1
- privateemail2
- office
- email

Groups
- ID
- Groupname
- ParentGroupID **foreign key which references Groups.ID**

Memberships
- ID
- GroupID
- ContactID

谢谢,我只是想解决同样的问题。这个小组来自哪里?她在小组里吗?或者存在另一个已注册的详细信息?子组是普通组,只是您可以使用任何组作为主组或子组。您可能还希望进一步规范化
联系人
表,尽管这可能符合您的目的。您能再解释一下如何做到这一点吗?我会从中学习。谢谢谢谢,我只是想解决同样的问题。这个小组是从哪里来的?她在小组里吗?或者存在另一个已注册的详细信息?子组是普通组,只是您可以使用任何组作为主组或子组。您可能还希望进一步规范化
联系人
表,尽管这可能符合您的目的。您能再解释一下如何做到这一点吗?我会从中学习。谢谢你的详细解释。谢谢鲁杜,这里有“随机”的联系,一个人可以是歌手,也可以是号角手,所以这张唱片将由管弦乐队、管弦乐队、兽人托管人、号角手、独奏家、歌手组成