四、数据模型之间的转换
以上介绍了表示实体与实体之间联系的三种数据模型,它们反映了实体之间联系的不同特性。但这种反映并不是唯一的、绝对的,也就是说,实体之间存在的客观联系可以用不同的数据模型来反映。或者说,实体之间的联系是确定的(就每一瞬间而言),反映的方法则是多种多样的。同样的实体间联系既可用关系模型描写,也可用层次或网状模型描写,这就说明层次、网状和关系这三种模型之间并不是毫无关系的,而是可以以一定方式互相变换的。如何变换要视具体结构而定,变换方式大体有以下几种。
-
无论什么类型的实体联系都可以用关系模型来表示。在这种变换过程中,原来已格式化的模型(层次或网状)将以指针方式或其他方式把相关各层次上的记录通过基本键相连,从而消除原先父、子记录的区别。
-
对于复杂的网络,即含有联接记录的结构,在变换为关系结构时,
联接记录一般将形成一个独立的联系。
-
网状模型可以变换为层次模型。其一般方法为:将两个(或多个)
双亲共有一个子女的结构变为每个双亲各拥有一个相同的子女的结构,如图
- 所示。显然,这种变换带来了数据冗余。尤其是公有的子女结点属于非公用叶结点时,进行变换会使一种网状结构变为几个层次结构,带来极大的冗余。因此,这种变换只有在数据冗余不太严重的情况下才是可取的。