Salesforce和SAP Netweaver裡資料庫表的元資料設計
從Salesforce官網可以瞭解到Salesforce的force.com平臺裡資料庫表的設計: https://developer.salesforce....
Every logical database object that Force.com exposes is internally managed using metadata. Objects, (tables in traditional relational database parlance), fields, stored procedures, and database triggers are all abstract constructs that exist merely as metadata in Force.com’s Universal Data Dictionary (UDD).
每個force.com暴露出來的邏輯資料庫物件在內部都被metadata元資料管理。資料庫表,表的欄位,儲存過程和資料庫觸發器,在force.com裡只不過都是抽象的實體,以元資料的方式存在於force.com的UDD資料欄位中。
而SAP Netweaver也有類似salesforce force.com的UDD概念,在Netweaver ABAP裡成為ABAP Data Dictionary - DDIC,事務碼SE11開啟。
SAP的資料庫表有design time和runtime執行時的概念。也支援在ABAP程式執行時動態生成新的資料庫表,以及執行時根據資料庫表對應的例項,反方向得到其design time資訊的方法,類似其他程式語言比如Java中的反射,不過在ABAP裡我們不習慣這樣叫,而是稱之為ABAP Run Time Type Identification, 簡稱RTTI。
以上圖顯示的資料庫表TADIR為例,其欄位的元資料都儲存在另一張表DD03L裡。
通過查詢條件TABNAME = TADIR, 即可從資料庫表DD03L裡找到TADIR所有欄位的元資料,包括欄位名,欄位的ABAP data element名稱,內部資料型別和欄位長度等等。
當然大多數時候我們如果需要獲取這些元資料,不需要通過查表的方式,ABAP DDIC給我們提供了豐富的API,這些函式的命名有規律:DD*GET:
而一張表的執行時資訊,通過選單Utilities->Runtime Object->Display檢視:
不過這些資訊一般來說和ABAP應用開發人員關係不大,所以很少留意。
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":