开展一些基于网络的教育项目。为这个项目创建问答系统。我无法弄清楚存在一些逻辑上的困难:
用户之间有老师和学生。每个学生在注册期间选择一些课程。
我有5个表:users
,courses
,lessons
,questions
,answers
。
可能有两种类型的问题:
User
基于。例如,当教师想要向特定用户发送问题时,反之亦然(用户也可以向教师发送问题)。
Course-lesson
组合。例如,教师希望根据课程向所有课程听众发布问题,他们目前在课堂上。
我创建了questions from-to
(qft)表
CREATE TABLE `questions from-to` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`qid` int(11) unsigned NOT NULL,
`from_uid` int(11) unsigned NOT NULL,
`to_uid` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `qft.from_uid_users.id` (`from_uid`),
KEY `qft.to_uid_users.id` (`to_uid`),
KEY `qft.qid_qe.id` (`qid`),
CONSTRAINT `qft.from_uid_users.id` FOREIGN KEY (`from_uid`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `qft.qid_qe.id` FOREIGN KEY (`qid`) REFERENCES `questions_and_exercises` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `qft.to_uid_users.id` FOREIGN KEY (`to_uid`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
看起来像那样
qid
- 是问题ID,将此表与基于questions
的表格相关联
在id
from_uid
- 来自用户ID(问题发件人ID),将此表格与基于users
的表格相关联
在id
to_uid
- 对于用户ID(问题接收者ID),将此表与users
连接起来
在id
所以我试图为两者创建一些通用的解决方案:
学生和老师,以便他们可以向对方发布问题。的确定
老师可以向某些用户发布具体问题。的确定
但是有问题
如果,老师想要为所有课程听众发布问题怎么办?我已经有user-course
关系表,但是,目前我需要将一个一个用户ID添加到questions from-to
表中,以便他们可以收到问题。我不知道,如何针对这两种情况设计此表:基于course-lesson
组合的“群体质询”和“用户 - 用户”类型的问题发布(教师向特定学生发送问题,反之亦然)
有什么建议吗?
答案 0 :(得分:1)
一种可能性是在to_uid
中有一个特殊代码,您的应用程序可以将其解释为“向所有用户显示”。当遇到to_uid
-1(或您选择的任何内容)时,它会对所有听过该课程的学生进行选择,并显示问题,就好像他们的ID都已在{{1}中单独列出一样}。根据应用程序的组织方式,您只需在少数几个位置执行此特殊检查。
答案 1 :(得分:0)
有点类似于此处描述的问题。看看建议的解决方案。