文档型数据库和关系型数据库的相似和区别[转]

Notes和Access的相似和区别  

我看到大家有些都从关系型数据库中转入Notes,或有些要通过关系型数据库读Notes中的数据。  
(Notes的结构非常象Access数据库,所以我以Access数据库为例介绍):  
类似:  
(1)Notes是一个文档型数据库,它的数据是以文档的形式存放的。Access是一个关系型数据库,它的数据是以记录的形式存放。  
(2)我们已经知道在每一个文档中有很多域组成,相同结构的文档,它用的是同一张表单。在Access中有很多记录,相同数量和类型的字段组成了Access中的表。说得通俗一些,同一张表单中的域的数量是相同的,不同表单的域的数量是不同的。就相当于在Access中同一张表的字段数量和类型是相同的,但不同表之间的字段数量和类型是不同的。  
(3)表单中的域相当于Access中的字段。数据库的文档相当于Access中的记录。  

区别:  
(1)我们在Notes中通过视图查看文档,只是看到视图中显示了文档的部分域,但不表示文档中的其它域不存在或丢失了这个道理,只是文档的一种显示方法,这和Access不同,Access将所有的字段都显示不来。但Notes只是显示你需要的一些字段,其它的域仍然在文档中,只是你暂时不需要用到这些域!  
(2)我们知道在Access中我们建了多少字段就是多少不会多也不会少,但在Notes是不一样的。在一张表单保存后系统会自动添加一些系统域,这些域是每个表单都会存在的,可以说有些是便于查询工作的:比如Form,这个域用来区别是那一张表单还有些其它的系统域,有“$”开头的一些。除了一些能直接看到的系统域以外,还有一些隐藏的内容,比如文档的唯一标识,这是每个文档必须有的,如果你知道这个文档的标识符,你就能找到这个文档,就象我们每个人的身份证一样,用来区别不同的文档,这是系统自动产生的,不会重复。如果你用公式可以看出这个文档的标识符是什么:@Text(@DocumentUniqueID)。还有文档是否要保存的域:Saveoptions,我相信这个域对大家非常有用,我会在以下介绍的表单中进行详细说明!  
(3)在Access中输入数据后直接关闭,系统能够自动保存,但在Notes中是不可以的,你输入数据关闭时系统会提示你是否保存新文档。如果你按不,那你所建立的数据将会全部丢失!  
(4)在notes中我们可以建立多个视图进行查看数据,可Access不可以。  
(5)Access缺省是查看所有字段。但Notes缺省是个(无标题)视图,我们习惯把它称为($All)视图,它是不可以进行删除的。它的缺省列为在在视图中的编号。  
(6)在域中只有对域的类型进行规定,没有规定长度(除域是数字类型以外)。在Access中对各种域的类型长度进行明确规定。  

除此之外Notes主要解决的是人与人、人与企业、企业与企业之间的协调作用。我觉得它最大的好处在于上手比较快,开发项目OA项目经验丰富,在B/S上的界面漂亮,能管理比较大型的企业,WorkFlow、Doc等的开发更使它有了特色,成为我们现今开发的一个重点,对于开发速度快更是多数企业所看中的。而关系型数据库我觉得它比较实用,功能强劲,开发起来不象Notes数据库经常会发生这样那样的错误,更能按自己的想法,随意变换开发领域,比如听音乐的小插件……。应该说各有各的好处,看自己的兴趣而定,没有根本的好与不好的分别!

 

 

谢斑竹了,以前也做过比较,可惜没有这么详细写下来。
帮助补几条——
*   关系和链接
    关系型数据库中有关系,在表和表之间可以建立对应的关系,甚至可以保证表之间的强制一致性关联。保证不会有垃圾的记录。
    NOTES中文档与文档之间可以通过链接来表示。但是只是松散的链接,如果链接端的文档被删除,只能出错。

*   视图/索引的
    相同点:Notes中的视图来建立文档的索引,关系型数据库中其实也有View用于建立记录的索引,Access里没有View,不过有Query。它们都用来展现具体的文档/记录,NOTES可以通过视图来删除文档就象在某些Query中删除记录一样。
    不同点:因为没有关系的概念,NOTES中的视图索引,建立的是一份文档,Query则可以针对多表来建立(这点与斑竹意见不一,呵)。并且Notes的索引无法直接用于修改文档(R6里面可以,不过还是要写程序)。

*   表单
    表单只是一张纸,用来填写数据(数据包括Access中的记录和Notes中的文档)的工具或窗口,说它是一张纸针对Notes来讲更贴切。因为一方面可以做规定好栏目的表格,用来填写规定的字段(Notes和Access相同);在Notes表单这张纸上还可以“乱涂乱画”(用RTF域),Access中其实也可以做一些乱涂乱画的事情了,不过要另外拿一张纸(用MEMO域嵌OLE对象)。
    Notes因为要支持冲突的问题,所以即使是表单,也要保存;而Access的表单中可以有DataSource,这样在添加记录内容后可以自动保存,其实如果DataSource为空,一样要通过程序去Save。

*   记录/文档
    虽然可以在表单中规定域类型,但是这只是这张纸上的规定,其实Notes下的文档中的域类型是可以随意变换的(同时也是随意增删的),并且Notes文档中的域支持多值,这个与Access大不相同。所以在编写程序的时候,一定要有出错处理,HasItem,IsNumeric等函数的应用会比Access大得多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值