一个多级分类的数据库结构!

qzhl 2012-09-25 10:17:24
方案一:
表1: id,pid,name..... (ID,父id,名称,其他字段)


方案二:
表1:id,name.......(ID,名称,其他字段)
表2:id,pid (id,父id)


通常方案1就可以解决问题,为什么要做方案二的冗余设计?
请问方案二冗余设计的目的和用途是什么?希望能举出明确的例子,谢谢。
...全文
682 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
微wx笑 2014-06-01
  • 打赏
  • 举报
回复
顶起来
qzhl 2012-10-20
  • 打赏
  • 举报
回复
补充,还有个最重要的用途。就是 单独把关系保存在一个表。
可以删除关系,而不用删除节点。这样更加灵活。
zecool20 2012-09-28
  • 打赏
  • 举报
回复
设计范式问题,还有习惯。如果数据量多。还是使用第二种比较合适。
ACMAIN_CHM 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

谢谢。 acmain_chm, 我想应该是有用途的,比如多个表进行链接的时候,占用内存会少一些吧?效率会不会也高一些?

我个人发现几个 国外的开源程序中,父子关系,多数都被单独用一个表来描述,hiller1 说的应该是没问题的,只是能再说的详细些就更好了,感谢。

比如 drupal 的 分类系统,也叫:术语分类。
比如 yii 的一个 srbac 的 权限管理插件,权限被分为:角色……
[/Quote]建议楼主可以举一个实例,比如你的表是什么样,每个表中数据多少,然后查询语句是什么。

这样可以直接比较两种设计方案中实现相同查询结果所对资源的消耗。


qzhl 2012-09-28
  • 打赏
  • 举报
回复
谢谢。 acmain_chm, 我想应该是有用途的,比如多个表进行链接的时候,占用内存会少一些吧?效率会不会也高一些?

我个人发现几个 国外的开源程序中,父子关系,多数都被单独用一个表来描述,hiller1 说的应该是没问题的,只是能再说的详细些就更好了,感谢。

比如 drupal 的 分类系统,也叫:术语分类。
比如 yii 的一个 srbac 的 权限管理插件,权限被分为:角色,任务,操作。3个等级,包含父子关系。
数据结构也是 单独一个表 描述父子关系。
hiller1 2012-09-25
  • 打赏
  • 举报
回复
应该是考虑到了表的第三范式。


qzhl 2012-09-25
  • 打赏
  • 举报
回复
效率问题,对我并不十分关心,数据量不大。

我最关心的是:通过冗余设计,是否能简化逻辑?增加可读性? 或者实现某些特定功能?
qzhl 2012-09-25
  • 打赏
  • 举报
回复
目前我个人认为是如果表1 数据量比较大, 利用表二 进行递归运算的时候,可以减少内存占用,加快速度。
请高手指教。谢谢。
Nonoooo 2012-09-25
  • 打赏
  • 举报
回复
有不同的字段的时候,或是减少归类查询。。 像ERP的物料表就很多数据
ACMAIN_CHM 2012-09-25
  • 打赏
  • 举报
回复
使用方案一就行了。

方案二看不出什么优点。 只是把关系单独放一个表中。 产生的原因很多,比如历史原因,或者个人偏好等等。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧