2010-08-25 77 views
2

我有表问题(mysql与php)它包含问题,类别(多个)和子类(多个)它属于。为了简化,同时节省每一个问题我救分离如下php分面搜索

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

这样在逗号类别,我有问题的1000,现在在DB

而与面搜索未来我想筛选出每个类别及以下

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

对于这种像树格式及其相应SUBCAT我只是实现in_array同时寻找部分针对每个问题的每个问题在每个问题的特定问题针对该问题表。该页面现在变得缓慢。还有文字搜索。

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

我是否想单独分类表?

Thanxs, 戈壁

回答

1

是这样做的正确方法是有两个类别和子类别成为独立的表:

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


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

这样你的问题表简化为:

Table Question 
--------------- 
id Question 
+0

哦thanxs让看看别人是什么建议 – Nithish 2010-08-25 06:27:58

+1

我不认为你会得到许多不同的答案,这是标准的数据库规范化:http://en.wikipedia.org/wiki/Database_normalization – 2010-08-25 06:32:06

+0

是的,谢谢@codaddict丹尼斯会按照你的指导去做 – Nithish 2010-08-25 06:35:12

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); 

有了这个结构,你会有很大的类别深度和大关系号码容易。