JDBC 物件類別在最簡單的情況下僅包含單一 (主要) 表格。由於沒有輔助表格,因此無須定義表格之間的關係。
如果物件類別包含多個表格,必須清楚地定義這些表格之間的關係。表格之間的關係一律定義於輔助表格上。輔助表格的下列特性可讓您定義這些關係:
is-single-row-table 指定 LDAP 項目在表格中僅有一個相符列。
contains-shared-entries 指定主要表格中的多個列會使用輔助表格中的某列。
filter-join-rule 指出如何根據主要表格中的項目,從輔助表格中擷取項目。
以下範例說明如何根據前兩個特性的值定義篩選連結規則。這些範例假設物件類別具有一個主要表格與一個輔助表格。
這是這些特性的預設值。在本例中,主要與輔助表格之間的關係為 n->1,亦即主要表格中有 n 列參照輔助表格某一共用列。
關聯式資料庫中,在主要表格中定義外來鍵 (FK),並指向輔助表格的某欄。
例如,在某個機構中,有數名員工與同一位經理共事。將定義兩個關聯式資料庫表格,具有如下結構:
primary table : EMPLOYEE [ID, NAME, FK_MANAGER_ID] secondary table : MANAGER [ID, NAME] |
定義下列物件類別與屬性:
object-class : employee attr : name (from primary EMPLOYEE.NAME) attr : manager (from secondary MANAGER.NAME) |
在輔助表格中定義下列篩選連結規則:
"${ID}=${EMPLOYEE.FK_MANAGER_ID}" |
在此配置下,LDAP 作業的運作方式如下:
增加員工項目。如果表格中的員工項目沒有經理,將新建一列。如果有經理,則使用現有的列。
取代項目中「manager」屬性的值。MANAGER.NAME 列的值遭變更。
刪除員工項目。由於共用經理項目,因此未刪除輔助表格中的該列。
刪除項目的「manager」屬性。刪除輔助表格中的該列,且將外來鍵 (EMPLOYEE.FK_MANAGER_ID) 設為 NULL。
在本例中,主要與輔助表格之間的關係為 1->1 或 1<-1,亦即主要表格中有一列參照輔助表格中某一列。
在關聯式資料庫中,可能會在主要表格或輔助表格中定義外來鍵 (FK) 。
例如,在某個機構中,員工的 UID 儲存在一個表格中,而員工的姓氏則儲存在輔助表格中。將定義兩個關聯式資料庫表格,具有如下結構:
primary table : UID [ID, VALUE, FK_SN_ID] secondary table : SN [ID, VALUE] |
定義下列物件類別與屬性:
object-class : employee attr : uid (from primary UID.VALUE) attr : sn (from secondary ID.VALUE) |
在輔助表格中定義下列篩選連結規則:
"${ID}=${UID.FK_SN_ID}" |
此配置可能相反,外來鍵 FK_UID_ID 儲存在輔助表格中,並指向 UID.ID。
在本例中,主要與輔助表格之間的關係為 1->n,亦即輔助表格有 n 列參照主要表格某一列。此範例說明多值屬性案例。多值屬性在輔助表格中以列集合表示,每個屬性值一列。
關聯式資料庫中,在輔助表格中定義外來鍵,並指向主要表格的某欄。
例如,在某個機構中,每位員工具有數個電話號碼。將定義兩個關聯式資料庫表格,具有如下結構:
primary table : EMPLOYEE [ID, NAME] secondary table : PHONE [ID, VALUE, USER_ID] |
定義下列物件類別與屬性:
object-class : employee attr : cn (from primary EMPLOYEE.NAME) attr : telephoneNumber (from secondary PHONE.VALUE) |
在輔助表格中定義下列篩選連結規則:
"${USER_ID}=${EMPLOYEE.ID}" |
目錄代理伺服器目前不支援此案例。