当前位置:首页 » 操作系统 » 数据库冗长

数据库冗长

发布时间: 2023-08-15 14:43:35

‘壹’ 数据库中,如何保证数据完整性

保证数据的完整性:
1. 用约束而非商务规则强制数据完整性

如果你按照商务规则来处理需求,那么你应当检查商务层次/用户界面:如果商务规则以后发生变化,那么只需要进行更新即可。

假如需求源于维护数据完整性的需要,那么在数据库层面上需要施加限制条件。

如果你在数据层确实采用了约束,你要保证有办法把更新不能通过约束检查的原因采用用户理解的语言通知用户界面。除非你的字段命名很冗长,否则字段名本身还不够。 — Lamont Adams

只要有可能,请采用数据库系统实现数据的完整性。这不但包括通过标准化实现的完整性而且还包括数据的功能性。在写数据的时候还可以增加触发器来保证数据的正确性。不要依赖于商务层保证数据完整性;它不能保证表之间(外键)的完整性所以不能强加于其他完整性规则之上。

— Peter Ritchie

2. 分布式数据系统

对分布式系统而言,在你决定是否在各个站点复制所有数据还是把数据保存在一个地方之前应该估计一下未来5 年或者10 年的数据量。当你把数据传送到其他站点的时候,最好在数据库字段中设置一些标记。在目的站点收到你的数据之后更新你的标记。为了进行这种数据传输,请写下你自己的批处理或者调度程序以特定时间间隔运行而不要让用户在每天的工作后传输数据。本地拷贝你的维护数据,比如计算常数和利息率等,设置版本号保证数据在每个站点都完全一致。

— Suhair TechRepublic

3. 强制指示完整性

没有好办法能在有害数据进入数据库之后消除它,所以你应该在它进入数据库之前将其剔除。激活数据库系统的指示完整性特性。这样可以保持数据的清洁而能迫使开发人员投入更多的时间处理错误条件。

— kol

4. 关系

如果两个实体之间存在多对一关系,而且还有可能转化为多对多关系,那么你最好一开始就设置成多对多关系。从现有的多对一关系转变为多对多关系比一开始就是多对多关系要难得多。

— CS Data Architect

5. 采用视图

为了在你的数据库和你的应用程序代码之间提供另一层抽象,你可以为你的应用程序建立专门的视图而不必非要应用程序直接访问数据表。这样做还等于在处理数据库变更时给你提供了更多的自由。

— Gay Howe

6. 给数据保有和恢复制定计划

考虑数据保有策略并包含在设计过程中,预先设计你的数据恢复过程。采用可以发布给用户/开发人员的数据字典实现方便的数据识别同时保证对数据源文档化。编写在线更新来“更新查询”供以后万一数据丢失可以重新处理更新。

— kol

7. 用存储过程让系统做重活

解决了许多麻烦来产生一个具有高度完整性的数据库解决方案之后,我所在的团队决定封装一些关联表的功能组,提供一整套常规的存储过程来访问各组以便加快速度和简化客户程序代码的开发。在此期间,我们发现3GL 编码器设置了所有可能的错误条件,比如以下所示:

SELECT Cnt = COUNT (*)

FROM [<Table>]

WHERE [<primary key column>] = <new value>

IF Cnt = 0

BEGIN

INSERT INTO [<Table>]

( [< primary key column>] )

VALUES ( <New value> )

END

ELSE

BEGIN

<indicate plication error>

END

而一个非3GL 编码器是这样做的:

INSERT INTO [<Table>]

( [< primary key column>] )

VALUES

( <New value> )

IF @@ERROR = 2627 -- Literal error code for Primary Key Constraint

BEGIN

<indicate plication error>

END

第2 个程序简单多了,而且事实上,利用了我们给数据库的功能。虽然我个人不喜欢使用嵌入文字(2627)。但是那样可以很方便地用一点预先处理来代替。数据库不只是一个存放数据的地方,它也是简化编码之地。

— a-smith

8. 使用查找

控制数据完整性的最佳方式就是限制用户的选择。只要有可能都应该提供给用户一个清晰的价值列表供其选择。这样将减少键入代码的错误和误解同时提供数据的一致性。某些公共数据特别适合查找:国家代码、状态代码等

‘贰’ 什么是数据的完整性

数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。

数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或错误信息。保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。数据完整性因此而提出。

存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。

数据库采用多种方法来保证数据完整性,包括外键、约束、规则和触发器。系统很好地处理了这四者的关系,并针对不同的具体情况用不同的方法进行,相互交叉使用,相补缺点。

(2)数据库冗长扩展阅读:

数据完整性由以下三个方面构成:

1、域完整性:

是指一个列的输入有效性,是否允许为空值。强制域完整性的方法有:限制类型、格式或可能值的范围。

2、实体完整性:

是指保证表中所有的行唯一。实体完整性要求表中的所有行都有一个唯一标识符。这个唯一标识符可能是一列,也可能是几列的组合,称为主键。也就是说,表中的主键在所有行上必须取唯一值。

3、参照完整性:

是指保证主关键字和外部关键字之间的参照关系。它涉及两个或两个以上表数据的一致性维护。

外键值将引用表中包含此外键的记录和被引用表中主键与外键相匹配的记录关联起来。在输入、更改或删除记录时,参照完整性保持表之间已定义的关系,确保键值在所有表中一致。

参考资料来源:网络-数据完整性

‘叁’ 学习C语言,计算机编程的过程是如何学这两样这两样的所有必学科目,课程,内容是我洪鲲如何学会,

C语言已经成为最重要和最流行的编程语言之一,C语言是学习编程语言的基础。使用C语言的开发过程主要包括:需求分析、程序设计、代码编写、编译、运行、测试和调试、维护和修改七个过程。

工具材料:
电脑
C语言
操作方法
01
需求分析,在开始工作之前,自然是要对要完成的程序的功能是什么有一个明确的定位,也就是需求分析,分析需要为程序提供哪些信息。

02
程序设计,在明确程序的工作目标之后,正式开始编写程序之前,需要对程序有一个总体的设计,对程序工作流程、可能会用到的数据、用户界面设计等进行较为清晰的设计。

03
代码编写,代码编写就是用C语言把程序设计部分的设计内容表现出来。

04
编译,编辑就是将C语言通过编译器编译成为电脑可以识别的机器语言的过程。程序没有语法错误就可以通过编译生成可执行文件,有错则需要不断修改直到通过编译。

05
运行,编译完成后生成的可执行文件后,就可以运行程序了。

06
测试和调试,运行可执行文件后,我们可以选取一些知道运行结果的例子,对程序的运行结果进行测试,如果和我们的预期结果相符则程序正确,如果不相符则需要我们返回代码编译过程,查找代码编写的漏洞,然后再次进行编译、运行和测试过程。

07
虽然程序通过了测试,但是在实际运行过程中可能还会出现各种我们不能预知的情况,所以在实际运行中仍然需要我们对各种突发状况进行处理,通过对程序的维护和修改来不断完善代码漏洞。

‘肆’ sql server 2000收缩数据库总是发生死锁

出现死锁的情况:
1). 不按同一顺序访问对象。(注:出现循环)
2). 事务中的用户交互。(注:增加持有资源的时间,较多锁竞争)
3). 事务冗长并处于多个批处理中。(注:增加持有资源的时间)
4). 使用较高的隔离级别。(注:使用较低的隔离级别(例如已提交读))
5). 不使用基于行版本控制的隔离级别:2005中支持快照事务隔离和指定READ_COMMITTE
隔离级别的事务使用行版本控制,可以将读与写操作之间发生的死锁几率降至最低。
6). 不使用绑定连接。

解决办法:
使用SET LOCK_TIMEOUT timeout_period(单位为毫秒)来设定锁请求超时。默认情况下,数据库没有超时期限(timeout_period值为-1,可以用SELECT @@LOCK_TIMEOUT来查看该值,即无限期等待)。当请求锁超过timeout_period时,将返回错误。timeout_period值为0时表示根本不等待,一遇到锁就返回消息。设置锁请求超时,破环了死锁的第二个必要条件(请求与保持条件)。

压缩文件,我觉得这样比较好,
use 数据库名;
select * from sys.database_files
dbcc shrinkfile(2,1) --前者参数1代表主数据文件,2代表日志文件;后者参数是大小

‘伍’ 什么是闪回技术啊主要内容有哪些啊

为了使oracle数据库从任何逻辑误操作中迅速恢复,Oracle 数据库10g 提供了一系列人为错误更正技术,称为闪回。闪回从根本上改变了数据恢复。过去,数据库在几分钟内就可能损坏,但需要几小时才能恢复。利用闪回技术,更正错误的时间与错误发生时间几乎相同。而且它非常易用,使用一条短命令便可恢复整个数据库,而不必执行复杂的程序。闪回技术提供了一个 SQL 界面,能够快速分析和修复人为错误。闪回技术为本地数据损坏提供了细粒度外部分析和修复,如当错误删除客户订单时。闪回技术还支持修复更多广泛的损坏,同时快速避免长时间停机,如当本月的所有客户订单都被删除时。闪回技术是 Oracle 数据库独有的特性,支持各级恢复,包括行、事务、表、表空间和数据库范围。
1 闪回查询
在Oracle 9i之前,如果用户错误操作数据后,除了不完全恢复外,没有好的解决办法。Oracle 9i中提供闪回查询,由一个新的包DBMS_FLASH来实现。用户使用闪回查询可以及时取得误操作DML(Delete、Update、Insert)前某一时间点数据库的映像视图,用户可以利用系统时间或系统改变号(SCN:System Change Number)来指定这个只读视图,并可以针对错误进行相应的恢复措施。闪回查询功能完全依赖于自动回滚段管理(AUM),对于Drop等误操作不能恢复。闪回特性可应用在以下方面:
(1)自我维护过程中的修复:当一些重要的记录被意外删除,用户可以向后移动到一个时间点,查看丢失的行并把它们重新插入现在的表内恢复。
(2)恢复Email和声音Email:当用户意外删除了Email或者声音信息时,可以通过移回到固定时间点来恢复删除。
(3)账号平衡状况:可以查看以前的历史数据。如银行外币管理中用于记录特定时间的汇率。在以前,汇率变更被记录在一个历史表中,现在就可以通过闪回功能进行查询。
(4)用于趋势分析的决策支持系统:决策支持系统和联机分析应用必须执行一个长时间的事务。使用闪回查询,这些应用可以对历史数据执行分析和建模。例如,特定产品如矿泉水随季节变化需求情况的变化。

2 闪回版本查询
闪回版本查询提供了一种查看行级数据库变化的方法。它是 SQL 的扩展,支持以特定时间间隔检索所有不同版本的行。例如:
Select * from EMPLOYEE versions between ‘2:00 PM’ and ‘3:00 PM’ where …
该语句显示出今天下午 2 点至 3 点之间该行的各版本,每个版本都由不同的事务所更改。使用 DBA 可指出数据何时、如何被更改的,并追溯到用户、应用程序或事务。这使得 DBA 可以跟踪数据库中的逻辑破坏并加以更正。它还让应用开发人员能够对其代码进行调试。

3 闪回事务查询
闪回事务查询提供了一种查看事务级数据库变化的方法。它是 SQL 的扩展,能够看到事务带来的所有变化。例如:
Select * from DBA_TRANSACTION_QUERY where xid = ‘000200030000002D’;
该语句显示出该事务引起的结果性变化。此外,返回补充 SQL 语句,并用于撤消由事务引起的各行变化。使用精密工具(如 DBA),应用开发人员可以精确地诊断和更正数据库或应用中的逻辑问题。

4 闪回数据库
要将 Oracle 数据库恢复到以前的时间点,传统方法是进行时间点恢复。然而,时间点恢复需要用数小时甚至几天的时间,因为它需要从备份中恢复整个数据库,并恰好恢复到数据库发生错误前的时间点。由于数据库的大小不断增长,因此需要用数小时甚至几天的时间才能恢复整个数据库。 闪回数据库是进行时间点恢复的新战略。它能够快速将 Oracle 数据库恢复到以前的时间,以正确更正由于逻辑数据损坏或用户错误而引起的任何问题。闪回日志可用于捕获旧版本的变化块。一种方法是不间断备份或存储快照。当需要执行恢复时,可快速重放闪回日志,以将数据库恢复到错误前的时间点,并且只恢复改变的块。这一过程非常快,可将恢复时间从数小时缩短至几分钟。此外,它还非常易用。通过发出以下简单的命令,可将数据库恢复到 2:05 PM。
FLASHBACK DATABASE to ‘2:05 PM’;
它的使用不要求进行磁带恢复,没有冗长的停机时间,没有复杂的恢复过程。您还可以使用闪回,然后以只读方式打开数据库,并检查其内容。如果您确定闪回过远或不足,您可以重新发出闪回命令,以找到数据库损坏前的正确时间点。闪回同时与 Data Guard 相集成,因此您可以一起闪回生产和待机数据库(参见以下数据保护部分)。
闪回数据库就像是为数据库安装了一个倒回或撤消按钮。

5 闪回表
使用该特性,可以确保数据库表能够被恢复到之前的某一个时间点上。注意,该功能与最早的Oracle 9i中的Flashback Query不同,Flashback Query仅是得到了表在之前某个时间点上的快照而已,并不改变当前表的状态;而Falshback Table却能够将表及附属对象一起回到以前的某个时间点。该功能基于撤销数据(undodata)。

6 闪回删除
无意丢弃或删除数据库是人们经常会犯的错误。经常听到 Oracle 支持人员说:“在我删除那个表时,我以为我已经连接到了测试数据库。”用户已认识到他们错了,但已经太晚了,没有办法轻松恢复被删除的表及其索引、约束和触发器。对象一旦被删除就永远被删除了。如果真是重要的表或其它对象(如索引、分区或集簇),DBA 不得不执行时间点恢复,但这非常耗时,而且会导致丢失最近的事务。 闪回删除针对删除 Oracle 数据库 10g 中的对象提供了一个安全网络。当用户删除一个表,Oracle 会将它放到垃圾箱中。垃圾箱中的对象一直会保留,直到用户决定永久删除它们或包含该本的表空间不足。垃圾箱是一个虚拟容器,用于存放所有被删除的对象。用户可以查看垃圾箱,“撤消”被删除的表及其相关的对象。例如,可以发出以下命令来“撤消”雇员信息表及其所有相关对象。
FLASHBACK TABLE employee BEFORE DROP;
闪回删除就像是为一个表及其相关对象安装了一个撤消按钮。

热点内容
云计算机服务器区别 发布:2025-03-10 21:10:21 浏览:233
古代锦衣卫需要哪些配置 发布:2025-03-10 21:06:17 浏览:617
ps样式在的文件夹 发布:2025-03-10 20:50:07 浏览:613
图像压缩编码算法 发布:2025-03-10 20:48:23 浏览:385
堕落解压缩码 发布:2025-03-10 20:46:55 浏览:625
做影视网站用什么服务器 发布:2025-03-10 20:44:51 浏览:260
oracle调用存储过程语法 发布:2025-03-10 20:39:56 浏览:983
ps图层样式文件夹 发布:2025-03-10 20:38:05 浏览:411
php幂 发布:2025-03-10 20:38:04 浏览:916
压缩裤性感 发布:2025-03-10 20:24:34 浏览:763