應用程式資料使用量
本章說明哪些資料使用案例網域和綱要註解。
-
資料使用案例網域:資料使用案例網域是屬於綱要並封裝一組選擇性特性和限制條件的高階說明物件。
-
綱要註解對許多應用程式而言,維護表格、視觀表、表格資料欄、索引以及網域等資料庫物件的其他特性描述資料是很重要的。
資料使用案例網域
資料使用案例網域是屬於綱要並封裝一組選擇性特性和限制條件的高階說明物件。
資料庫通常對應用程式實際使用資料的方式有有限的瞭解。資料庫會使用原始類型 (例如 VARCHAR2、NUMBER 或 DATE) 來儲存資料,而儲存值所代表的知識 (例如,信用卡號碼或出生日期) 僅存在於應用程式層級中繼資料或內容中。此方法可提高個別應用程式複雜性、提升工具和應用程式的片段使用意識,並引進分歧語意的可能性。
過去對此差異的嘗試是將更多用途特定的內建資料類型新增至資料庫,並提供使用者定義的擴充性類型支援。更詳細的資料庫類型系統採用受到限制,因為它們會增加與應用程式語言類型不相符的情況、建立非可攜式應用程式程式碼,以及增加開發複雜性,因為跨不同類型的作業受到限制。
您可以使用 Oracle AI Database 的擴充網域概念 (如「SQL 標準」所定義) 來避免此類資料使用限制。使用此方法,可以同時使用原始資料類型 (例如 NUMBER) 和網域來宣告資料欄,以供資料使用,例如「溫度」或「信用評分」。這類使用案例網域可以選擇性地與不同的使用特性 (例如檢查限制條件、顯示特性、排序規則等) 建立關聯。最重要的是,應用程式可以使用集中式網域資訊來標準化作業,而不需要應用程式層級的中繼資料;例如,若要遮罩信用卡卡號、格式化電話號碼和幣別值、將資料欄中的百分比值顯示為圓餅圖等等。
使用案例網域不會修改基礎資料類型,因此也可在不中斷應用程式或建立可攜性問題的情況下,新增至現有資料。可以針對表格中的一或多個資料欄宣告使用案例網域,也可以用來代表變數使用案例,實際的資料使用情況取決於其他資料欄中的資料。使用案例網域可視為輕量型修正因子,集中記錄應用程式的預期資料使用狀況。此外,使用案例網域也可用來共用註釋。
刪除具有相關使用案例網域的表格會產生與刪除具有相關 PL/SQL 類型的表格不同的結果。當您刪除具有相關使用案例網域或 PL/SQL 類型的表格時,適用下列規則:
-
如果在沒有
PURGE子句的情況下刪除表格,資源回收筒 (如果已啟用資源回收筒) 中仍可使用該表格進行未來的回復。 -
如果表格具有使用 PL/SQL 類型或抽象資料類型的資料欄,以及另一個與使用案例網域關聯的資料欄,則:
-
使用
FORCE子句刪除使用案例網域時,仍然允許回復表格。使用案例網域只會與資料欄取消關聯。 -
若刪除含有或不含
FORCE子句的 PL/SQL 類型,將會從資源回收筒整個清除表格,因為表格無法完全回復。
-
使用案例領域的特性:
-
限制條件 - 網域可用來在多個表格和資料欄之間共用限制條件。您可以針對可延緩的限制條件停用這些限制條件。網域中不允許主索引鍵和外來索引鍵限制條件。
-
資料類型 - 允許所有內建的 Oracle 資料類型,但長期、長期的原始和物件類型除外。
-
預設表示式 - 允許使用與資料欄預設值相同的預設表示式。
-
不區分大小寫和輕重音的搜尋 - 網域允許在
WHERE和ORDER BY子句中使用不區分大小寫的搜尋。 -
顯示表示式 - 顯示表示式允許自訂顯示規則。例如,以區域格式顯示貨幣。
-
順序表示式 - 順序表示式允許複雜排序。例如,依標準化標準化標準業務幣別 (如美元金額) 排序。
使用案例網域類型:
-
單一資料欄 - 適用於單一資料欄。
-
多欄 - 適用於多個欄,例如貨幣。
-
彈性網域 - 根據其他網域,且必須與子網域相容的資料類型。例如不同國家 / 地區的地址格式。
-
列舉 - 包含一組名稱 (選擇性) 與對應名稱的值。
嚴格 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 機制 (包括表格資料欄、表格、索引等) 來新增自訂特性。應用程式通常需要維護額外的特性中繼資料,特別是用於呈現使用者介面或自訂應用程式邏輯。
資料欄層次使用特性的部分範例包括:
-
顯示標籤:這可能與資料欄名稱不同 (例如,顯示標題「薪資」與名為 Employee_Salary 的資料欄)
-
資料欄群組:在許多情況下,「群組」資料欄會對使用者介面感興趣 (例如,將「街道號碼」、「街道名稱」、「縣 / 市」及「郵遞區號」資料欄組成「地址」群組)。
-
格式遮罩:例如,使用者介面工具可以使用
$99,999.99的顯示遮罩,將 56434 轉換為$56,434.00 -
隱藏:是否要將使用者介面中的資料欄顯示給一般使用者 (例如,不要將含有機密資訊的資料欄或系統新增的資料欄顯示給特定類別的一般使用者)
-
突顯 :要不要在欄位上顯示特殊突顯
-
允許的作業:讓介面決定是否允許資料欄支援排序、分組、顯示值清單等等。
表格層次使用特性類似於用來協助應用程式記錄表格是否包含機密資訊、其顯示名稱為何、應用程式中由其擁有或管理的模組等等。
大多數應用程式會為此類型的用量中繼資料建立自己的儲存庫,進而導致開發人員的複雜性以及跨應用程式、模組和微服務的差異。
Oracle AI Database 綱要註解是一種輕量的宣告式功能,可供開發人員集中註冊資料庫綱要物件的用量特性。註解會與資料模型定義和資料本身一起直接儲存在資料庫的字典表格中,並可供任何應用程式使用,以標準化通用資料的行為,但資料庫不會以任何方式解譯。它們應該被視為資料庫中繼資料的輕量標準化標記,供應用程式用來註冊和處理延伸和自訂的使用特性。
相關主題