gpt4 book ai didi

Mysql——一道简单的数据库设计题

转载 作者:可可西里 更新时间:2023-11-01 07:07:30 24 4
gpt4 key购买 nike

假设我有导师参加在线网络类(class)并创建学习包在线网络类(class)学习包都可以由学生进行评分,最后导师的评分是所有类(class)的简单平均数他的类(class)的评分。

这是我们当前的 Ratings 表的表架构 -

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_wcid_lp 相应地输入 - 一个被输入,另一个是 NULL 用于每条评级记录)。

所以,我的问题是 -
这种架构是正确的还是将 classpack 评级分开更好?为什么或者为什么不?对于 classpack 评级,我需要完全相同数量的 Rating 表字段。

我想,如果要分别查找类别和包装评级,那么单独的表格会减少要查找的记录数。但是,由于在我们的案例中只需要导师评分(涉及类(class)和小组),这就是将所有评分放在一起的原因。

最佳答案

更详细的模型。

  • 大学的老师也可以上课。
  • 一个类(class)可能有不止一位老师。
  • 同一主题可能有几门类(class),由不同的老师教授。
  • 只有参加类(class)的学生才能对类(class)进行投票(评分)。
  • 学习包是关于某个主题(数学、生物)的。
  • 一个学习包可以有多个作者。
  • 从技术上讲,学生也可以编写学习包。
  • 只有使用学习包的成员(member)才能对学习包进行评分。
  • 虽然作者可以为包投票,教师可以为他们的类(class)投票,但这些投票将被忽略。

alt text

如果只对评分表感兴趣,您可以使用:

alt text

或者,将两个模型组合成如下内容:

alt text

关于Mysql——一道简单的数据库设计题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3845173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com