我遇到了一个我无法以良好的方式解决的问题。我的解决方案需要太多的时间和循环使用灾难性的大内存。所以我需要帮助。
我有3个mysql表。
问题在于。
以下列方式提出问题。相继。问题是我需要以这种方式在php中制作一个shufle funnction,我将以这种方式将每个问题分配给每个组,例如,每个组的第一个问题将是唯一的,并且没有2或3个组将得到同样的问题,同样的第二,第三,......第十个问题。
最佳解决方案是什么?
我应该以某种方式使用mysql函数或php吗?
答案 0 :(得分:1)
解决此问题的最简单方法是为question_id
中的QUESTIONS_GROUPS
列定义唯一约束/索引。这会约束数据,以便该值只能在整个表中出现一次 - 如果用户尝试添加重复的question_id
值,则会收到唯一约束错误。
以下是您需要用于在MySQL中定义约束的语句:
CREATE UNIQUE INDEX question_idx BTREE ON QUESTION_GROUPS(question_id)
如果您需要支持每轮只询问一次的问题,我假设QUESTION_GROUPS.order
列是圆值。假设这是正确的,将order
列添加到唯一约束/索引以确保唯一的值对:
CREATE UNIQUE INDEX question_idx BTREE ON QUESTION_GROUPS(question_id, order)
如果您将group_id
和question_id
列作为表的复合主键,则它将无法满足您的要求,因为它允许question_id
列值重复。
我还要定义QUESTION_GROUPS.group_id
不允许为NULL,否则您可以将问题分配给NULL(不存在)组,并且必须更新现有记录或删除&用有效的组重新创建它。
参考: