現有系統 - 我有我的系統中現有的用戶和Tutor_Details表。 - 有兩種類型的用戶 - 導師和學生。用戶和Tutor_Details表由id_user外鍵鏈接。Mysql表體系結構建議需要
新要求 - 每個導師可以有以下一些憑據: -
Certified
Experienced
Other
的導師最多可有3個和最小1個憑據了。對於指定的每個憑證,導師也可以添加一些說明。
現在有3個憑證,但稍後可能會有更多。
什麼是存儲憑據信息的最佳方式。可以通過憑證搜索導師。在查看輔導員詳細信息時,應顯示其所有憑據。
我在想下面的結構: -
一個新的證書表喜歡 -
CREATE TABLE IF NOT EXISTS `Credentials` (
`id_credential` int(10) unsigned NOT NULL auto_increment,
`credential` varchar(255) default NULL,
PRIMARY KEY (`id_credential`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
INSERT INTO `Credentials` (`id_credential`, `credential`) VALUES
(1, 'Certified'),
(2, 'Experienced'),
(3, 'Recent Student'),
(4, 'Other');
如果新的證書以後添加,他們在這裏定義。
一新Tutor_credential_map表,該表將包含一個記錄導師
CREATE TABLE IF NOT EXISTS `Tutor_Credential_map` (
`id` int(10) NOT NULL auto_increment,
`id_tutor` int(10) NOT NULL,
`id_credential` int(10) NOT NULL,
`description` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
這使事情變得容易的觀點維修點的每一個憑證,但如果我想獲取所有的教師信息存儲在Tutor_Details表及其所有憑證在一個查詢中我獲得了許多導師的結果集,因爲他們有證書。這個查詢: -
select td.id_tutor, tcrm.* from Tutor_Details as td inner join Users as u on td.id_user = u.id_user join Tutor_Credential_map as tcrm on td.id_tutor = tcrm.id_tutor join Credentials as cr on tcrm.id_credential = cr.id_credential where td.id_tutor = 23
任何想法,以保持單獨的表以及取一個導師細節記錄與所有的憑據信息每位教師?或者,還有更好的方法?
感謝