qingrun及各位高手:关系模型如何表达unix文件系统的结构关系?

l_cheng 2001-11-08 09:29:29
unix文件系统实际上是一个网状模型,一个文件可以被多个目录包含,而一个目录也可以属于多个目录,如果我想以关系模型表达,如何定义表和字段。并且检索时能有较好的效率
...全文
90 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
l_cheng 2001-11-10
谢谢各位,我们将使用xml解决这个问题
回复
jackyz 2001-11-08
我在其他项目中有做过类似的,这里把方案提出来,有更好方案的,请不吝赐教。

节点表,每一个条目都是一个“节点”
table iNode(
iNode_ID, --节点ID
iNode_Name, --名称
iNode_Type, --类型,比如:目录,文件等。
iNode__CreateDate, --创建时间
iNode__ModifyDate, --更新时间
... --其他
)

节点关系表,每一个“节点”都需要一个(或一个以上的)“父节点”
table iNode_Relation(
iNode_ID, --节点ID
iNode_PID, --父节点ID
... --其他
)

对两个表的操作严格应用“规则”,应该可以实现你的要求(树+链接)。
优点:能够实现高度复杂的层次结构,可以无级扩展。
缺点:对这样的结构进行检索需要进行“递归”,效率可能不高。如果用“数据cache”效率可以得到补救。
回复
青润 2001-11-08
这个可能比较麻烦一些,我需要仔细想一想。
回复
l_cheng 2001-11-08
实际上这个设计用网状结构表达最好,我可以用文件系统的原理实现,将管理信息放入文件中,将数据放入数据库;但现在要求用rdbms进行管理,既用数据库保存数据信息,也保存管理信息,但用关系结构来表达网状结构不仅复杂,而且效率低,仁兄可有好建议!
回复
l_cheng 2001-11-08
是一个需要实现类似结构系统,由于保密的原因,不方便写出来,所以用文件系统的例子代替。
回复
青润 2001-11-08
你是不是想按照unix的文件系统模型建立一个数据库结构能够实现这种效果?
回复
SE1 2001-11-08
to(l_cheng):
这样改进一下是否更好?
节点表,每一个条目都是一个“节点”
table iNode(
iNode_ID, --节点ID,主键
iNode_Name, --名称
iNode_Type, --类型,比如:目录,文件等。
iNode__CreateDate, --创建时间
iNode__ModifyDate, --更新时间
... --其他
)

节点关系表,每一个“节点”都可与零个或多个“节点”发生关系
table iNode_Relation(
iNode_ID, --节点ID,主键,外键 -〉iNode_ID
iNode_OID, --其他节点ID,主键,外键 -〉iNode_ID
iNode_RelationType, -- iNode_ID与iNode_OID的关系,如“父”或“子”,可以定义其值域
)

两个表,两个外键!
回复
l_cheng 2001-11-08
to(jackyz):
目前,我们的设计与你相同,但效率仍是问题。结构如下:

节点表,每一个条目都是一个“节点”
table iNode(
iNode_ID, --节点ID
iNode_Name, --名称
iNode_Type, --类型,比如:目录,文件等。
iNode__CreateDate, --创建时间
iNode__ModifyDate, --更新时间
... --其他
)

节点父关系表,每一个“节点”都需要零个或多个“父节点”,该表支持向上查找
table iNode_Relation(
iNode_ID, --节点ID
iNode_PID, --父节点ID
... --其他
)

节点子关系表,每一个“节点”都有零个或多个的“子节点”,该表支持向下查找
table iNode_Relation(
iNode_ID, --节点ID
iNode_CID, --子节点ID
... --其他
)

回复
相关推荐
发帖
研发管理
创建于2007-08-27

1221

社区成员

软件工程/管理 管理版
申请成为版主
帖子事件
创建了帖子
2001-11-08 09:29
社区公告
暂无公告