最近学习数据库课程,看到数据库模型的发展历史,从最初的层次模型,到网状模型,之后发展出了关系模型,虽然现在前两种模型就都被淘汰了,但在关系模型之前,层次模型数据库和网状模型数据库曾经得到非常广泛的应用。
关系模型是用表的形式组织数据。
层次模型是用树的形式组织数据,它需要满足的条件是
- 有且仅有一个结点没有双亲结点,这个结点称为根结点
- 根以外的其他结点有且只有一个双亲结点
网状模型是用图的形式组织数据,它需要满足的条件是
- 允许一个以上的结点无双亲
- 一个结点可以有多个双亲
百度百科中有一句对网状模型描述是:网状模型取消了层次模型的不能表示非数状结构的限制,两个或两个以上的结点都可以有多个双亲结点,则此时有向树变成了有向图,该有向图描述了网状模型。这不禁让我想到了现在知识图谱领域用到的重要数据库类型——图数据库。图数据库也是用有向图来描述数据模型,但图数据库是这几年才新发展起来的技术,而网状模型则早已被淘汰,难道说图数据库只是网状模型改了个名字就来标榜自己是新技术?
之后我去网上搜索,图数据库和网状模型数据库的区别,找到了stackoverflow上的一个回答说的非常好,链接如下:nosql - What is the difference between a Graph Database and a Network Database? - Stack Overflow
将点赞最高的回答翻译成中文,如下:
网状模型数据库或多或少仍然采用了层次模型的思想,从父子关系的角度出发思考结点之间的关系。这就意味着在网状模型数据库中无法在结点之间随意建立关系,导致面向图数据的数据集工作起来很困难。
同时,网状模型数据库对于结点的属性需要提前定义好,而图数据库使用更加灵活的属性图模型,允许随意向结点和边添加属性。