问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据库中,可以通过完整性约束,事务,触发器来约束,哪种优先采用

发布网友 发布时间:2022-05-02 18:12

我来回答

2个回答

懂视网 时间:2022-05-02 22:33

class DataBase { public static void main() { } } /* 4.3 事务 事务由查询或更新语句的序列组成。SQL标准规定当一条SQL语句被执行时,就隐式地开始 了一个事务: Commit work:提交当前事务。事务被提交后,一个新的事务自动开始。 Rollback work:回滚当前事务。 如果一个事务要执行多条SQL语句,就必须关闭单独SQL语句的自动提交。一个较好的选择是: 允许多条SQL语句包含在begin atomic 。。。 end之间。所有关键字之间的语句构成一个 单一事务。 */ /* 4.4 完整性约束 一般来说,一个完整性约束可以是属于数据库的任意谓词。但检测任意谓词的代价可能太高了。 因此,大多数数据库系统允许用户指定那些只需要极小的开销就可以检测的完整性约束。 完整性约束被看做是数据库模式设计过程的一部分~ */ /* 4.4.1 单个关系上的约束 not null,unique,check(<谓词>) */ /* 4.4.3 unique约束 MySql5.7 中说,unique约束是来保证一列中数据不会相同的。 这儿有: unique(a1,a2,a3,...,an) unique声明指出了属性a1,a2,a3,...,an形成了一个候选码:即在关系中没有两个元组能 在所列出的属性上取值相同。 */ /* 4.4.4 check子句 案例: create table section (course_id varchar(8), sec_id varchar(8), semester varchar(8), year numeric(4.0), building varchar(15), room_number varchar(7), primary_key(course_id,sec_id) check(semester in (’Fall‘,‘Winter‘,‘Spring‘,‘Summer‘))); 怎么说,在MySQL中貌似是一个用enum完成这个功能的。 */ /* 4.4.5 参照完整性 默认情况下,SQL中外码参照的是被参照表中的主码属性。SQL还支持一个可以被显式指定被 参照关系的属性列表的references子句。然而,这个指定的属性列表必须声明为被参照关系 的候选码,要么使用primary key约束,要么使用unique约束。在更为普遍的参照完整性约 束形式中,被参照的属性不必是候选码,这样的形式还能在SQL中直接声明。SQL标准提供了 另外的结构,用于实现这样的约束~~~ ******************************************************************** ******************************************************************** 当违反参照性约束是,通常的处理是拒绝导致完整性破坏的操作(即进行更新操作的事务被回 滚)。但是,在foreign key子句中可以指明,如果被参照关系上的删除或者更新操作违反了 约束,那么系统必须采取一些步骤通过修改参照关系中的元组来恢复完整性约束,而不是拒绝 这样的动作。 create table course ( foreign key (dept_name) references department on delete cascade, on update cascade ); 由于有了与外码声明相关联的on delete cascade子句,如果删除了department中的元组 导致了此参照关系完整性被违法,则删除并不会被系统拒绝,而是对course关系做级联“删除” 类似的,如果更新被参照字段时违反了约束,则更新操作并不被系统拒绝,而是将course中参 照的元组的dept_name字段也改为新值。SQL还允许foreign key子句指明除cascade以外 的其他动作,如果约束被违反:可将参照域置为null(用set null代替cascade),或者置为 域的默认值。 空值使得SQL中参照约束的语义复杂化了。外码中的属性允许为null,只要它们没有被声明为 not null。如果给定元组中外码的所有列上均取非空值,则该院组采用外码约束的通常定义 如果某外码设置为null,则该元组自动被认为满足约束。 ******************************************************************** ******************************************************************** */ /* 4.4.6 事务中对完整性约束的违反 为了处理事务中对完整性约束的违反,SQL标准允许将initially deferred子句加入到 约束声明中:这样完整性约束不是在事务中间步骤上检查,而是在事务结束的时候检查。 对于声明为可延迟的约束,执行set constraints constraint-list deferred作为 事务的一部分,会导致对指定约束的检查被延迟到该事务结束时执行。 可以临时取代的方式是,先插入null,再更新这个null值,前提是数据库允许这样的操作。 */ /* 4.4.7 复杂check条件与断言 一个断言就是一个谓词,它表达了我们希望数据库总能满足的一个条件。域约束和参照 完整性约束是断言的特殊形式。域约束和参照完整性约束就是断言的特殊形式。 案例分析: 1.对于student关系中的每个元组,它在属性tot_cred上的取值必须等于该生所成 功修完课程的学分总和。 2.每位教师不能在同一学期的同一时间段在两个教师授课。 断言语法: create assertion <assertion-name> check <predicate> create assertion credits_earned_constraint check (not exists( select ID from student where tot_cred <>( select sum(credits) from takes natural course where student.ID = takes.ID and grade in not null and grade <>‘F‘); */

 

数据库系统概念:事务、完整性约束

标签:选择   build   void   span   tom   student   语句   执行   mys   

热心网友 时间:2022-05-02 19:41

个人觉得完整性约束优先采用,它是保证关系形数据库中的所有数据值均正确的状态。防止数据库中存在不符合语义规定的数据。如主键约束,规定主键唯一性,非空约束,规定关键字段不能为空,外键约束,规定与其他表关联的外键必须是其他表存在的,这些约束能保证任何新数据的创键都是符合规范的。事务更多是应用在批量数据更新的场景,保证同一事务下所有更新要么一起完成,要么一起取消,从而保证数据完整性。事务和完整性约束都是设置好后系统自动执行的,而触发器则需要开发者手动进行约束,通过插入,更新,删除等事件启动开发者自己的代码,更多是用在业务逻辑处理方面而不是约束方面吧
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我家300多k的网速为什么玩cf总是很迟钝,连切枪都很慢 CF切换枪的速度很慢 ...东西需要输入apple ID密码 我不知道怎么办?更新微信需要appleID_百... ...一遍id苹果手机的每次更新软件都需要输入id和密码请问怎么解决_百度... ...ID 我不知道密码是什么,也不懂怎么申请,想下个软件都下不了... 微信直播王者荣耀有收益吗 王者荣耀新手主播能挣多少 华为是如何进入手机市场的? ...用的那种安在船边上承鱼竿的那个座子中文叫什么?就是下图中的那个... 放在哪里不动钓鱼的叫什么? photoshop钢笔工具建立了一个封闭路径,建立选区时不按路径建立,这是什么情况?怎么办? 我用Photoshop CS6的钢笔工具,在图像上绘制了路径后,点击右键——建立选区,可弹不出窗口 PS为什么钢笔抠好后ctrl+回车建立不了选区?羽化是0. PS用钢笔怎么建立选区?用钢笔画好了怎么找不到建立选取了呢? ps钢笔工具绘制曲线后建立选区的问题 PS钢笔抠完图,建立选区时无法把需要的选区完全选中,这是为什么? ps里面用钢笔工具,建立不了选取,是怎么回事 为什么ps钢笔工具无法建立选区 ps用钢笔扣完图之后不能建立选区了 怎么回事 PS CS6 钢笔工具画完 右键建立选取没反映 求解答! 兄弟7470打印机加粉后有阴影. 求助,兄弟7030打印机打印出来下边有重影什么原因,看图 兄弟1608打印机打印出来有重影? brotherdcp-7060D打印机更换墨粉后出模糊重影怎么办 兄弟的激光打印机,灌墨后打印不清楚还有重影,请问是什么原因? 兄弟7055打印机加粉前没问题加粉后打印重影是什么原因 兄弟2820打印机加完粉后重影是哪里坏了?第一次加粉。 现代都市回家种田文男主叫张贤 种田文,女主爹之前好像是将军,但犯了错就隐居在乡下了,女主家是养鱼的,女主带领全家一步步成长 都市种田文男主完本 我想知道微信上换手机号后,原来的的人,群和钱还在吗? 现在用父亲的手机号注册微信,如果注销后更换自己的手机号,好友还有吗? 想换手机号码,如果换了号码会变吗?原本的好友还在吗? 更换了原先手机号可以在登录微信吗,登录上去所有信息好友还有吗? 想换手机号码,如果换了号码会变吗?原本的好友还在吗? 求解 1.数据库、数据库管理系统、数据库系统、数据库的完整性的概念 3.简述数据库概念模型的定义 宁夏莱米兔文化传媒有限公司怎么样? 桂林市兔子文化传媒有限公司怎么样? 河南飞兔文化传媒有限公司卖的2元纸币是真的吗 南京灰兔文化传媒有限公司怎么样? 池州热兔文化传媒有限公司怎么样? 天门市月牙兔文化传媒有限责任公司怎么样? 济南彼得兔文化传媒有限公司怎么样? 杭州胖兔文化传媒有限公司怎么样? 江门市唯登兔文化传媒有限公司怎么样? 魔兔优创(厦门)文化传媒有限公司怎么样? 打印机连接记忆体设备是什么意思 夏普2658nv报访问记忆体设备时发生错误 打印机无法打印,说记忆体不足,怎么处理? 打印机无法打印说什么记忆体不足是什么意思?什么是记忆体啊?