OutSystems中的實體關係
在Service Studio中,實體不僅包含業務實體的邏輯定義,還包含其與其他實體的關係。
通過定義單個引用屬性(在資料庫術語中也稱為“外來鍵”)來建立關係。其資料型別是<Entity> Identifier
,對應於另一個實體的Identifier
的型別。引用屬性顯示不同的圖示(取決於關係的型別),這在實體圖中可見。
關係型別包括:
一對一;
一對多;
多對對;
一對一關係
兩個實體之間的一對一關係表示實體A中的一個記錄對應於實體B中的一個記錄,而實體B中的一個記錄在實體A中只有一個相關記錄。
在這種情況下,引用屬性可以在實體A也可以在實體B中。要確定哪個實體包含引用屬性,您必須考慮關係的可選性。當關系的雙方都是強制性的或可選的時,您必須決定應該新增關係的實體,考慮哪個實體共享型別。
現在瞭解如何建立一對一的關係。
示例
假設在您的業務邏輯中,您擁有以下實體:
Contact
ContactPhoto
ContactPhoto
始終屬於 Contact
。 Contact
可以關聯一個ContactPhoto
。這會幫助你定義 Contact
實體。
要實現此關係,ContactPhoto
的主鍵必須是 Contact
主鍵的引用屬性:
一對多關係
兩個實體之間的一對多關係表示實體A中的一個記錄對應於實體B中的多個記錄,但實體B中的一個記錄在實體A中只有一個相關記錄。
在這種情況下,引用屬性必須位於關係的“多的那邊”,即實體B中。
現在我們來了解如何建立一對多關係。
示例
假設在業務邏輯中,您擁有以下實體:
Company
Contact
Company
有一個或多個 Contact
。 Contact
屬於Company
。
要實現此關係,引用屬性必須位於實體Contact
中:
多對多關係
兩個實體之間的多對多關係表示實體A中的一個記錄對應於實體B中的多個記錄,而實體B中的記錄可以在實體A中具有多個關聯記錄。在這種情況下,您必須建立第三個具有至少兩個實體A和實體B的參考屬性的實體。實際上,多對多關係是與該第三實體的兩個一對多關係。
現在我們來了解如何建立多對多關係。
示例
假設,在業務邏輯中您擁有以下實體:
Company Contact
Contact
可以從Company
移出。反過來,Company
可以擁有多個Contact
。
要實現此關係,必須建立第三個實體:CompanyContact
,至少具有以下屬性:
Id
CompanyId
ContactId
引用完整性
在實體A和實體B之間建立關係時,必須指定要在模組中應用的引用完整性機制,即如果刪除實體A中的相應記錄,則必須在實體B中發生什麼。在OutSystems中,此行為由引用屬性的“刪除規則”屬性定義。
關係索引
定義引用屬性後,將自動建立索引以提高模組的效能。呼叫此索引:
AutoIndex_<reference attribute name>
並涵蓋實現關係的引用屬性。您不應該刪除此索引。如果這樣做,Service Studio會顯示警告,通知您此操作可能對效能產生的影響。