惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
WordPress大学
WordPress大学
Vercel News
Vercel News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
小众软件
小众软件
L
LangChain Blog
雷峰网
雷峰网
D
DataBreaches.Net
博客园 - 三生石上(FineUI控件)
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
NISL@THU
NISL@THU
Scott Helme
Scott Helme
量子位
S
Security Affairs
T
Threat Research - Cisco Blogs
博客园_首页
云风的 BLOG
云风的 BLOG
D
Docker
AWS News Blog
AWS News Blog
腾讯CDC
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
U
Unit 42
Recent Announcements
Recent Announcements
Apple Machine Learning Research
Apple Machine Learning Research
G
Google Developers Blog
T
The Exploit Database - CXSecurity.com
MongoDB | Blog
MongoDB | Blog
Stack Overflow Blog
Stack Overflow Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 热门话题
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Last Watchdog
The Last Watchdog
C
Cybersecurity and Infrastructure Security Agency CISA
IT之家
IT之家
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
F
Full Disclosure
L
Lohrmann on Cybersecurity
The Hacker News
The Hacker News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Y
Y Combinator Blog
S
Security @ Cisco Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Check Point Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
N
News and Events Feed by Topic
PCI Perspectives
PCI Perspectives
I
InfoQ

博客园 - music000

分享:使用JQuery进行跨域请求 Flash Chart 谨防 url 传递参数未编码(转码)产生的陷阱 OSI七层网络模型与TCP/IP四层网络模型 一些数据库理论知识 Sqlserver中Compute By子句用法分析 数据查询的另类需求 A Preview of HTML 5 CSS Sprites 15 Rules for Faster-Loading Web Sites 金额转换:阿拉伯数字转中文(SQL存储过程) 金额转换:阿拉伯数字转中文(javascript) 这两天不爽——公车上被误认为色狼、游泳撞破上嘴唇 如何获取字段中分隔符的个数?(sql语句) 关于GridView导出Excel的一些问题(采用Ajax出现的的问题及解决方法) - music000 - 博客园 固定表头 Bubble in JavaScript DOM Reg-日期 安装 WebDesigner 之后,ASPNET 帐户没有对 IIS 的访问权。
关于"多级目录(分类)"的一些想法 ----- 实现方法
music000 · 2007-09-16 · via 博客园 - music000

问题是这样的:

    假设我们的网站是一个购物网,现在我们对商品进行分类,分成5个大类:A、B、C、D、E;二级目录分别为 (A:A11、A12、A13)、(B:B11、B12、B13)...;然后三级目录(A1:A211、A212、A213)、(B1:B211、B212、B213)...;然后四级、五级...一直到 n 级(当然,购物网是不可能 n 级的),我只是说这个级数是动态的,你不能预知它的级数,并且分类可能出现变更——比如哪天突然将 A1 更改到 B 、B21 更改到 A1、删除 A2,这些变更我们如何处理?我们的数据如何存放?

   我还是说说处理方式吧:数据我们通常是放在数据库中的,依据上面的需求,数据库的分类表的表数据可能如下:
  
表1、                                                                                     

self_id

Parent_id

A

0

B

0

...

A11

A

A12

A

B11

B

B12

B

A211

A1

A212

A1

B211

B11

B212

B11

 在这种表结构中,如果需要找某个类相应级数的子类,我们只需要递规找出相应级数的子类即可。

表2、

self_id

Parent_id

A

0

B

0

...

A11

A

A12

A

B11

B

B12

B

A211

A/A11

A212

A/A11

B211

B/B11

B212

B/B11

这种表结构呢,如果要查找每级的相应子类及某个类的所有子类,就不用那么复杂了,直接查就可以了。

对比以上两种表结构,我们可以看出,
  表1:插入、更新方便、删除方便,但查询就不那么方便了;
  表2:查询比较方便,但插入就不那么方便了,尤其是更新、删除;

所以,在项目中,我们最好更根据自己的实际需求来选择相应的表结构。
然而,除了以上两种表结构,我们有没有更好的方式来处理这种层次性目录(分类)?我想到的只有xml了。这就是第三种数据形式了:
3、
 <self_id id="A">
  <child_id id="A1">
   <child_id id="A211"></child_id>
  </child_id>
 </self_id>
 在我看来,xml形式的数据很好的解决了以上两种实现方式的弊端,无论是对于查询,还是更新、删除,我们只需要对节点进行操作即可。

以上只是个人在项目中的一些想法(会不会有点纸上谈兵呢?),有什么不当的地方希望大家指出,同时,如果您有好的解决方法,也希望您告知。