数据库的理论和实践问题----好像不得不设计了一个《不是关系型的表:((100分)

  • 主题发起人 主题发起人 千中元
  • 开始时间 开始时间

千中元

Unregistered / Unconfirmed
GUEST, unregistred user!
本来以为昨天已经攻克难关,以后可以过上边喝茶边聊天边写代码的幸福生活了。
谁知。。今天看了看目前项目的数据库表结构,大吃易经,好像不是按照关系型
设计的。
比如VOD节目类型表中的数据是这样的:

节目类型ID 节目类型名称 节目类型父ID
123 MTV 0
2342 歌曲 1
2334 革命歌曲 2
23456 江大为所有革命歌曲 3
23459 三毛所有革命歌曲 3
。。。。。。。。。。。。。 4 等
然后,要求在树中出现:
MTV(父类id为0的) ______革命歌曲(父类型id为2)
|_____________歌曲(父类型id为1)----|
|____影片(父类型id为1) ------资本注意歌曲
这样设计出来的数据库好像和以前的树型结构(关系型之前的是什么结构?记不清名字了,好像叫做树形)相同阿。如果拆分成多个关系表,
做出来这个树形比较简单,而且也可以和DataSet控件直接连起来,达到与其他
的数据感知控件共享DataSet的目的。
但是,一句“要让客户能够随意的增加分类的深度”,也就是要
能够随心所欲的增加父类型ID的数目4,5,6,增加这个树的纵深把我难住了。
而且我感到这样的表是一个早已经淘汰的结构。
唉,唉,作出来3层,4层,5层,如果给出的是几个关系表,而且这个层数固定,
都没问题啊。现在一天只喝了一小杯白开水,现在知道为啥大家不愿意做数据库
项目了
 
唉,我也遇到过这样的项目,有苦难言呀。不过前几天看到了一个贴子,好像说
圆满的解决了这个问题,(我没有仔细看)。
好像是 张丽敏 题的。
 
呵呵,代码可能烦点,不过从数据库角度说,设计思路不错啊,呵呵……
 
现在还有些老虾是喜欢树型DB的。
我 以前有个老板特喜欢。老叫我做这种。西西。就抛弃了他。。。
 
以前做过,是做5层以下的(是由于这个足够了)。具体的由用户自己确定多少层。
不过现在忘了那个算法。让我找找看。
 
刃血:如果客户定好多少层就好作了。
不过现在这个问题差不多高定,改写了李维以前的一个控件。
 
怎么做的啊,能告诉我们吗? shizhong-deng@21cn.com

实际上老千啊,你的问题就好象一个BOM问题或是一个财务中的科目问题了,一个表就可以搞定的。
 
djdsz,问谁?
 
TO 老千坛主

问你啊
 
》实际上老千啊,你的问题就好象一个BOM问题或是一个财务中的科目问题了
》,一个表就可以搞定的。
-----现在你的是一个表还是关系表?客户固定层数了么?
李维的delphi3从入门道精通的那个dbtree控件自己再在d5下写一遍,就课业..可以解决
一个表的问题。
1stClass对付关系表很舒服,前提是你已经定好有多少层
 
一个表就可以的,客户没有固定层数的,这应该是更一般的情况

表结构:
Create Table TestTB
(
Parent varchar2(20) not null,
Child varchar2(20) not null,
Primary key(Parent,Child)
);

如果是第一级时,Parent=Child

你觉得可行吗?在后台通过递归展开数据,前台就很容易构建出一棵树了。

一般在通过BOM建树时,大虾们都用什么算法啊?
 
同意djdsz;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
609
import
I
I
回复
0
查看
738
import
I
后退
顶部