2

我有表问题(带有 php 的 mysql),其中包含问题、类别(多个)和 subcat(多个)它属于。为了简化,同时保存每个问题,我用逗号分隔保存了类别,如下所示

qid    question      catid    subcat
2     question1        2,3,4   5,7

像这样我现在在数据库中有 1000 个问题

在进行多面搜索时,我想过滤掉每个类别及其相应的子目录,例如下面的树格式

 cat1(5)
   subcat1(3)
   .........
 cat2(24)
 ..........

为此,我刚刚实现了in_array ,同时为该问题表的每个循环中的每个问题搜索特定的猫。页面现在变慢了。以及文本搜索。

这是真的好主意还是建议我一些正确的方法。

我是否想要单独的类别表?

谢谢,戈壁

4

2 回答 2

1

是的,正确的做法是为类别和子类别分别设置表格:

Table Category
--------------
qid   cat-id


Table Sub_category
------------------
qid   sub_cat_id

这样你的问题表就减少到:

Table Question
---------------
id    Question
于 2010-08-25T06:21:30.507 回答
0

将关系信息存储在单独的表中的正确方法。所以,你可能会发现这个结构很有用:

question表,包含问题信息:

CREATE TABLE `question` (`id` int, `question` text);

包含类别信息的表:

CREATE TABLE `category` (`id` int, `parent_id` int, `category` tinytext);

表,包含关系:

CREATE TABLE `question_category` (`question_id` int, `category_id` int);

使用这种结构,您将拥有大的类别深度和大的关系数量。

于 2013-07-31T11:41:40.547 回答