繁体   English   中英

MySQL数据库结构将值推入一个字段或创建新表

[英]MySQL Database Structure Push Values to One Field or Create New Table

我试图找出一种方案的最佳数据库结构,在这种方案中,用户属于一个组织,并且在组织表中有一个字段,其中包含与该组织相关联的用户的所有电子邮件。 users表中,我有一个外键organization_id ,该外键传递与用户关联的组织的值,但是我目前正计划在organization表上创建一个members列,该members列将添加电子邮件地址(以逗号分隔)与该组织关联的每个用户。 我计划将此列用于检索记录的WHERE条件。 这是这样做的明智方法吗?还是我应该创建另一个表,该表称为将usersorganization表都关联在一起的members

这是我的organization表:

CREATE TABLE `organization` (
  `organization_id` int(11) NOT NULL AUTO_INCREMENT,
  `organization_name` varchar(255) DEFAULT NULL,
  `admin` varchar(255) DEFAULT NULL,
  `members` varchar(255) DEFAULT NULL,
  `createdAt` datetime NOT NULL,
  `updatedAt` datetime NOT NULL,
  PRIMARY KEY (`organization_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

这是我的user表:

CREATE TABLE `user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(255) DEFAULT NULL,
  `last_name` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `createdAt` datetime NOT NULL,
  `updatedAt` datetime NOT NULL,
  `organization_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

由于它是一对多的(一个组织有许多用户,但是一个用户只能属于一个组织),因此我将执行以下结构:

user
user_id    first_name  . . . email    org_id
---------------------------------------------
  (PK)                                 (FK)

organization
org_id     org_name . . . 
------------------------------
  (PK)

这就是你所拥有的。

获取组织的所有成员(及其电子邮件或其他信息):

SELECT u.user_id, u.email
FROM user u
WHERE org_id = (whatever value you want)

将user_id或电子邮件(或“成员”)插入org表将是不必要的重复操作,因为org_id已将用户链接到org。 您可以从上述查询中获得组织邮件列表。

如果您有多对多关系,我只会做一个成员表。

如果缺少某些内容,请告诉我,我将回到绘图板上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM