應用程式資料使用量

本章說明哪些資料使用案例網域和綱要註解。

資料使用案例網域

資料使用案例網域是屬於綱要並封裝一組選擇性特性和限制條件的高階說明物件。

資料庫通常對應用程式實際使用資料的方式有有限的瞭解。資料庫會使用原始類型 (例如 VARCHAR2、NUMBER 或 DATE) 來儲存資料,而儲存值所代表的知識 (例如,信用卡號碼或出生日期) 僅存在於應用程式層級中繼資料或內容中。此方法可提高個別應用程式複雜性、提升工具和應用程式的片段使用意識,並引進分歧語意的可能性。

過去對此差異的嘗試是將更多用途特定的內建資料類型新增至資料庫,並提供使用者定義的擴充性類型支援。更詳細的資料庫類型系統採用受到限制,因為它們會增加與應用程式語言類型不相符的情況、建立非可攜式應用程式程式碼,以及增加開發複雜性,因為跨不同類型的作業受到限制。

您可以使用 Oracle AI Database 的擴充網域概念 (如「SQL 標準」所定義) 來避免此類資料使用限制。使用此方法,可以同時使用原始資料類型 (例如 NUMBER) 和網域來宣告資料欄,以供資料使用,例如「溫度」或「信用評分」。這類使用案例網域可以選擇性地與不同的使用特性 (例如檢查限制條件、顯示特性、排序規則等) 建立關聯。最重要的是,應用程式可以使用集中式網域資訊來標準化作業,而不需要應用程式層級的中繼資料;例如,若要遮罩信用卡卡號、格式化電話號碼和幣別值、將資料欄中的百分比值顯示為圓餅圖等等。

使用案例網域不會修改基礎資料類型,因此也可在不中斷應用程式或建立可攜性問題的情況下,新增至現有資料。可以針對表格中的一或多個資料欄宣告使用案例網域,也可以用來代表變數使用案例,實際的資料使用情況取決於其他資料欄中的資料。使用案例網域可視為輕量型修正因子,集中記錄應用程式的預期資料使用狀況。此外,使用案例網域也可用來共用註釋。

刪除具有相關使用案例網域的表格會產生與刪除具有相關 PL/SQL 類型的表格不同的結果。當您刪除具有相關使用案例網域或 PL/SQL 類型的表格時,適用下列規則:

使用案例領域的特性:

使用案例網域類型:

嚴格 vs. 非嚴格:

您可以使用 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 綱要註解是一種輕量的宣告式功能,可供開發人員集中註冊資料庫綱要物件的用量特性。註解會與資料模型定義和資料本身一起直接儲存在資料庫的字典表格中,並可供任何應用程式使用,以標準化通用資料的行為,但資料庫不會以任何方式解譯。它們應該被視為資料庫中繼資料的輕量標準化標記,供應用程式用來註冊和處理延伸和自訂的使用特性。

相關主題