`

SQL Server数据库基础的级联删除、级联更新与三层架构之窥

 
阅读更多

一、定义:

级联删除是指删除包含主键值的行的操作,该值由其它表的现有行中的外键引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。

级联更新是指更新主键值的操作,该值由其它表的现有行中的外键引用。在级联更新中,更新所有外键值与新的主键值相匹配。

三层架构是指一种架构思想。通常他将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的是为了“高内聚、低耦合”的思想。

二、特点:

大家都知道,级联删除与级联更新操作,都是指主表的信息删除或更新后,外键表中的相应信息随主表保持一致,也同样做出删除或更新操作,不然就会发生错误,保持数据的事务性。

而关于三层架构的分层问题,我们之前就讨论过。看似简单,但是越是往细处想,越是发现疑点重重,很多知识都掌握的似是而非。

之前,我们谈论过,我们的架构设计,一般DAL层是与表一一对应的。这是一种规则,可以使DAL层与BLL层之间的关系更加清晰、简洁。但是,我们知道,在实际应用中,真正实现一个逻辑对应一个表是比较困难的,我们的业务不可能彼此孤立,而只能相对孤立。

因此,我认为:我们在设计之初,大方向依然按照DAL与表一一对应的原则进行设计。这里有一点需要注意:所写的SQL语句,一定是要放在存储过程里面的,因为存储过程是预编译类型。业务修改时,我们只需要修改对应存储过程,实现对修改封闭的原则。

三、比较

通过上面的分析,我们可以得出:级联操作与三层机构设计思想是彼此矛盾的。前者只适用于多表间的操作关系,而后者的宏观路线是单对单。

然而,我认为,通过编写存储过程或者触发器来实现级联操作,这样可以使得三层架构的设计更加灵活多变、更加具有弹性。

我们来看机房收费系统中的一个功能:充值功能。我们在充值的时候,不仅要更新卡表内余额,同时也要增加充值记录。

我们之前的做法是,在DAL层对应卡表编写进行更新余额,在充值记录表中添加相应记录。然后在BLL层实现他们的协调工作。

这样做有一个很大的弊端,充值的过程是一个顺序过程,现更新,在添加记录。如果中途断电,那么数据就会不完整了。

看下面的例子,首先是数据库关系图

编写下面触发器,实现起来就非常方便了。


四、结论

我认为,级联操作与三层架构或者多层架构的思想是不矛盾的。想反,它使得分层更加灵活多变。

分享到:
评论

相关推荐

    MSserver自关联表的级联删除

    在SQL Server中,自关联表是指一个表中的某一列引用了该表的主键作为外键,形成一种树形结构,常用于表示层次关系的数据,如组织架构、目录树等。在这样的表中,级联删除是确保数据完整性的一个重要功能,即删除某条...

    用Struts+hibernate+SQLServer2000写的级联下拉框程序

    总结起来,这个项目展示了如何结合Struts的控制层、Hibernate的数据持久化层以及SQLServer2000的数据库服务,实现一个动态的、基于用户选择的级联下拉框功能。对于学习Java Web开发和实践MVC架构的人来说,这是一个...

    浅谈SQL Server数据库安全监控系统结构和工作原理.pdf

    本文主要介绍了SQL Server数据库安全监控系统的结构和工作原理,重点包括系统整体结构、工作原理以及系统运行中的角色和功能。接下来,我将详细解读文中提及的关键知识点。 一、SQL Server数据库系统整体结构简介 ...

    SQLSERVER性能优化综述

    针对OLTP系统,选择合适的系统架构,如C/S或三层C/S,将部分业务逻辑放在数据库层实现,提高处理效率。 三、开发与部署阶段的优化 在编码阶段,根据索引设计编写高效的SQL语句,避免全表扫描,使用存储过程优化频繁...

    三层架构简介pdf格式

    ### 三层架构详解 #### 一、概述 在软件工程领域,**三层架构**是一种常见的软件体系结构设计方法,主要用于构建复杂的企业级应用程序。通过将应用程序划分为三个独立的层,能够有效地提高软件的可维护性、可扩展...

    SQL Server性能优化

    - **架构选择**:C/S或三层C/S架构适用于OLTP系统,业务逻辑部分可以通过数据库编程(存储过程、触发器和函数)实现,减少网络流量,提高性能。 5. **性能优化策略**: - **索引设计**:良好的索引设计可以显著...

    SQL SERVER性能优化综述

    总的来说,SQL Server性能优化是一个涉及多个层面的综合工程,需要在各个阶段做出明智决策,平衡规范化、冗余、主键与外键设计、字段选择、物理存储和系统架构等方面,以确保系统在处理大量并发用户和大数据量时仍能...

    浅说微软的宠物商店---三层架构

    在众多架构模式中,“三层架构”作为一种经典的分层设计方法,被广泛应用于各种规模的应用程序开发之中。本文将通过对微软“宠物商店”(PetShop)项目的分析,探讨其在三层架构设计中的实践,并总结其中的设计理念...

    三层结构与MVC

    通过对比三层架构与MVC架构,我们可以发现它们各有优势和局限性。选择哪种架构取决于项目的具体需求和技术团队的能力。在实际开发过程中,结合两者的优势,可以构建出既灵活又高效的系统。例如,在Web开发中,可以...

    Delphi7+MSSQL2K三层开发

    本文档主要介绍了使用Delphi7结合Microsoft SQL Server 2000(简称MSSQL2K)进行三层架构开发的方法,特别关注了服务端与客户端的数据模块(Data Module)设置实例。三层架构指的是将应用程序分为表示层、业务逻辑层...

    简单的C#留言板

    【简单的C#留言板】是一个基于C#编程语言和SQL Server数据库构建的应用程序,它展示了如何在Web开发中实现一个交互式的用户交流平台。这个项目利用了三层架构的设计模式,这是一种常见的软件开发方法,旨在提高代码...

    NHibernate实例+数据库2005

    在数据库实例`SQL Server 2005`中,NHibernate能够轻松地管理复杂的数据库操作,例如事务处理、缓存策略、级联操作等。通过学习`NHibernateDemo`,开发者可以了解如何在实际项目中有效地运用这些特性。 总之,`...

    C#实体类代码生成器

    实体类在三层架构中扮演重要角色:在表示层(UI层),它们作为视图模型与用户界面交互;在业务逻辑层(BLL层),它们接收并处理来自UI层的数据,执行业务规则;在数据访问层(DAL层),它们被用作ADO.NET或其他ORM...

    数据库面试题大集合

    - **业务逻辑**:用于实现特定业务规则,如级联更新或删除。 #### 十一、树形结构表示 - 使用“父节点ID”与“子节点ID”的方式构建树形结构。 #### 十二、数据库性能优化 - **数据结构设计**:考虑使用Oracle的...

    尚硅谷网上书城1

    三层架构是一种软件设计模式,它将应用分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种架构有助于提高代码的可读性和可维护性,降低组件间的耦合度。 - 表示层:负责与用户交互,接收用户输入并...

    mssql性能优化

    系统设计阶段,考虑采用C/S或三层C/S结构等,不同的架构会影响系统的并发能力和整体性能。在编程阶段,优化SQL语句至关重要,包括避免全表扫描,利用索引,减少表连接,以及优化事务处理等。 总的来说,mssql性能...

    基于WEB的酒店前台管理信息系统(2).doc

    - 系统分为三层架构:**表示层、功能层和数据层**。表示层负责用户交互,功能层处理业务逻辑,数据层存储和管理数据。 2. **平台选择** - **服务器端**选择了Windows 2000作为操作系统,因为它提供了良好的稳定性...

    hibernate源码分析过程

    Hibernate 的架构可以分为三层:Presentation Layer、Business Logic Layer 和 Data Access Layer。Presentation Layer 负责与用户交互,Business Logic Layer 负责业务逻辑处理,而 Data Access Layer 负责数据库...

Global site tag (gtag.js) - Google Analytics