生成唯一的数组值

时间:2010-07-17 22:51:01

标签: php mysql arrays multidimensional-array

我遇到了一个我无法以良好的方式解决的问题。我的解决方案需要太多的时间和循环使用灾难性的大内存。所以我需要帮助。

我有3个mysql表。

Gorups

  • GROUP_ID
  • 组名

游戏

  • game_id
  • GAME_NAME

问题

  • question_id
  • game_id
  • question_name
  • QUESTION_TEXT

question_groups

  • question_id
  • GROUP_ID
  • 顺序

问题在于。

以下列方式提出问题。相继。问题是我需要以这种方式在php中制作一个shufle funnction,我将以这种方式将每个问题分配给每个组,例如,每个组的第一个问题将是唯一的,并且没有2或3个组将得到同样的问题,同样的第二,第三,......第十个问题。

最佳解决方案是什么?

我应该以某种方式使用mysql函数或php吗?

1 个答案:

答案 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_idquestion_id列作为表的复合主键,则它将无法满足您的要求,因为它允许question_id列值重复。

我还要定义QUESTION_GROUPS.group_id不允许为NULL,否则您可以将问题分配给NULL(不存在)组,并且必须更新现有记录或删除&用有效的组重新创建它。

参考: