我試圖找出用戶屬於一個組織並且在組織表內有一個字段的場景的最佳數據庫結構與該組織相關聯的用戶。在users
表中,我有一個organization_id
的外鍵,它通過了與用戶關聯的組織的價值,但在organization
表上,我目前正在計劃創建一個members
列,以添加電子郵件地址(以逗號分隔)針對與該組織相關聯的每個用戶。我計劃在檢索記錄的WHERE條件中使用此列。這是做到這一點的聰明方式,還是我應該創建另一個名爲members
的表,關聯users
和organization
表?MySQL數據庫結構將值推送到一個字段或創建新表
這裏是我的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;
這是一個多對多的關係嗎? (用戶是否屬於多個組織?)如果是這樣,您可能希望擁有一個會員表,該會員表記錄了org_id與user_id的所有配對,而不是在任何一個父表中都有重複的信息。 – Stidgeon
用戶只能屬於一個組織 – cphill