[英]MySQL Database structure for a form with unknown number of values for one field
[英]MySQL Database Structure Push Values to One Field or Create New Table
我試圖找出一種方案的最佳數據庫結構,在這種方案中,用戶屬於一個組織,並且在組織表中有一個字段,其中包含與該組織相關聯的用戶的所有電子郵件。 在users
表中,我有一個外鍵organization_id
,該外鍵傳遞與用戶關聯的組織的值,但是我目前正計划在organization
表上創建一個members
列,該members
列將添加電子郵件地址(以逗號分隔)與該組織關聯的每個用戶。 我計划將此列用於檢索記錄的WHERE條件。 這是這樣做的明智方法嗎?還是我應該創建另一個表,該表稱為將users
和organization
表都關聯在一起的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.