Supongamos que tengo Tutors
que toman online webclasses
y crean learning packs
. Tanto online webclasses
y learning packs
se pueden clasificar por students
y finalmente una calificación de tutor's
es el promedio simple de todas las calificaciones en su classes
y packs
.Mysql - Una pregunta simple de diseño de base de datos
Esta es la arquitectura mesa de nuestra actual Ratings
mesa -
CREATE TABLE IF NOT EXISTS `Ratings` (
`id_rating` int(10) unsigned NOT NULL auto_increment,
`id_teacher` int(10) unsigned default NULL COMMENT 'the teacher who created the class/pack',
`id_lp` int(10) unsigned default NULL COMMENT 'the id of the learning pack',
`id_wc` int(10) NOT NULL default '0' COMMENT 'the id of the webclass',
`id_user` int(10) unsigned NOT NULL default '0' COMMENT 'the user who has rated',
`rate` int(10) unsigned NOT NULL default '0',
`cdate` timestamp NOT NULL default CURRENT_TIMESTAMP,
`udate` timestamp NULL default NULL,
PRIMARY KEY (`id_rating`),
KEY `Ratings_FKIndex1` (`id_user`),
KEY `id_lp` (`id_lp`),
KEY `id_wc` (`id_wc`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
la actualidad, tanto la clase y embalar calificaciones se introducen en la misma mesa (id_wc
y id_lp
se introducen en consecuencia - uno se introduce y el otro es NULL
para cada registro de calificación).
lo tanto, mi pregunta es -
¿Es esta arquitectura correcta o es mejor mantener class
y pack
clasificaciones separadas? ¿Por qué o por qué no? Necesito exactamente el mismo número de campos de tabla Rating
para class
y pack
calificación.
Supongo que, si las clasificaciones de clases y paquetes se encuentran por separado, entonces las tablas separadas reducirían la cantidad de registros que se buscarán. Pero, dado que en nuestro caso solo se necesitan calificaciones del tutor (involucra tanto a la clase como a los paquetes), es por eso que todas las calificaciones se combinan.
Use el banco de trabajo mySQL incluso lo hacen los desarrolladores de mysql. –