SAP CDS 是 SAP HANA 数据库中的一种新的数据定义语言。它容许开发者定义语义富裕的数据模型,这些数据模型能够以数据库独立的形式在 ABAP 服务器上应用。因而,通过 CDS,开发者能够创立简单的视图来构建 ABAP 程序或利用。
关联(Association)在 CDS 视图中是一个十分重要的概念。它在 CDS 视图中定义了两个实体(例如,两个数据库表或者两个 CDS 视图)之间的关系。这些实体通过某个特定字段(通常是主键和外键)相互连接。在定义关联时,咱们须要指定关联的指标(也就是要关联的另一个实体),以及如何通过特定字段建设这两个实体之间的关联。
而后,咱们来探讨 "exposed association"。"Exposed association" 是 SAP CDS 的一个个性,容许咱们在定义 CDS 视图时明确地裸露或暗藏关联。这意味着,咱们能够抉择是否将定义的关联公开给 CDS 视图的消费者(例如,其余的 CDS 视图或者 ABAP 程序)。如果咱们抉择裸露关联,那么消费者就能够间接通过这个关联拜访到关联的指标实体的数据。否则,如果咱们抉择暗藏关联,那么消费者就无奈间接拜访到关联的指标实体的数据。
下图高亮的 _scarr
就是 exposed association 的一个具体例子。
接下来,咱们通过一个例子来具体解释 "exposed association"。假如咱们有两个数据库表:Orders
(订单)和 Customers
(客户)。每个订单都有一个关联的客户。咱们心愿定义一个 CDS 视图,该视图蕴含订单的详细信息,以及与每个订单关联的客户的名称。咱们能够这样定义这个 CDS 视图:
@AbapCatalog.sqlViewName: `V_ORDERS_AND_CUSTOMERS`@AbapCatalog.compiler.compareFilter: true@AccessControl.authorizationCheck: #CHECK@EndUserText.label: `Orders and Customers`define view Orders_And_Customers as select from Orders as o association [0..1] to Customers as _Customer on $projection.CustomerID = _Customer.CustomerID{ o.OrderID, o.Product, o.Quantity, o.CustomerID, _Customer as Customer}
在这个例子中,咱们在 CDS 视图 Orders_And_Customers
中定义了一个关联 _Customer
,它连贯了 Orders
和 Customers
这两个实体。咱们通过 CustomerID
这个字段建设了这个关联。而后,咱们在 CDS 视图的输入字段中蕴含了这个关联 _Customer
。这样,咱们就裸露了这个关联,使得 CDS 视图的消费者能够间接通过这个关联拜访到 Customers
表的数据。