重復上面的步驟指定下面的候選鍵:
Order Detail: Order Detail Id Product: Product Id
你能夠在任何非空標記的實體上產生一些或者所有的屬性。
實體關系:強關聯你現在有了具有完整屬性的實體了,并通過代理鍵和候選鍵分配了主鍵的值。然而,超市數據庫的設計還不是非常完整。你還沒有引入任何在實體之間的關聯 - 在實體關系圖中你有責任產生的實體之間的"關系"。為了完成這個,在 Toolbox 視圖中從 UML Class 面板中使用各種關聯。
首先,看一下在 Order 和 Order Detail 之間的關聯。這是一個典型的父-子關系:如果沒有父 Order,將不會有 Order Detail 的存在。在 Data Modeler 中,這是一個強關聯。使用工具欄中的 Composition Association 關聯來表示它。
1. 選擇邏輯數據模型圖。
2. 在 UML Class 面板上點擊一下 Composition Association 。
3. 在圖中的 Order 實體上點擊一下。
4. 在圖中的 Order Detail 實體上點擊一下。
一個關聯被畫在了兩個實體之間。這是在 Properties 視圖中使用它的可見的特性被自動選擇的。如下調整特性:
1. 改變 End1Name 為 _Child Order Lines 。
2. 改變 End2Name 為 _Parent Order 。
3. 改變 End2Multiplicity 為 1 。
邏輯數據圖中的結果看起來應該如下圖:
關系的命名在實體關系建模中是被鼓勵的,雖然有時你也許會爭論關系是如此的明顯,命名是沒有必要的。
多樣性確認:
一個 Order 的實例能夠為一個 Order Detail 而存在(甚至雖然你還沒有到物理這一級)。
為一個 Order 視圖能夠有零個和任何數量的 Order Detail 實體存在。這是由星號對面的被命名為 _Child Order Lines 的關系決定的。
當在 Data Modeler 的結構化的模型中處理多樣性時, Data Modeler 再一次的提供了圖形化顯示關系的優點。
實體關系:弱關聯一個 Order Detail 的實例需要一個 Order 實例的存在,因為在他們之間存在著強關聯。然而, Order 和 Supplier 實體能夠很好的獨立存在 - 每一方都不一定需要對方的存在(因為是弱關聯)。這種關聯并不是至關重要的:一個 Order 實體的創建包含了選擇適合他們的供應商。這就是一個弱關聯。
你可以使用正規的 UML 關聯建模它。
1. 選擇邏輯數據模型圖。
2. 從 Toolbox 視圖中的 UML Class 面板點擊一下 Association 。
3. 在圖中的 Order 實體上點擊一下。
4. 在圖中的 Supplier 實體上點擊一下。
一個關聯被畫在了兩個實體之間。適當的調整這個關聯。
1. 將 End1Multiplicity 改為 1 (一個 Order 實例必須有一個并只能有一個相關聯的 Supplier 實例)。
2. 將 End2Multiplicity 改成 * (一個 Supplier 實例可以與零個、一個或者很多個 Order 實例相關聯)。
3. 可選的,為關系的兩端指定名字(End1Name 和 End2Name 特性)。
結果應該象下圖所示:
在 Order Detail 和 Product 之間添加一個關聯,使用與上面相同的步驟。End1Multiplicity 還是 1 并且 End2Multiplicity 是星號(*)(一個 Order Detail 實例能夠引用一個并只能引用一個 Product 的實例;然而,相同的 Product 實例能夠在多個 Order Detail 實例中存在)。
實體關系:一般化的角色兩個實體被剩下還沒有任何關聯:Garment 和 Food Item 。他們是典型的實體子類型,F在你能夠看到 Data Modeler 如何能夠簡單并自然的建模這個概念。對任何產品(不論是衣服還是食品)的可應用的屬性都在 Product 實體中被保存。屬性被指定的類型分別保存在 Garment 或者 Food Item 中。
如果父 Product 實例不存在的話,Garment 或者 Food Item 的實例也就不會存在,因此乍一看一個強關聯應該是合適的(使用面板中的 composition 關聯)。然而,Data Modeler 為這類關心開發了一般化(generalization )關聯。將它引入到你的圖中:
1. 選擇邏輯數據模型圖。
2. 在 UML Class 面板中點擊一下 Generalization 。
3. 在圖中的 Garment 實體上點擊一下。
4. 在圖中的 Product 實體上點擊一下。
5. 在 UML Class 面板中再點擊一下 Generalization
6. 在圖中的 Food Item 實體上點擊一下。
7. 在圖中的 Product 實體上點擊一下。
結果應該如下圖所示:
文章來源于領測軟件測試網 http://www.k11sc111.com/