购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 逻辑数据模型的分类

逻辑数据模型是在概念数据模型的基础上对数据的第二层抽象。层次数据模型(Hierarchical Data Model)、网状数据模型(Network Data Model)、关系数据模型(Relational Data Model)是成熟的逻辑数据模型。其他逻辑数据模型,如键值模型、列族模型、文档模型和图形模型等逻辑数据模型处于快速发展阶段。概念数据模型中的实体、属性、联系在不同的逻辑数据模型中的处理方法是不同的。

1.5.1 层次数据模型

层次数据模型是用树结构定义实体及实体之间的联系的,是最早商业化应用的数据模型。层次数据模型中的结点代表数据,结点之间的连线代表不同数据之间的联系。顶层的结点只有后继,没有直接前驱,称其为根结点。除根结点以外的各结点有且只有一个唯一的位于其上一层的直接前驱,称其为双亲结点,可以有零个、一个或多个位于其下一层的直接后继,称其为子女结点。最下层的结点只有双亲结点,没有子女结点。例如,学校的院系设置中,一个学校有多个学院,一个学院有多个系,同时每个学院都只隶属于该学校,每个系也只隶属于一个学院,即学校与学院之间是一对多的联系,学院和系之间也是一对多的联系。其层次数据模型示例如图1-31所示。

层次数据模型适合表示一对一、一对多的联系。由于层次数据模型表示多对多联系时的表达能力有缺陷,需要引入冗余结点,所以后来被网状数据模型取代。

1.5.2 网状数据模型

网状数据模型是基于网状数据结构的一种逻辑数据模型。在网状数据模型中,允许有一个以上的无双亲结点,也允许一个结点可以有多于一个的双亲结点。这种多对多的联系破坏了双亲结点与子女结点之间的层次关系,因此在网状数据模型中需要为每个联系命名,并需要指出与该联系有关的结点。例如,学生持校园卡在商户消费,一张卡可以在多个商户消费,一个商户可以接受不同的校园卡,校园卡和商户之间是多对多的联系,该数据模型的网状数据模型示例如图1-32所示。

图1-31 层次数据模型示例

图1-32 网状数据模型示例

网状数据模型可以表示一对一、一对多、多对多的联系,与层次数据模型相比具有更大的灵活性和更强的数据建模能力。但是网状数据结构的存储复杂性和数据处理的复杂性高,所以逐渐被关系数据模型取代。

1.5.3 关系数据模型

关系数据模型用二维表格作为数据结构,表示实体及实体之间的联系,并把二维表格命名为关系。例如,校园卡和商户之间的多对多联系可以表示为如表1-3所示的关系,关系名为“消费清单”,包含五个属性(列),分别是流水号、卡号、商户编号、消费金额、消费时间;属性的数据类型和长度依次是auto_increment、CHAR (6)、CHAR (4)、DECIMAL(10, 2)和DATE;记录了10笔消费。关系建立后先记录了第一笔消费,即关系的第一行表示C00001校园卡在B001商户进行了一笔消费;接着记录第二笔消费,即第二行表示C00002校园卡在B002商户进行了一笔消费;第三行表示C00001校园卡在B002商户进行了一笔消费。此时不难发现,C00001校园卡在B001、B002商户都有过消费记录,即一个校园卡与多个商户发生联系。我们插入第四行,表示C00002校园卡在B001商户进行了一笔消费,这时一个商户对应多张校园卡的联系也表示出来了。可见,关系数据模型用简单的线性数据结构表示了校园卡与商户之间多对多的联系。

表1-3 消费清单 8z9vRAeAqgWPflbaK4nkO/cdUjswYVf4Kbk+U5z1B2aoLObzmtF6Gsz6cjimk8HL

点击中间区域
呼出菜单
上一章
目录
下一章
×