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