而且对查询也有利。但其缺点是编码冗长,如果层数多,会使编码比较复杂,在考虑到模块化这一点上,采取这种方案是有益的。下面我们比较分析一下原系统中已经建立的实体表和采用这种严格的从属关系的实体表之间的ER图的,由此看出层次的清晰度的不同: 在上面的例子中可以看出,实际上管路和管道以及管道孔之间是一对多的关系,它们之间是从属关系.即一条管路由多条管道或管道孔组成。从总体上看。管路也是由井所组成,但从逻辑上看,似乎应该把井和管道或管道孔定义为临近的上下两层,在层次上更加清晰。这里的矛盾我想主要出现在编码方案的选取问题,原系统中选择的编码方案中,最底的一层,即井实体层,它的编码实际上由PIPE 和 WELLNUM MUN_HTAP.。成构所段两而没有涉及到中间~层的PIPENUM。 PIPE PATH主键PIPEPATH NUM的编码:AsD,50l: PATH PIPE的士键P』PENUM以及PiPE NUM的编码:ASD,501:l: WELL的主键PIPEPATH NUM以及WELL NUM的编码:ASD,50l;ASD,501,ool。 这样的结果虽然在编码上减少了~些负担,但是我们同样可以看到它带来的问题是实体间的层次不够清晰。
从上述的ER图中也可以发现这一点。 而设想一F如果采取严格意义上的从属关系。并采用分段式的编码方式,我们就可以得到以F的实体表的ER图的: 有了层次清晰的从属关系,在的创建和维护上就能更加规范。4.2.2平行关系以及递归关系的建立 平行关系可以在逻辑看作特殊一类的从属关系,只是它们之间的主键选择一般是一样的。田此在这种关系中父表和子表如何取定,应随客观情况和开发者本人确定,它的维护规则应与从属关系一致。 递归关系在逻辑上实际上是在同~张实体表内建立主外键的对应关系,它一般是通过在实体表中建立一个含义上羊¨主键的某一条属性相同的外键跟同一实体表中的其他元组建立对应的参考关系来实现的。4.2.3标识关系 在本例中 即支撑设备子系统中 ,标识关系实际上是与从属关系同在的,逻辑上的从属关系如果反过来看就是标识关系。 从属关系和标识关系体现了作用和反作用之间的关系,它同时反映了高层实体对底层实体的反依赖关系。从属关系是低层实体对高层实体存在依赖关系,这集中体现在低层实体的编码是由上层实体表的编码来决定的,低层实体的编码是由上层编码加上本层的实体的编码一起构成的。但是在另一方面,高层实体实际上是由低层实体组成的,它能否实际存在也止是依赖于构成它的低层实体是否完备。
所以有必要由底层实体对其进行标识,这种组成关系确定了实体表之间的标识关系,所以说标识关系反映了实体间组成的关系。但是必须主意并非所有的组成关系最终都有标识关系,例如在前述的例子当中,有关电缆子系统,虽然电缆和线对之间是组成关系,而且电缆线对在该子系统中应该属于最底层的实体了,可是在该子系统中却并不存在标识关系。 注意到电缆子系统和支撑子系统中的组成关系是不~样的。电缆和电缆线对的组成关系是一种无序的组成关系,也即一条电缆由多条线对所组成,但这些线对之间可以是没有次序的,这与它们的编码不一样。虽然在编码的选择上可以将线对的编码加以排序,但是住逻辑组成关系上,这种排序并不是电缆所必须的,只是处理编码的一种方案而己。但在支撑子系统中却不是,例如管道和井之间,管道也是由井所组成的,但这种组成关系是有序的,也就是说在一条管道内的井与井之间的排列顺序作为一种信息应该在实体表中得以体现山米。在这里的处理手段一方面是在底层实体 如井 的编码上采取顺序编码的方式,另一方面是采取引入标识关系来定义。即在上层的实体表中加上作为.标识的底层实体的信息,一般是多于两个这样的列,在管道和井这个例子中,即是在管道表中加入了起始_井和终I|井这两列用以标识,这样一来。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-37192-17.html
这个一直很棒
一如既往风格独特