假设我有一些“导师”,他们提供“在线网络课程”并创建“学习包”。学生可以对“在线网络课程”和“学习包”进行评分,最终一个导师的评分是他的“课程”和“包”上所有评分的简单平均值。
这是我们当前“评分”表的表结构 -
这是我们当前“评分”表的表结构 -
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 ;
目前,班级评分和课程包评分都被输入到同一张表格中(id_wc
和id_lp
被相应地输入 - 对于每个评分记录,一个被输入而另一个为NULL
)。
所以,我的问题是 -
这种架构是否正确,还是最好将class
和pack
评分保持分开?为什么或为什么不?我需要确切相同数量的Rating
表字段用于class
和pack
评分。
我猜,如果要单独找到班级和课程包评分,则单独的表格会减少要查找的记录数。但是,由于我们的情况仅需要导师评分(涉及班级和课程包),因此所有评分都放在一起。