在Oracle9i中定义视图约束

在Oracle9i出现之前,Oracle视图总是从它们的基表(base tables)中动态产生的,并且视图中不能包含约束。通过隐藏所有的内部表格连接操作,Oracle视图可以简化复杂的查询。

例如,下面的视图用以显示五金(widget)产品的订货信息。

create or replace view

widget_orders

as

select

cust_name,

order_date,

product_name,

sum(qty*price) total cost

from

customer

natural join

orders

natural join

order_item

natural join

product

where

product_type = 'widget';

在定义了这个视图之后,我们就能过对它进行复杂的查询。

select * from widget_orders where order_date > sysdate-5;

传统的视图所带来的问题就是我们不能对视图定义参考完整性约束(referential integrity constraints)。从Oracle9i开始,Oracle支持下面的视图约束。

非空(NOT NULL):这个约束总是从创建视图的基表中继承而来的。

唯一性约束(Unique constraints):Oracle9i允许对视图的任意一栏定义唯一性约束。

主键(Primary key):我们可以直接给视图定义主键约束。

外键(Foreign Key):只要视图有依赖于其它基表的外键,那么就会直接存在外键参考完整性。

正如你所知道的那样,对视图的参考完整约束进行管理会极大的影响到查询的性能。

在Oracle9i中,我们能够回避非约束视图所带来的问题。下面的例子对一个视图创建了主键约束。

alter view

widget_orders

add constraint

widget_orders_pk

primary key

(cust_name, order_date, product_name)

disable novalidate;

在Oracle9i出现之前,Oracle视图总是从它们的基表(base tables)中动态产生的,并且视图中不能包含约束。通过隐藏所有的内部表格连接操作,Oracle视图可以简化复杂的查询。

例如,下面的视图用以显示五金(widget)产品的订货信息。

create or replace view

widget_orders

as

select

cust_name,

order_date,

product_name,

sum(qty*price) total cost

from

customer

natural join

orders

natural join

order_item

natural join

product

where

product_type = 'widget';

在定义了这个视图之后,我们就能过对它进行复杂的查询。

select * from widget_orders where order_date > sysdate-5;

传统的视图所带来的问题就是我们不能对视图定义参考完整性约束(referential integrity constraints)。从Oracle9i开始,Oracle支持下面的视图约束。

非空(NOT NULL):这个约束总是从创建视图的基表中继承而来的。

唯一性约束(Unique constraints):Oracle9i允许对视图的任意一栏定义唯一性约束。

主键(Primary key):我们可以直接给视图定义主键约束。

外键(Foreign Key):只要视图有依赖于其它基表的外键,那么就会直接存在外键参考完整性。

正如你所知道的那样,对视图的参考完整约束进行管理会极大的影响到查询的性能。

在Oracle9i中,我们能够回避非约束视图所带来的问题。下面的例子对一个视图创建了主键约束。

alter view

widget_orders

add constraint

widget_orders_pk

primary key

(cust_name, order_date, product_name)

disable novalidate;


    相关文章

    Oracle数据库安全解决方案及技术综述

    Oracle 数据库安全解决方案及技术综述 学 院: 专 业: 学 号: 学生姓名: 指导教师: 日 期: 电子与信息工程学院 xxxxxxxx xxxxxx xxxxx xxxxxx xxxxxxx Oracle 数据库安全解决方案及技术 ...

    网上商城系统设计说明书

    网上商城系统设计 说明书 目录 第一部分:引言 ................................................................................................ ...

    数据库1~9

    -----第一章数据库概述------ 1.以数据为中心的应用系统有哪些特点? 答:涉及的数据量大,数据不随程序的结束而消失,数据可以被多个应用程序共享. 2.用文件系统管理数据的缺点是什么? 答:编写应用程序不方便,数据冗余不可避免,应用 ...

    OracleDBA日常工作手册

    Oracle DBA日常工作手册 概述 .................................................................................................... ...

    3DMAX8.0常用快捷键

    3DMAX8.0常用快捷键 A-角度捕捉开关 B-切换到底视图 C-切换到摄象机视图 D-封闭视窗 E-切换到轨迹视图 F-切换到前视图 G-切换到网格视图 H-显示通过名称选择对话框 I-交互式平移 J-选择框显示切换 K-切换到背视图 ...

    [数据库基础]复习题(选修课)

    第一篇 绪 论 1.试述数据.数据库.数据库系统.数据库管理系统的概念. 答:(1)数据(Data ):描述事物的符号记录称为数据.数据的种类有数字.文字.图形.图像.声音.正文等.数据与其语义是不可分的.(2)数据库(DataBase , ...

    数据库习题

    O 一.单项选择题(从每小题的四个备选答案中,选出一个正确的答 案,并将其代码填入以下表格内.每小题2分,共40 1.下列四项中说法不正确的是( ). A .数据库减少了数据冗余 C .数据库避免了一切数据的重复 数据结构化 数据共享 减少 ...

    数据库实验指导书

    数 据 库 实验指导书 电气与电子工程学院 实 验 项 目 实验一 认识DBMS 及数据库的建立 实验二 实验三 实验四 交互式SQL(数据库查询与更新) 数据控制(安全性部分) 数据控制(完整性部分) 实验一 认识DBMS 及数据库的建立 ...

    软件设计说明书_模板

    XXX项目软件设计说明书 Software design specification Prepared by 拟制 Reviewed by 评审人 Approved by 批准 Date 日期 Date 日期 Date 日期 yyyy-mm ...