读书人

数据库中三大有关问题:约束、CASE语句

发布时间: 2012-07-26 12:01:08 作者: rapoo

数据库中三大问题:约束、CASE语句和文件(转)

本文用实例方式讲述了关于约束、CASE语句和文件三大问题。

约束

“定义为可延迟(deferrable)”的约束能指定为:

?

1. initially immediate(初始化即时执行)或

2. initially deferred(初始化延迟执行)。

?

知道什么是延迟约束,但不明白什么叫“初始化即时执行的可延迟约束”和“初始化延迟执行的可延迟约束”。请解释二者的差别。更有,这些约束有什么用途?这是通常容易混淆的问题。我希望下面的例子能解释清晰。初始化即时执行/延迟执行规定了在默认情况下应该怎么执行约束:

?

初始化即时执行:在每条语句执行结束时检验约束。

?

初始化延迟执行:直等到事务完成后(或调用set constraint immediate语句时)才检验约束。

?

通过代码分析两者不同:

?

decode(sign(sysdate-timestamp-1/24),-1,            round(24*60*(sysdate-timestamp))            || ’ minutes old ’,            decode(sign(sysdate-timestamp - 1), -1,            round(24*(sysdate-timestamp))            || ’ hours old ’,            decode(sign(sysdate-timestamp-14),-1,            trunc(sysdate-timestamp)            || ’ days old ’,            decode(sign(sysdate-timestamp-60),-1,            trunc((sysdate-timestamp)/7)            || ’ weeks old ’,            decode(sign(sysdate-timestamp-365),-1,            round(months_between            (sysdate,timestamp))            || ’ months old ’,            round(months_between            (sysdate,timestamp)/12,            1)            || ’ years old ’            ))))) age

他和CASE语句的功能完全相同,只是不太明显。

?

文件

我正在考虑为一个应用程式设计些选项,利用他用户能上传和存储可供他人下载的文件。文件能是平均大小为150Kb的Microsoft Word文件。最初需要(从CD)移植18000到20000个文件,当使用该应用程式时存储数量会增加到大约25000个文件。浏览器前端是用于上传和下载的PL/SQL插件(PL/SQL cartridge)页面。一开始,会有400到500人几乎同时访问该应用程式,两周内每天将有300人访问(分散访问)。 文件本身在数据库中作为BLOB存储。

?

从使用方面考虑,你觉得这样的选项好吗?他会过多占用系统全局区(SGA)吗?考虑到应用程式的需求及前端(基于浏览器),除了保存为BLOB,更有没有其他选择,如文件系统?

?

我什么都存在数据库里。就是这样。如果数据就是你的一切,无论他们有什么样的值,事实上都要放到数据库中,在那里数据能得到专业化的管理、备份,恢复而且安全。除了这些实实在在的好处,你还能索引及搜索文件。(诚然,用文件系统也能做这些,但在索引和文件之间不存在完整性。)在数据库中,你能转换文件格式(例如,上传一个DOC文件,而显示为HTML格式)。你的数据是完全集成的、安全的、有备份的而且随时供你使用。

?

在Oracle公司内部,我们将一个几千G字节的数据库作为整个公司的一个单一的文件服务器。公司所有文件都存在那里,存在这样一个单一的地方,能对这些文件进行备份、搜索、建立索引和访问。在常规的文件系统中管理成千上万的文件是不可能的。

  • http://www.sudu.cn/info/html/edu/20080402/257105.html

    以上内容由 华夏名网 搜集整理,如转载请注明原文出处,并保留这一部分内容。

  • 读书人网 >其他数据库

    热点推荐