簡體   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