简答题

关系数据库的表之间不存在继承关系,为了将面向对象中的继承关系映射关系数据库中,可以使用以下三种继承映射策略:每个继承层次一张表;每个具体类一张表;每个类一张表。试请分析三种策略在实际应用中各自的优缺点?

正确答案

方式一:整个的继承体系就用一张表
优缺点:首先表中引入的区分子类的字段,也就是包括了描述其他字段的字段。其次,如果某个子类的某个属性不能为空,那么在数据库一级不能设置该字段not null(非空),维护起来方便,只需要修改一个表,灵活性差,表中冗余字段会随着子类的增多而越来越多,在任何情况下,都只需处理一个表,对于单个对象的持久话操作只需要处理一个表。
方式二:每个子类一张表,存放子类所特有的属性
优缺点:这种设计方式完全符合关系模型的设计原则,且不存在冗余,维护起来比较方便,对每个类的修改只需要修改其所对应的表,灵活性很好,完全是参照对象继承的方式进行配置,对于父类的查询需要使用左外链接,对于子类查询需要使用内链接,对于子类的持久话至少要处理两个表。
方式三:每个具体类一张表(union-subclass),保存是子类完整信息
优缺点:这种设计方式符合关系模型的设计原则,但有表中存在重复字段的问题。如果需要对基类进行修改,则需要对基类以及该类的子类所对应的所有表都进行修改,映射的灵活性很大,子类可以包括基类属性在内的每一个属性进行单独配置,对于子类的查询只需要访问单独的表,对父类查询怎需要检索所有的表,对于单个对象持久话操作只需要处理一个表。

答案解析

相似试题
  • 在一个数据库中可以建立多个表,对于数据相关的表,在它们之间还可建立关系。

    判断题查看答案

  • 数据环境也是一个对象,它包含与表单相互作用的表或视图以及表单所要求的表之间的关系()

    判断题查看答案

  • 在VFP中,表单(集)的数据环境包括了与表单交互作用的表或视图,以及表单要求的表之间的关系。下列关于表单数据环境的叙述中错误的是()

    单选题查看答案

  • 假设“数据环境设计器”中有多个关联的表,若要删除某个表,则与之关联的表与被删除的关系将()。

    单选题查看答案

  • 桥接模式将继承关系转换为()关系,从而降低了类与类之间的耦合,减少了代码编写量。

    单选题查看答案

  • 不存在继承关系的情况下,也可以实现方法重写

    判断题查看答案

  • 在关系数据库中,建立数据库表时,将年龄字段值限制在12~40岁之间的这种约束不属于()

    多选题查看答案

  • 定单录入系统有两个主要的表:Orders和Customers。如果希望惟一地标识每个定单和客户,应该考虑哪种数据完整性组件?如何管理这两个表之间的关系?

    简答题查看答案

  • 在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构。根据数据元素之间关系的不同特性,下面的选项中()属于其基本结构。

    多选题查看答案