层次模型和网状模型
层次模型的缺点
重要程度:8 分
<div>
<h2>层次模型的缺点</h2>
<ul>
<li><strong>数据冗余:</strong> 在层次模型中,由于数据之间存在严格的父子关系,相同的数据可能在多个地方重复存储,导致数据冗余。</li>
<li><strong>数据独立性差:</strong> 层次模型中的数据结构一旦确定,很难进行修改。如果需要改变数据之间的联系,可能会涉及到多个节点的修改。</li>
<li><strong>查询效率低:</strong> 由于层次模型的数据访问必须按照特定的路径进行,因此对于复杂的查询操作,层次模型可能需要进行多次读取才能得到结果,效率较低。</li>
<li><strong>插入和删除异常:</strong> 插入一个不存在父节点的记录时,可能需要创建一个新的父节点;而删除一个父节点时,可能会导致所有子节点的丢失。</li>
</ul>
<h3>例题说明</h3>
<p>假设有一个公司组织结构的层次模型,其中每个部门都有一个经理,经理下面是员工。这种结构可以表示为一棵树。</p>
<pre>
公司
├── 人事部
│ └── 张三 (经理)
│ └── 李四 (员工)
│ └── 王五 (员工)
└── 财务部
└── 赵六 (经理)
└── 周七 (员工)
└── 吴八 (员工)
</pre>
<p><strong>问题1:数据冗余</strong></p>
<p>如果有多位经理的名字都是“张三”,那么在每个部门下都需要存储一次“张三”的信息,这样会导致数据冗余。</p>
<p><strong>问题2:数据独立性差</strong></p>
<p>如果要将“人事部”改名为“人力资源部”,则需要修改所有涉及“人事部”的节点名称。</p>
<p><strong>问题3:查询效率低</strong></p>
<p>如果需要查找所有的员工,只能从根节点开始,逐层遍历,找到所有的叶子节点,效率较低。</p>
<p><strong>问题4:插入和删除异常</strong></p>
<p>如果要新增一个“市场部”,但没有合适的经理,则需要先创建一个经理节点,再将“市场部”挂到这个经理节点下。而如果要删除“人事部”,则需要同时删除“张三”及其下属的所有员工。</p>
</div>