日期:2014-05-18  浏览次数:20448 次

求一个数据库设计方案 分不够再给
环境:
------------------------------------
资料的分类存储,并方便按一定方式读出
分类采用树形方式
一级分类下有若干二级分类
每个二级分类下有若干条资料(可能有很多级,这里只例举两级)
一级分类和二级分类个数都不定     可能随时增减或修改

资料总计预期在2-5百万条
采用SqlServer   2005
------------------------------------

问题:
------------------------------------
现考虑   某些资料   可能同时属于其他二级分类

例如  

一片英文动漫的音频资料(资料X)     可能同时属于   英文   动漫   下载   三个二级分类
而这三个二级分类   可能属于同一个一级分类     也可能属于不同的一级分类

情况就是这样了


现在我的页面可能有

所有二级分类的资料列表
每个资料的展示页面
------------------------------------

要求:
------------------------------------
1:在英文,动漫,下载   三个二级分类的列表页中   都能找到资料X;
2:在资料X的展示页面     有通往英文,动漫,下载   这三个分类列表的链接途径;
------------------------------------

提问目的:
------------------------------------
现求合理的数据库设计方案     能解决上述问题
并给出解决上述两个要求的sql语句(希望不要太慢,尽量可以不用关联查询,尽量可以不用or,尽量可以不用字符串判断做where条件)
1:分类表
2:资料表
------------------------------------


------解决方案--------------------
create table cls (
clsId long identity primary key
clsName varchar(50),
parentId long
)

create table doc(
docId long identity primary key,
docName varchar(50),
...
)

create table docCls(
docId long reference doc(docId),
clsId long reference cls(clsId)
primary key (docId,ClsId)
)


cls
1, TEST , NULL
2, 英文,1
3, 动漫,1
4, 下载, 1

doc
1, 资料X , ...

docCls
1,2
1,3
1,4