数据库数据模型
在去年学习数据库原理的时候,就听老师讲过数据模型,层次模型、网状模型、关系模型,这样一些数据模型,当时不懂数据结构,所以哪怕当时老师讲的再清楚,过后没多久也就都忘记了。
恰巧今天在看一本书的时候,看到了这么一句话:“在关系模型中,可以使用高级的程序语言,如SQL,使得开发者能够在较高的层次上进行开发。很少的SQL语句就可以完成数千行C代码才能完成的工作,或者是数百行网状模型或层次模型才能完成的数据访问工作。”然后对,文章中提到的两种模型感兴趣了,就搜集资料学习了一下。
层次模型
用一颗“有向树”的数据结构来表示各类实体及实体间的联系,树中每一个节点代表一个记录类型,树状结构表示实体型间的联系。
这是来自百度的解释。字面意思,很容易理解,层次模型就是一颗树,用树枝来标示关系,用叶或枝干标示数据。从程序人的角度看,结构非常的简单,数据的查询操作就是树的查询操作,模型的结构通过结点的双亲就能推出。复杂或者说影响大的是插入删除操作,在大量的数据请求中,效率很低,另外对于多对多关系和多对一关系不好描述。
网状模型
一个事物和另外的几个都有联系,这样构成一张网状图。
看到这个描述,我最先想到的就是现在正处于风口的区块链技术,虽然一个是基于网状网络,而另一个是数据实体间的网状模型,但是两种构成基础相同:基于数据结构中的图,更加容易的描述出不同实体之间的非层次关系,例如多对一关系和多对多关系。
但是基于图创建的P2P网状网络,或是流行的区块链技术,或是数据的网状模型,都在本身有一个弊端:结构的复杂性。这种复杂性导致了网状结构的复杂性,不易实现。
关系模型
前面说了这么多,我也只是为了给关系模型做铺垫而已(偷乐)。
关系模型通过一个关系的二维表给出描述。表,一种按照顺序排列的数据集合,在这个结构里面,每个表表示一个实体,实体之间的关系,通过表之间的关系或者关联表给出,相较于层次结构有了极大的优化。
在关系模型中,关系模式=关系名+属性集合的组合。关系的元组之间具有无序性,可以通过某一个“属性”来标识顺序关系,同样的,关系数据库的数据搜索就成了一个可以加深研究的方面。
关系并不是静态的,在关系模型里面,关系模式是静态的,但是关系是动态的,通过操作不断的更新数据库,这也就为开发维护带来了极大的方便。
半结构化模型
除去关系模型在当今数据库系统中大范围应用外,还有一种独特的关系模型:半结构化数据模型。
这种模型,我了解到的就是XML和HTML这两种文档使用,具体结构的详细信息我会在单独了解后再整理。