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

    技术2024-12-17  9

    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)