数据库事务的粒度探讨 (数据库事务的几种粒度)

在数据库管理系统中,事务是指一组数据库操作,这些操作要么全部成功执行,要么全部不执行,即“所有或无”。事务实现了数据库的一致性和稳定性,保证了数据的正确性和可靠性。在大型企业应用中,事务处理非常重要。

然而,在实际应用中,事务的粒度往往成为了关注的热点话题。事务粒度指的是事务操作的范围大小,以及应用场景下事务粒度的选择和优化。

本文将从事务粒度的理论基础、应用场景和优化方法三个方面进行探讨。

一、事务粒度的理论基础

数据库事务的实现需要考虑ACID四个特性,即原子性、一致性、隔离性和持久性。

原子性:指数据库操作无论成功还是失败,都必须是“所有或无”,要么所有操作都成功,要么所有操作都失败,保证了数据的完整性。

一致性:指数据库的状态在事务之前和之后保持一致,保证了数据的正确性。

隔离性:指不同的事务之间应该是相互隔离的,互不影响,保证了数据的独立性。

持久性:指事务一旦提交,就必须永久保存在数据库中,保证了数据的稳定性。

这四个特性是事务的基础,也是事务实现的核心。在确定事务粒度的时候,需要考虑这些特性之间的平衡和权衡。

二、事务粒度的应用场景

事务粒度的应用场景可以分为两类:高并发场景和业务场景。

高并发场景:在高并发的情况下,事务粒度的大小对系统性能和可靠性有着很大的影响。如果事务粒度过大,会增加锁的竞争,降低系统的并发性能;如果事务粒度过小,会增加事务的开销和网络通信的成本,降低系统的可靠性。

在高并发场景中,一般需要将事务粒度控制在较小的范围内,通常是基于表或数据行的粒度,实现细粒度的事务处理。例如,在订单处理中,可以将每个订单作为一个独立的事务处理;在库存管理中,可以将每个商品作为一个独立的事务处理。

业务场景:在业务场景中,事务粒度的选择需要考虑业务流程的复杂度和业务逻辑的一致性。如果事务粒度过大,会对系统效率产生负面影响,而且遇到异常情况时也难以进行针对性处理;如果事务粒度过小,会影响业务的一致性和正确性,甚至会导致数据不一致。

在业务场景中,一般需要权衡事务操作的复杂度和执行效率,并考虑数据的完整性和正确性。例如,在银行转账中,需要将转出账户、转入账户和交易记录作为一个事务进行处理;在电商平台中,需要将下单、支付、发货和签收等操作作为一个事务进行处理。

三、事务粒度的优化方法

事务粒度的优化方法包括两个方面:从数据库和应用程序两个层面进行优化。

从数据库层面进行优化:在数据库层面,可以采取以下措施优化事务处理。

1、采用存储过程或触发器等数据库对象优化事务操作,可以减少网络通信的开销,提高执行效率。

2、采用悲观锁或乐观锁等机制控制数据库的并发性,避免数据错乱和资源的浪费。

3、合理使用索引,优化查询性能,避免多次扫描和重复查询。

从应用程序层面进行优化:在应用程序层面,可以采取以下措施优化事务处理。

1、尽量采用批量操作,避免单次操作多次访问数据库,减少数据库操作次数。

2、采用分布式事务或分布式缓存,将事务和数据分散到多个节点中,提高系统性能和可靠性。

3、合理使用连接池和线程池,避免资源的重复分配和管理,提高系统的并发处理能力。

事务粒度的控制是实现数据库的一致性和稳定性的重要手段。在应用中,需要根据实际情况选择合适的事务粒度,权衡系统性能和数据的正确性,优化事务处理方式,提高系统可靠性。

相关问题拓展阅读:

数据库死锁,并发问题

如果拥有线程需要获取另外一个资源,而该资源当前为等待线程所拥有,则这种情形将成为死锁:在事务提交或回滚之前两个线程都不能释放资源,而且它们因为正等待对方拥有的资源而不能提交或回滚事务。例如,运行事务 1 的线程 T1 具有学生基本信陪慧空息表上的排它锁。运行事务2的线程 T2 具有系部表上的排它锁,并且之后需要学生基本信息表上的锁。事务2 无法获得这一锁,因为事务 1 已拥有它。事务2 被阻塞,等待事务 1。然后,事务1 需要 系部表的锁,但无法获得锁,因为事务 2 将它锁定了。事务在提交或回滚之前不能释放持有的锁。因为事务需要对方控制的锁才能继续操作,所以它们不能提交或回滚。

需要注意的是死锁经常与正常阻塞混淆。当一个事务锁定了另一个事务需要的资源,第二个事务等待锁被释放。默认情况下,SQL Server 事务不会超时(除非设置了 LOCK_TIMEOUT)。第二个事务被阻塞,碧宴而不是被死芦瞎锁。

补充楼主:

其实我没什么经验,只不过是了解一些基础的东西罢了。

一楼的 一朵瘩红花 实际经验很丰富,你可以向她咨询一下。

你问的问题挺好得。三个概念紧密联系在一起。

这样说吧:并发的几个事务同时发生,不加锁控制的话数据就会乱套了,而加了锁后,又是并发访问会出现死锁,所以就会出现避免死锁的一些措施。

首先谈并发:理论指的是在一段时间同时对某件事进行操作。 注意精度问题,修改数据库是在一段时间内操作,不是在某个时刻,而日志则会从 时刻 开始记录你的操作。

造成死锁的原因是为了防止 不同的用户同时间(不是时刻)都对某个数据修改,造成访问不一致的问题。

比如你读了数据库的一个数据然后把它修改了并存回去,是需要时间的(假如是student表中的有个grade属性,你改了一条记录的一个值)在这个过程当中,有人又访问了数据库并且恰恰访问的是存回去之前的数据,然后他要进行操作,过了一段时间,此时你已经存回去了数据祥圆。会发现原来的数据被改动了。这时数据就乱套了。(专业术语叫读脏数据,其实还有很多其他类似这种导致前后数据不一致的问题)所以为了限定这种操作,数据库设计了—–锁—来锁定这种操作。就是你正在操作某个数据的时候—-通常之前会先锁定这个数据,这样别人就不能对此数据操作了(严格来说就是只能读,不能改),必须等你操作完才能对此数据修改等操作,这就在一定程度上避免了前后操作数据不一致的问题。

但是有了锁后,新问题出现了,就是死锁:

简单解释死锁:进程A等待进程B释放他的资源,B又等待A释此掘放他的资源,这样就互相等待就形成死锁

官方解释死锁

死锁,根本原因在于对共享存储区的访问。在数据库中也一样,如果需要“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。锁有多种实现方式,比如意向锁,共享-排他锁,锁表,树形协议,时间戳协议等等。锁还有多种粒度,比如可以在表上加锁,也可以在记录上加锁。

在并发控制中,锁是非常重要的。

至于在Oracle还是别的数据库管理系统中,死锁产生的原因没有不同,不同的顶多是锁的实现或者死锁的恢复等罢了

再来说说事务:

事务简单来说就是 一系列的对数据库的操作揉在一起,要么同时完成,要么就都不完成。

比如—你要取钱的过程就可以当成是一个小的事务: 插卡,输入取钱金额,取走钱,拿出来卡。此过程缺一不可。把所有这些过程细节封装起来就成为一个事务。

以oracle数据库为例:

一个事务(你可以认为是一系列业务的操作)起始于dml语句(insert、update、delete)

即一条dml语句就做为一个事务的起始,然后根据业务需要,进行其他的dml操作都算是事务的一部分。

最后碰到commit。或者rollback,或者其他意外什么的都算作一个事务的结束。

整个过程就是一个事务。

事务的理论解释就是那四个什么特性:什么原子性、一致性、隔离性和持久性

简称ACID

剩下的:数据库是建立在操作系统之上的一个层次。

你问的是数据库的存储机制??工作机制??还是什么的??

数据库就是存数据的。数据库管理系统是 对存的数据进行高效率的管理

大的结构分物理数据跟逻辑数据。

物理数据就是数据在存储设备上的存储方式,什么物理联系,森宴核物理结构,物理记录等 术语。

逻辑数据就是程序员和用户看到的数据形式。什么逻辑联系,逻辑结构==同上

数据库管理类系统就是把这些逻辑跟物理相互转换。 好比你输入的叫逻辑数据存储在磁盘上叫物理数据。等等。

废话了一堆,也不知道回答对你的问题没~~

db2 是对某表某一条记录操作的迅慎时候,他会对整个表进行表锁定,如果设置的事念昌神务级别是可重复的读,那么另外一个人的同步操作就会被回滚,不过可以通过sql语句指定锁定级别,sqlserver默认是对行数据进行锁定,你如果要看这个问题,你可以先研究一下数据库的锁定方式和锁定级别,死锁是一定存在的,特别是在并发操作很多的情况,这个和你数据库的设计有仔亏关系,关键是捕获到死锁后怎么样对死锁进行释放

数据仓库的主要特征

数据仓库的特点:

数据仓库是面向主题的;操作型数据库的数据组织面向事务处理任务,而数据仓库中的数据是按照一定的主题域进行组织。主题是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型携型信息系统相关。

数据仓库是集成的,数据仓库的数据有来自于分散的操作型数据,将所需数据从原来的数据中抽取出来,进行加工与集成,统一与综卜游伏合之后才能进入数据仓库; 数据磨核仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。 数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。 数据仓库中的数据通常包含历史信息,系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到当前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。

数据仓库是不可更新的,数据仓库主要是为决策分析提供数据,所涉及的操作主要是数据的查询;

数据仓库是随时间而变化的,传统的关系数据库系统比较适合处理格式化的数据,能够较好的满足商业商务处理的需求。稳定的数据以只读格式保存,且不随时间改变。

汇总的。操作性数据映射成决策可用的格式。

大容量。时间序列数据通常都非常大。

非规范化的。Dw数据可以是而且经常是冗余的。

元数据。将描述数据的数据保存起来。

数据源。数据来自内部的和外部的非集成操作系统。

可以参考这篇文章:

数据仓库(1)什么是数据仓库 – 知乎 (zhihu.com)

面向主题:

传统数据库中,更大的特点是面向应用进行数据的余晌组织,各个业务系统可能是相互分离的。而数据仓库则是面向主题的。主题是一个抽象的概念,是较高层次上企业信息系统中的数据综合、归类并进行分析利用的抽象。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。

集成性:

通过对分散、独立、异构的数据库数据进行抽取、清理、转换和汇总便得到了数据仓库的数据,这样保证了数据仓库内的数据关于整个企业的一致性。

数据仓库中的综合数据不能从原有的数据库系统直接得到。因此在数据进入数据仓库之前,必然要经过统一与综合,这一步是数据仓库建设中最关键、最复杂的一步,所要完成的工作有:

非易失性(不可更新性)

数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库快照的,以及基于这些快照进行统计、综合和重组的导出数据。

数据非易失性主要是针对应用而言。数据仓库的用户对数据的操作大多是数据查询或比较复杂的挖掘,一旦数据进入数腔尺据仓库以后,一般情况下被较长时间保留。数据仓库中一般有大量的查询操作,但修改和删除操作很少。因此,竖圆锋数据经加工和集成进入数据仓库后是极少更新的,通常只需要定期的加载和更新。

时变性

数据仓库包含各种粒度的历史数据。数据仓库中的数据可能与某个特定日期、星期、月份、季度或者年份有关。数据仓库的目的是通过分析企业过去一段时间业务的经营状况,挖掘其中隐藏的模式。虽然数据仓库的用户不能修改数据,但并不是说数据仓库的数据是永远不变的。分析的结果只能反映过去的情况,当业务变化后,挖掘出的模式会失去时效性。因此数据仓库的数据需要更新,以适应决策的需要。从这个角度讲,数据仓库建设是一个项目,更是一个过程。数据仓库的数据随时间的变化表现在以下几个方面:

(1) 数据仓库的数据时限一般要远远长于操作型数据的数据时限。

(2) 操作型系统存储的是当前数据,而数据仓库中的数据是历史数据。

(3) 数据仓库中的数据是按照时间顺序追加的,它们都带有时间属性。

数据仓库是基于数据简拿库技术的,运咐孙是研究如何将大规模复杂的数据更有效的组织用于方便使用的技术。这是我搞这么多年数据仓库的认识。旁链

什么是数据库的概念结构

每个阶段的主要工作绝猛是什么?解: (1) 按照规范化的设计方法,以及数键镇据库应用系统开发过程,数据库的设计过程可分为以下六个设计阶段需求分析、稿宏粗概念结构设计

={ E→G,G→E,F→(E,G),H→(E,G),

(F,H)→E}

(1)求出R的所有候选关键字;

(2)根据函数依赖关系,确定关系模式R属于第几范式;

(3)将R分解为3NF,并保持无损连接性和函数依赖保持性;

(4)求出F的最小函数依赖集。

参考答案:

(1)R的候选关键字为:(F,H)

(2)R为:1NF

(3)分解为:

(,)、(,)、(,)、(,{})

(4)最小函数依赖集为:

按定理4.3,求最小函数依赖集步骤:

F=

=

=

10、试问下列关系模式更高属于第几范式,并解释其原因。

(1)R(A,B,C,D),F=。

(2)R(A,B,C,D,E),F=。

(3)R(A,B,C,D),F=。

(4)R(A,B,C),F=。

(5)R(A,B,C),F=。

(6)R(A,B,C,D),F=。

(7)R(A,B,C,D),F=。

参考答案:

只依次写出候选关键字与范式等级(范式按定义判定,具体略)

(1)AB 1NF

(2)AB,ENF

(3)AB,ADNF

(4)A,BBCNF

(5)C 2NF

(6)AD 1NF

(7)AD 1NF

二、填空题

1、对数据库的保护一般包括 安全性 、 完整性 、 并发控制 和 数据恢复 四个方面的内容。

2、对数据库如或 安全 性的保护就是指要采取措施,防止库中数据被非法访问、修改,甚至恶意破坏。

3、安全性控制的一般方法有 用户标识和鉴余清别 、 用户存取权限控制 、 视图机制 、

数据加密 和 审计 五种。

4、用户鉴定机制包括 用户标识定义 和 用户身份验证 两个部分。

5、每个数据均需指明其数据类型和取值范围,这是数据 完整性 约束所必需的。

6、在SQL中, COMMIT 语句用于提交事务, ROLLBACK 语句用于回滚事务。

7、加锁对象的大小被称为加锁的 粒度 。

8、对死锁的处理主要有两类方法,一是 预防死锁的发生 ,二是 检测死锁发现后予以消除死锁 。

9、解除死锁最常用的方法是 撤消一些陷入死锁的事务 。

10、基于日志的恢复方法需要使用两种冗余数据,即 后备数据库 和 日志文件 。

三、简单题

1、简述数据库保护的主要内容。

对数据库的保护一般包括4个方面的内容,一是对数据库完整性的保护,即保证库中的数据是正确的和相容的,符合完整性约束条件的;二是对数据库安全性的保护,即防止库中数据被非法访问、修改,甚至恶意破坏;三是对并发的事务进行控制,保证数据库的一致性;四是在发生故障后,对数据库进行恢复,尽量减少故障造成的损失。

2、什么是数据库的安全性?简述DBMS提供的安全性控制功能包括哪些内容。

解:

(1)数据库的安全性是指保护数据库以防止非法使用所造成数据的泄露、更改或破坏。

(2)常采取的安全保护措施有用户鉴定、存取控制、视图保护、审计和数据加密等。

4、什么是数据库的完整性?DBMS提供哪些完整性规则,简述其内容。

(1)数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。

(2)DBMS提供实体完整性规则、参照完整性规则及用户自定义完整性规则

为保障数据库的完整性,数据库管理系统应提供完整性约束的定义机制和检查机制。

5、数据库的安全性保护和完整性保护有何主要区别?

解:

数据库的完整性和安全性是数据库保护的两个不同的方面。

安全性是保护数据库,以防止非法使用所造成数据的泄露、更改或破坏,安全性措施的防范对象是非法用户和非法操作;完整性是防止合法用户使用数据库时向数据库中加入不符合语义的数据,完整性措施的防范对象是不合语义的数据,即不正确的数据。

6、什么是事务?简述事务的ACID特性,事务的提交和回滚是什么意思?

解:

(1)事务是数据库系统中竖橡前执行的一个工作单位,它是由用户定义的一组操作序列组成。

一个事务可以是一组SQL语句、一条SQL语句或整个程序,一个应用程序可以包括多个事务。事务的开始与结束可以由用户显式控制。如果用户没有显式地定义事务,则由DBMS按照缺省规定自动划分事务。

(2)事务是由有限的数据库操作序列组成,但并不是任意的数据库操作序列都能成为事务,为了保护数据的完整性,一般要求事务具有以下四个特征:

1)原子性(Atomicity)2)一致性(Consistency)3)隔离性(Isolation)4)持久性(Durability)事务上述四个性质的英文术语的之一个字母分别为A、C、I、D。因此,这四个性质也称为事务的ACID准则。

(3)

COMMIT表示事务的提交,即将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,此时事务正常结束;

ROLLBACK表示事务的回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤销,再回滚到事务开始时的状态。

7、数据库管理系统中为什么要有并发控制机制?

解:

每个用户在存取数据库中的数据时,可能是串行执行,即每个时刻只有一个用户程序运行,也可能是多个用户并行地存取数据库。数据库的更大特点之一就是数据资源是共享的,串行执行意味着一个用户在运行程序时,其他用户程序必须等到这个用户程序结束才能对数据库进行存取,这样数据库系统的利用率会极低。因此,为了充分利用数据库资源,很多时候数据库用户都是对数据库系统并行存取数据,但这样就会发生多个用户并发存取同一数据块的情况,如果对并发操作不加控制可能会产生操作冲突,破坏数据的完整性。即发生所谓的丢失更新、污读、不可重读等现象。

(2)实现并发控制的方法主要有两种:封锁(Lock)技术和时标(Timestamping)技术。

9、什么是封锁?封锁的基本类型有哪几种?含义是什么?

解:

(1)所谓封锁就是当一个事务在对某个数据对象(可以是数据项、记录、数据集、以至整个数据库)进行操作之前,必须获得相应的锁,以保证数据操作的正确性和一致性。

(2)基本的封锁类型有两种:排它锁和共享锁。

1)排它锁(Exclusive Lock):排它锁又称写锁,简称为X锁,其采用的原理是禁止并发操作。当事务T对某个数据对象R实现X封锁后,其他事务要等T解除X封锁以后,才能对R进行封锁。这就保证了其他事务在T释放R上的锁之前,不能再对R进行操作。

2)共享锁(Share Lock):共享锁又称读锁,,简称为S锁,其采用的原理是允许其他用户对同一数据对象进行查询,但不能对该数据对象进行修改。当事务T对某个数据对象R实现S封锁后,其他事务只能对R加S锁,而不能加X锁,直到T释放R上的S锁。这就保证了其他事务在T释放R上的S锁之前,只能读取R,而不能再对R作任何修改。

11、什么是活锁?如何处理?

解:

(1)封锁技术可有效解决并行操作引起的数据不一致性问题,但也可产生新的问题,即可能产生活锁和死锁问题。

活锁(Livelock):当某个事务请求对某一数据的排它性封锁时,由于其他事务一直优先得到对该数据的封锁与操作而使这个事务一直处于等待状态,这种状态形成活锁。

(2)避免活锁的简单方法是采用先来先服务的策略,按照请求封锁的次序对事务排队,一旦记录上的锁释放,就使申请队列中的之一个事务获得锁。

12、什么是死锁?消除死锁的常用方法有哪些?请简述之。

(1)在同时处于等待状态的两个或多个事务中,每个事务都在等待其中另一个事务解除封锁,它才能继续执行下去,造成任何一个事务都无法继续执行,这种状态称为死锁。

(2)发生死锁的必要条件有以下四条:

①互斥条件②不可抢占条件③部分分配条件:④循环等待条件

①一次加锁法

一次加锁法是每个事物必须将所有要使用的数据对象全部依次加锁,并要求加锁成功,只要一个加锁不成功,表示本次加锁失败,则应该立即释放所有已加锁成功的数据对象,然后重新开始从头加锁。

②顺序加锁法

顺序加锁法是预先对所有可加锁的数据对象规定一个加锁顺序,每个事务都需要按此顺序加锁,在释放时,按逆序进行。

14、数据库运行过程中可能产生的故障有哪几类

(1)数据库运行过程中可能会出现各种各样的故障,这些故障可分为以下三类:事务故障、系统故障和介质故障。

16、什么是日志文件?为什么要在系统中建立日志文件?

解:

(1)日志文件是用来记录事务对数据库的更新操作的文件。对数据库的每次修改,都将把被修改项目的旧值和新值写在一个叫做运行日志的文件中,目的是为数据库的恢复保留依据。

典型的日志文件主要包含以下内容:1)更新数据库的事务标识(标明是哪个事务);2)操作的类型(插入、删除或修改);3)操作对象;4)更新前数据的旧值(对于插入操作而言,没有旧值);5)更新后数据的新值(对于删除操作而言,没有新值);6)事务处理中的各个关键时刻(事务的开始、结束及其真正回写的时间)。

二、填空题

1、在设计分E-R图时,由于各个子系统分别面向不同的应用,所以各个分E-R图之间难免存在冲突,这些冲突主要包括 命名冲突 、 属性冲突 和 结构冲突 三类。

2、数据字典中的 数据项 是不可再分的数据单位。

3、若在两个局部E-R图中都有实体“零件”的“重量”属性,而所用重量单位分别为公斤和克,则称这两个E-R图存在 属性 冲突。

5、确定数据库的物理结构主要包括三方面内容,即: 确定数据存放位置和存储结构 、 确定数据存取方法 和 系统配置 。

6、将关系R中在属性A上具有相同值的元组集中存放在连续的物理块上,称为对关系R基于属性A进行 聚簇 。

7、数据库设计的重要特点之一要把 结构(数据) 设计和 行为(处理) 设计密切结合起来,并以 结构(数据) 为核心而展开。

8、数据库设计一般分为如下六个阶段: 需求分析 、 概念结构设计 、 逻辑结构设计 、数据库物理设计、数据库实施、数据库运行与维护。

9、概念设计的结果是得到一个与 计算机与DBMS 无关的模型。

10、在数据库设计中, 数据字典 是系统各类数据的描述的。

三、简答题

1、数据库设计分为哪几个了阶段?每个阶段的主要工作是什么?

解:

(1) 按照规范化的设计方法,以及数据库应用系统开发过程,数据库的设计过程可分为以下六个设计阶段需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施、数据库运行和维护。

(2) 以下是数据库设计六个步骤的具体内容:

1、需求分析阶段2、概念结构设计阶段3、逻辑结构设计阶段4、物理设计阶段

5、数据库实施阶段6、数据库运行与维护阶段

5、什么是E-R图?构成E-R图的基本要素是什么?

(1)E-R图即是实体-联系图,是信息世界概念模型的一种。

(2)E-R图提供了表示实体型、属性和联系的方法。

实体型:用矩形表示,矩形框内写明实体名。

属性:用椭圆表示,椭圆形内写明属性名。并用无向边将其与相应的实体连接起来。

联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)。

6、用E-R图表示概念模式有什么好处?

解:

概念模式是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象。将概念结构设计从设计过程中独立出来,可以带来以下好处:

(1) 任务相对单一化,设计复杂程度大大降低,便于管理。

(2) 概念模式不受具体的DBMS的限制,也独立于存储安排和效率方面的考虑,因此,更稳定。

(3) 概念模型不含具体DBMS所附加的技术细节,更容易被用户理解,因而更能准确的反映用户的信息需求。

8、一个图书馆理系统中有如下 信息:

图书:书号、书名、数量、位置

借书人:借书证号、姓名、单位

出版社:出版社名、邮编、地址、、E-mail

其中约定:任何人可以借多种书,任何一种书可以被多个人借,借书和还书时,要登记相应的借书日期和还书日期;一个出版社可以出版多种书籍,同一本书仅为一个出版社所出版,出版社名具有惟一性。

根据以上情况,完成如下设计:

(1)设计系统的E-R图;

(2)将E-R图转换为关系模式;

(3)指出转换后的每个关系模式的关系键。

解:

(1)

(2)与(3)(带下划线的为主码)

借书人(借书证号,姓名,单位)

借阅(借书证号,书号,借书日期,还书日期)

图书(书号,书名,数量,位置)

出版(书号,出版社名)

出版社(出版社名,邮编,地址,,E-mail)

数据库事务的几种粒度的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据库事务的几种粒度,数据库事务的粒度探讨,数据库死锁,并发问题,数据仓库的主要特征,什么是数据库的概念结构的信息别忘了在本站进行查找喔。


数据运维技术 » 数据库事务的粒度探讨 (数据库事务的几种粒度)