PowerDesigner中的繼承方式

2021-07-17 03:04:28 字數 1406 閱讀 4143

在使用powerdesigner設計rdbms資料庫的時候,發現其中的子類貌似與課程老師所講的不太一樣,查資料發現,關於繼承就有三種實現方式。

比如在乙個教務系統中,有老師學生2個物件,這兩個物件都是「人」物件的子類,所以我們可以建立乙個person表,該錶有人的公共屬性:姓名、性別等,還有就是資料的唯一標識,乙個id。而教師物件有教師的特有屬性,比如職稱,學生有學生的特有屬性,比如學號。所以我們可以建立person、teacher、student3個表,其關係在powerdesigner中如圖所示:

不建立父物件,將父物件的所有屬性轉移到子物件中,為每個子物件建立對於的表。如果使用這種方法,那麼就只需要建立teacher表和student表,不需要person表,在powerdesigner中,雙擊繼承節點,開啟屬性視窗,取消「generate parent」選項,選中「generate children」並選擇「inherit all attributes」,如圖所示:

在乙個寬表中列出所有父物件和子物件的屬性,同時用乙個標識列表示該行資料儲存的是哪個子類的資料。在powerdesigner中,修改繼承節點的屬性,取消「generate children」,選中「generate parent」,然後在下面新增乙個標識列,叫persontype,如圖所示:

生成的資料庫表,在乙個寬表中表示如圖所示:

可以看到person中的列整合了person、teacher、student這3個表的所有列,同時還多了乙個列persontype,這個列就是用來區分這行資料到底表示的是乙個學生還是乙個老師。

對父物件和每個子物件建立乙個對應的表,然後在子表中設定該子表的主鍵為與父表關聯的外來鍵。在powerdesigner中,對於繼承節點的屬性,允許生成父和子表,另外,將「inherit only primary attributes」選中。如圖所示:

生成的資料庫表如圖所示:

這裡可以看到,teacher的主鍵和student的主鍵同時又是該錶的外來鍵,連線到person表。

深藍居

PowerDesigner中的問題

1.id使用inerger然後設為主鍵後,生成sql不能夠自動編號。解決 生成sql自增id列的方法是,把cmd圖的id列的字段型別選擇為serial,但是他生成的是number的自增列,沒有辦法生成int的自增列,如果有人知道,請告訴我,不勝感謝。2.按照書上的生成的字元型的字段是varchar,...

PowerDesigner中如何新增約束

唯一約束 唯一約束與建立唯一索引基本上是一回事,因為在建立唯一約束的時候,系統會建立對應的乙個唯一索引,通過唯一索引來實現約束。不過唯一約束更直觀的表達了對應列的唯一性,使得對應索引的目的更加清晰,所以一般建議建立唯一約束而不是只建立唯一索引。在pd中建立唯一約束的操作,以教室表來說,roomid是...

PowerDesigner中幾個使用技巧

一 主鍵自增 二 設定列的約束 三 修改name和code一起改變的選項 tools generator options dialog name to code mirroring 不勾選 四 檢視中同時顯示name code等 五 將資料表匯出成指令碼 快捷鍵是 ctrl g 操作是 databa...