关于我的想法的几句话
从事一些基于网络的教育项目。为这个项目创建问答系统。有一些我无法弄清楚的逻辑困难:
用户之间有老师和学生。每个学生在注册时都会选择一些课程。
我有 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
组合的“大规模提问”和“用户-用户”类型的问题发布(教师向特定学生发送问题,反之亦然)
有什么建议么?