首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类别和子类别的数据库结构

类别和子类别的数据库结构
EN

Stack Overflow用户
提问于 2012-04-25 06:12:13
回答 5查看 3.1K关注 0票数 1

我有点困惑,什么是最好的解决方案,类别数据库结构。在这里,我有下面的猫狗名单。

  1. 新闻

1.1一般新闻

1.2娱乐新闻

1.3体育新闻

  • 太空镜

2.1每日占星术

2.1.1白羊座2.1.2金牛座2.1.3双子座2.1.12双鱼座

2.2“周星观”

2.2.1白羊座2.2.2金牛座2.2.3双子座2.2.12 Pisces

  • Jokes

这是我现在的分类名单。在这里,我必须建立管理面板,其中类别和子类别可以添加。目前,我有两个子类的天宫镜。在未来,可以增加更多的子类别,比如每月和每年的占星术。另一个困惑是,每日和每周占星术有相同的子类别,这意味着单一的子类别有多个父类。在这里,如何消除数据库表中的重复。并且我需要使用递归函数在树结构中显示类别。我谷歌的解决方案,我找不到合适的答案。请提供给我答案或链接与此相关。我正在php和MS-服务器数据库中编码.

EN

回答 5

Stack Overflow用户

发布于 2012-04-25 06:40:34

如何尝试这样的方法,有一个类别表,其中有以下字段,id,parent_id和title,然后每个类别都有一个parent_id或0作为顶级类别。

如果您想让标题成为另一个包含id和title的表,那么您可以在分类表上引用标题表中的适当标题。

想想看,它将遵循如下规则集,这正是您要寻找的内容:

  • 每个类别与零或多个类别相关联。
  • 每个类别与一个标题相关联。
  • 每个标题与一个或多个类别相关联。

至于递归表示它,这是相当容易的方式。希望这能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2012-04-25 06:52:02

下面是一篇关于sql 2005中使用公共表表达式的递归查询的文章。

http://www.sqlservercentral.com/articles/T-SQL/recursivequeriesinsql1999andsqlserver2005/1846/

我建议你注册他们的通讯,新的东西几乎每天都会派上用场。

票数 1
EN

Stack Overflow用户

发布于 2012-04-25 07:47:17

这是几年前我写的一些丑陋的代码..。但这可能对你有帮助

DB表"table_name“结构

代码语言:javascript
复制
ID  PARENT  NAME
1     0      1
2     0      2
3     1      1.1
4     1      1.2
5     4      1.2.1
6     4      1.2.2
7     2      2.1

获取和准备数据

代码语言:javascript
复制
$Select = mysql_query("SELECT * FROM table_name");
while($Row = mysql_fetch_assoc($Select)){
  if($Row['parent'] == 0){
    $Arr[$Row['id']] = $Row['name'];
  }else{
    $Childs[$Row['parent']][$Row['id']] = $Row['name'];
  }
}

一些愚蠢但充分的函数

代码语言:javascript
复制
function gettree($Array){
  global $Childs;
  foreach($Array as $key => $value){
    echo '<li>'.$value.'</li>';
    if(isset($Childs[$key])){
      echo '<li><ul>';
      gettree($Childs[$key]);
      echo '</ul></li>';
    }
  }
}

和胀树到html。

代码语言:javascript
复制
echo '<ul>';
gettree($Arr);
echo '</ul>';

结果应该是这样的

代码语言:javascript
复制
1
 1.1
 1.2
  1.2.1
  1.2.2
2
 2.1

我建议您将其重写到对象中,以便更好地使用。

对不起我的英语

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10310249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档