Système existant - J'ai des tables Utilisateurs et Tutor_Details dans mon système. - Il existe deux types d'utilisateurs: les tuteurs et les étudiants. Les tables Users et Tutor_Details sont liées par la clé étrangère id_user.Suggestion d'architecture de table Mysql requise
Nouvelle exigence - Chaque tuteur peut avoir quelques-unes des informations d'identification suivantes: -
Certified
Experienced
Other
Un tuteur peut avoir un maximum de 3 et 1 minimum des titres de compétences pour l'instant. Pour chaque accréditation spécifiée, le tuteur peut également ajouter une description.
Actuellement, il y a 3 informations d'identification, mais plus tard, il peut y en avoir plus.
Quelle serait la meilleure façon de stocker les informations d'identification. Les tuteurs peuvent être recherchés par des informations d'identification. Lors de la visualisation des détails d'un tuteur, tous ses identifiants doivent être affichés.
Je pensais à la structure suivante: -
Une nouvelle table de vérification des pouvoirs comme-
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');
Si de nouvelles références sont ajoutées par la suite, ils sont définis ici.
Et une nouvelle table de Tutor_credential_map qui contiendra un enregistrement pour chaque lettres de créance d'un tuteur
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 ;
Cela rend les choses faciles pour le point de vue de l'entretien, mais si je veux aller chercher toutes les informations de Tutor stockées dans Table Tutor_Details avec toutes ses informations d'identification dans une seule requête J'ai autant d'ensembles de résultats pour un tuteur qu'il y a d'informations d'identification. Cette requête: -
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
Toute idée de garder les tables séparées, ainsi que chercher un détail unique tuteur dossier pour chaque tuteur avec toutes les informations de références? Ou y a-t-il un meilleur moyen?
Merci