Oracle Dimension Object

本文详细介绍了在Oracle数据库中使用维度的概念及其优势,包括如何通过维度支持更高级的查询重写、钻取和聚合操作,以及在非范式和三范式模型中的具体应用。通过实例展示了维度定义的方法,帮助读者深入理解并实践这一关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

创建Dimension的好处是可以支持更高级的Query Rewrite,钻取(Drill down)和聚合(Roll up)。定义了Dimension后,Oracle将能够重用物化视图中的信息,去做出聚合(roll up)或钻取(drill down).
在非范式模型中,上下级关系通常保存在同一个表中,Dimension相应的定义在一个表上。在三范式模型中,上下级关系通常在多个表中,也可以定义Dimension。

例子

下面给出一个非范式模型中的一个例子,你可以在Oracle自带的SH Schema中找到:

CREATE DIMENSION products_dim
LEVEL product IS (products.prod_id)
LEVEL subcategory IS (products.prod_subcategory)
LEVEL category IS (products.prod_category)
HIERARCHY prod_rollup (
product CHILD OF
subcategory CHILD OF
category)
ATTRIBUTE product DETERMINES (products.prod_name, products.prod_desc,  prod_weight_class, prod_unit_of_measure, prod_pack_size, prod_status, prod_list_price, prod_min_price) 
ATTRIBUTE subcategory DETERMINES (prod_subcategory, prod_subcategory_desc) 
ATTRIBUTE category DETERMINES (prod_category, prod_category_desc);

说明:
  • 下级必须有且只有一个上级。比如说某个product只能属于一个subcategory.
  • attribute xxx determines (yyyy)是单向的,即一个xxx对应只有一个yyyy,请注意不是有且只有。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值