应用程序数据使用量

本章介绍了哪些数据用例域和方案注释。

数据用例域

数据用例域是属于方案并封装一组可选属性和约束的高级字典对象。

数据库通常对应用程序实际使用数据的理解有限。数据库使用基元类型(例如 VARCHAR2、NUMBER 或 DATE)存储数据,而存储值表示(例如,信用卡号或出生日期)仅存在于应用程序级别的元数据或上下文中。此方法可提高单个应用程序的复杂性,在工具和应用程序中对使用情况的了解,并引入了不同语义的可能性。

过去试图消除这种差异的尝试是向数据库添加更多特定于使用情况的内置数据类型,并为用户定义的类型提供可扩展性支持。更复杂的数据库类型系统采用率有限,因为它们增加了与应用程序语言类型的不匹配,创建了不可移植的应用程序代码,并增加了开发复杂性,因为跨不同类型的操作受到限制。

通过使用 SQL 标准定义的 Oracle AI Database 扩展域概念,可以避免对表示数据使用的此类限制。使用此方法,既可以使用基元数据类型(例如 NUMBER)声明列,也可以使用用于数据使用的域(例如“温度”或“信用评分”)声明列。此类用例域可以选择性地与不同的用例属性关联,例如检查约束、显示属性、排序规则等。最重要的是,应用程序可以使用集中式域信息来标准化操作,而无需应用程序级元数据;例如,屏蔽信用卡号、设置电话号码和货币值的格式、将列中的百分比值显示为饼图等。

用例域不修改底层数据类型,因此也可以在不破坏应用程序或创建可移植性问题的情况下添加到现有数据。可以为表中的一个或多个列声明用例域,也可以用于表示可变用例方案,其中数据的实际用法取决于其他列中的数据。用例域可以被视为轻量级类型修饰符,用于集中记录应用程序的预期数据使用情况。此外,使用场景域还可以用于共享注释。

删除具有关联用例域的表会产生与删除具有关联 PL/SQL 类型的表不同的结果。删除具有关联用例域或 PL/SQL 类型的表时,适用以下规则:

使用案例域的特点:

用例域类型:

严格与非严格:

您可以使用 Oracle SQL 创建枚举域。与常规域不同,枚举域具有默认的 CHECK 约束条件和显示表达式。只要标量 SQL 表达式中允许使用文字,便可使用枚举域内的名称,并且可以在 SELECT 语句的 FROM 子句中使用域本身,就像它是表一样。枚举域是一种特殊类型的使用域,可以像任何单列域一样使用。

枚举域由一组名称和(可选)与名称对应的值组成。名称必须是有效的 SQL 标识符,并且每个指定的值都必须是文字值,或者,如果是多列枚举,则必须为文字列表。虽然这些值可以是数据用例域支持的任何数据类型,但它们都必须具有相同的数据类型。

例如,以前被授予 CREATE DOMAIN 权限的用户 SCOTT 为职务名称创建单列枚举域。

CREATE DOMAIN Job_Title AS
  ENUM (
    Clerk                  = 'CLERK',
    Salesman = SalesPerson = 'SALESMAN',
    Manager                = 'MANAGER',
    Analyst                = 'ANALYST',
    President              = 'PRESIDENT'
  );

现在,在创建 EMP 表时,可以将域 Job_Title 用作数据类型。例如:

CREATE TABLE emp
( empno     NUMBER(4)     CONSTRAINT emp_pk PRIMARY KEY,
  ename     VARCHAR2(10),
  job       Job_Title,
  mgr       NUMBER(4)     CONSTRAINT emp_mgr_fk REFERENCES emp(empno),
  hiredate  DATE,
  sal       NUMBER(7,2)
);

插入新数据行时,枚举的域可用于指定 JOB 列的值。以下三个 INSERT 语句是等效的。

INSERT INTO emp VALUES (8000, 'PATEL', Job_Title.Salesman, 7698, TO_DATE('11-MAR-2024', 'DD-MON-YYYY'), 3500);
INSERT INTO emp VALUES (8000, 'PATEL', Job_Title.SalesPerson, 7698, TO_DATE('11-MAR-2024', 'DD-MON-YYYY'), 3500);
INSERT INTO emp VALUES (8000, 'PATEL', 'SALESMAN', 7698, TO_DATE('11-MAR-2024', 'DD-MON-YYYY'), 3500);

相关主题

方案注释

对于许多应用程序,维护数据库对象(如表、视图、表列、索引和域)的其他属性元数据非常重要。

虽然域包括内置的使用属性(如检查约束条件、整理、定制排序顺序等),但为了实现可扩展性,Oracle 数据库还提供了通过 ANNOTATIONS 机制为数据库元数据(包括表列、表、索引等)添加定制属性的功能。应用程序通常需要维护其他属性元数据,特别是用于呈现用户界面或定制应用程序逻辑。

列级使用属性的一些示例包括:

表级使用属性同样可用于帮助应用程序记录表是否包含敏感信息、其显示名称应是什么、其拥有或管理的应用程序中的哪些模块等等。

大多数应用程序会为此类使用元数据创建自己的资料档案库,从而导致开发人员复杂性,并可能导致应用程序、模块和微服务之间存在差异。

Oracle AI Database Schema annotations 是一个轻量级声明工具,可供开发人员集中注册数据库方案对象的使用属性。注释直接存储在数据库中的字典表中以及数据模型定义和数据本身,并且可供任何应用程序使用,以便对公用数据的行为进行标准化,但数据库不会以任何方式进行解释。它们应被视为数据库元数据的轻量级标准化标记,供应用程序用来注册和处理扩展和定制使用属性。

相关主题