我是新的數據庫,我打算與你分享2數據庫表設計在這裏,我只想知道哪一個是最好的設計,爲什麼?這是最好的數據庫設計爲mysql
第一個我創建了一個用戶表,主題表和user_subject表。
在用戶表中我保存用戶信息,並在主題我保存主題。 IN user_subject中我保存了用戶ID和主題ID。
CREATE TABLE IF NOT EXISTS `subjects` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Table structure for table `user_subjects`
--
CREATE TABLE IF NOT EXISTS `user_subjects` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`subject_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
2一個>
CREATE TABLE IF NOT EXISTS `subjects` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`subject_name` varchar(2000) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
我保存的用戶,它的在user表科目昏迷(,),鯡魚,而不是創建另一個表保存用戶和主題標識。
我的第二個問題是最好的,因爲我們不需要在第三個表中保存數據。請告訴我哪一個是最好的和持久的未來。
第一個好得多。將數據保存爲逗號分隔值,限制了使用索引進行查詢的能力。 **順便說一句**你不需要在第三張桌子上有「ID」。只需用'(用戶,主題)'創建一個複合鍵' –
@JuanCarlosOropeza是正確的。第一個好多了。 – Harman