`
xiaolaogong
  • 浏览: 68591 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数据库设计模式-继承模式

阅读更多

(五)继承模式
继承模式,可以看作是“主从模式”的一种特殊情况(或者说是“变形”),它所代表的两个对象也是“一对多”的关系。它与“主从模式”的区别是,“继承模式”中从表的主键是复合主键,并且复合主键中必定包含主表的主键列。
根据从表继承主表的列的数量,继承模式又分以下两种情况:
1.       从表继承主表的全部列
图7
在这种情况下,从表除了代表自身的专用字段以外,还冗余了主表的全部字段。这种设计方式的缺点显而易见:
  • 数据冗余度大
  •  一致性差
  • 磁盘存储量大
它的优点也显而易见:
  • 正因为它的冗余度大、所以它不易丢失数据。假设主表数据丢失、或者被误操作删改,也能依据从表数据重新生成主表数据;这种设计方式,可以在发生数据损坏的时候从应用的角度进行一定程度的数据恢复,等于是在SQL Server数据库级别的数据恢复功能之上又加了一道保险。
  • 正因为它一致性差、主表数据被重复存储,所以可依据外键关系进行数据验证。将主从表记录作关联比较,如果数据不一致,就可以得知数据要么被人为改动,或者要么程序代码中存在bug。
  • 尽管磁盘存储量大,但是数据在查询统计的时候,只需针对从表进行搜索即可,无需关联操作,可以加快检索的速度。这就是数据库模型设计中经常提到的“以空间换时间”。
2.       从表只继承主表的主键列
图8
这种设计方式,从表只继承了主表的主键列,这种方式的优缺点与前面刚好相反。
优点:
  • 数据冗余度小
  • 一致性高
  • 磁盘存储量小
缺点:
  • 正因为它的冗余度小、所以它易丢失数据。假设主表数据丢失、或者被误操作删改,就只能通过SQL Server数据库级别的数据恢复操作来找回丢失的数据了。
  • 正因为它一致性高,所以无法进行应用程序级的数据验证。
  • 由于采用了一致性设计,磁盘存储量较小,但是数据在查询统计的时候,必须要对两个表进行内连接(INNER JOIN)操作,才能搜索到相关数据。而内连接操作时需要耗费一定的时间的。这就是数据库模型设计中经常提到的“以时间换空间”。
当然,在实际的数据库模型设计过程中,还会有介于上述两者之间的第3种情况出现,那就是从表继承了主表的主键列以及部分其他列。这就要求我们设计人员要依据实际的业务需求进行综合分析、权衡、折中,给出最符合业务需求的设计结果。

分享到:
评论

相关推荐

    数据库设计漫谈-多年的经验总结

    数据库模式是数据库设计中的另一个重要方面,它描述了数据库的结构和约束条件。 ##### 2.4.1 什么是数据库模式 数据库模式是指数据库的逻辑结构,包括表、列、键、索引等元素的定义。 ##### 2.4.2 什么是数据完整...

    数据库课程设计---医院管理收费系统

    四、系统架构和设计模式 1. MVC模式:模型-视图-控制器架构,分离数据处理、用户界面和业务逻辑。 2. 封装和继承:使用面向对象的设计原则,提高代码复用性和可维护性。 3. 单例模式:用于数据库连接管理,确保在...

    数据库课程设计--图书管理系统

    4. 设计模式:可能涉及到单例模式(数据库连接池)、工厂模式(创建DAO实例)和MVC(模型-视图-控制器)架构。 5. 数据库设计:了解ER模型,如何创建数据库表,以及规范化理论以减少数据冗余和提高数据一致性。 在...

    数据库课程设计--商品销售管理系统完整代码

    1. **数据库设计**:首先,我们需要设计一个合理的数据库架构来存储商品、销售、库存等信息。这通常包括创建数据表如商品表(Product),库存表(Inventory),销售记录表(Sales)等,并定义各表之间的关系,如商品...

    【Java毕业设计】数据库课程设计--某学校题库管理系统_pgj.zip

    在数据库设计方面,题库管理系统常见的数据库模型包括题目表、用户表、科目表、分类表等,它们之间通过外键关系进行关联。题目表可能包含题目内容、题目答案、题目选项、题目类型、难度等级等字段。用户表则涉及用户...

    C#语法,数据库实例,设计模式----学习C#的必备资料,一应俱全!

    本资料包涵盖了C#语法、数据库实例以及设计模式三大核心领域,是学习C#不可多得的资源。 首先,我们来深入探讨C#语法。C#的语法结构简洁而严谨,它继承了C++和Java的很多特性,同时也引入了许多新的概念。基础语法...

    数据库设计模式数据库设计模式数据库设计模式

    本文将介绍四种主要的数据库设计模式:主扩展模式、主从模式、名值模式和继承模式。 1. 主扩展模式 主扩展模式是一种常见的数据库设计模式,用于将几个相似的对象的共有属性抽取出来,形成一个“公共属性表”,...

    数据库的几种设计模式

    ### 数据库设计模式详解 #### 一、主扩展模式 主扩展模式是一种高效的数据库设计方法,主要用于处理具有共同属性但又有特有属性的对象集合。这种模式通过将对象间的共有属性提取到一个统一的表中(公共属性表),...

    Python编程 -设计模式-从入门到实践

    在编程领域,设计模式是一种被广泛接受的解决常见问题的最佳实践。它们是经过时间验证的、可重用的解决方案,可以提升代码的可读性、可维护性和复用性。当我们谈论“Python编程 - 设计模式 - 从入门到实践”时,这...

    数据库建模--员工管理系统

    综上所述,"数据库建模--员工管理系统"涉及到多个层面的知识,包括权限分配、用户信息管理、组织结构建模以及数据库设计的基本原则。正确地实施这些设计,将为高效、安全的员工管理系统奠定坚实的基础。

    设计模式--模板方法模式java例子

    模板方法模式是设计模式中行为型模式的一种,它在软件工程中扮演着非常重要的角色,尤其是在Java编程中。模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。它允许子类不改变一个算法的结构即可重...

    使用设计模式构建通用数据库访问类.

    本文将围绕“使用设计模式构建通用数据库访问类”这一主题,深入探讨如何通过抽象基类与继承机制,结合具体的设计模式,如工厂模式和策略模式,来创建一个灵活且高效的数据库访问层。 ### 设计模式的重要性 设计...

    android 数据库及设计模式

    在Android开发中,数据库是存储和管理应用程序数据的关键组件,而设计模式则是软件工程中解决常见问题的最佳实践。本文将深入探讨Android数据库的使用以及在Android开发中如何应用设计模式。 首先,Android主要使用...

    设计模式-适配器模式

    适配器模式是一种在软件设计中广泛使用的结构型设计模式,它的主要目的是解决不同接口或类之间不兼容的问题,使得原本无法协同工作的组件能够协同工作。在这个“设计模式-适配器模式”的资源中,我们可以深入理解...

    java常用设计模式-抽象工厂模式

    java常用设计模式-抽象工厂模式 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它通过定义一个创建对象的接口来创建对象,但将具体实现的决定留给子类来决定。在抽象工厂模式中,接口是负责创建...

    设计模式----简单工厂模式

    简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,使得代码在创建对象时更加灵活,同时也隐藏了对象的创建细节。在这个模式中,一个专门的工厂类负责创建特定类型的对象,而...

    数据库课程设计-基于Java实现的会展中心管理系统.zip

    一、数据库设计 1. 数据表结构:设计合理的数据库表结构至关重要,如活动表(Activity)、参展商表(Exhibitor)、参观者表(Visitor)等,确保数据的完整性和一致性。 2. 关系模型:会展中心管理系统可能涉及到多对...

    C# net 数据库链接框架-EF教学

    1. **DbContext**: 作为与数据库交互的主要接口,它继承自`System.Data.Entity.DbContext`,包含了一组DbSet属性,每个属性对应一个数据库表。 2. **Entity**: 表示数据库中的表,由POCO(Plain Old CLR Object)类...

    数据库设计模式.pdf

    数据库设计模式是构建高效、可扩展的数据库结构的关键方法,主要目标是优化数据存储和查询效率,同时确保数据的一致性和完整性。以下是几种常见的数据库设计模式及其适用场景的详细解释: 1. **主扩展模式**: 主...

Global site tag (gtag.js) - Google Analytics