Oracle Dimension Object

介绍

创建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,请注意不是有且只有。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库中,您可以通过以下步骤定义对象类型: 1. 创建对象类型: ```sql CREATE TYPE type_name AS OBJECT ( attribute1 datatype, attribute2 datatype, ... ); ``` 在上面的语句中,`type_name`是您要创建的对象类型的名称。`attribute1`、`attribute2`等是该对象类型的属性名称,`datatype`是每个属性的数据类型。 2. 创建对象类型的表(可选): ```sql CREATE TABLE table_name OF type_name; ``` 如果您希望在表中存储该对象类型的实例,可以使用`CREATE TABLE ... OF`语句创建一个对象表。 3. 添加方法(可选): ```sql CREATE TYPE BODY type_name AS MEMBER PROCEDURE procedure_name (parameters) IS -- 方法体 END; MEMBER FUNCTION function_name (parameters) RETURN datatype IS -- 方法体 END; END; ``` 通过创建一个对象类型的主体(type body),您可以为该对象类型定义方法。方法可以是成员过程(MEMBER PROCEDURE)或成员函数(MEMBER FUNCTION),并且可以接受参数和返回值。 4. 使用对象类型: 现在,您可以在其他表中使用对象类型的属性,或者在对象表中插入对象实例。 ```sql -- 在表中使用对象类型的属性 CREATE TABLE employees ( employee_id NUMBER, employee_data type_name ); -- 在对象表中插入对象实例 INSERT INTO table_name VALUES (type_name(value1, value2, ...)); ``` 这些是定义Oracle对象类型的基本步骤。通过创建自定义的对象类型,您可以在Oracle数据库中定义更复杂、更灵活的数据结构,并根据需要添加方法来操作这些对象类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值