~~*以對象的繼承關係建立*~~*
**面向對象的編程中,使用對象的繼承是一個非常普遍的做法,
但是在關係數據庫管理系統RDBMS中,使用的是外鍵表示實體(表)之間---
---的關係,那麼對於繼承關係,該怎麼在RDBMS中表示呢?
一般來說有3種實現方式:•Concrete Table Inheritance(具體表繼承)•Single Table Inheritance(單表繼承)•Class Table Inheritance(類表繼承) **
**比如在一個教務系統中,有老師學生2個對象,這兩個對像都是“人”對象---
---的子類,所以我們可以建立一個Person表,該表有人的公共屬性:姓名、
性別等,還有就是數據的唯一標識,一個ID。而教師對像有教師的特有屬性,
比如職稱,學生有學生的特有屬性,比如學號。所以我們可以建立Person、
Teacher、Student3個表,其關係在PowerDesigner中如圖所示: **
***
**1.具體表繼承。不建立父對象,將父對象的所有屬性轉移到子對像中,為每個子對象---
---建立對於的表。如果使用這種方法,那麼就只需要建立Teacher表---
---和Student表,不需要Person表,在PowerDesigner中,雙擊繼承節點,
打開屬性窗口,取消“Generate Parent”選項,選中“Generate children”--
並選擇“Inherit all attributes”,如圖所示: **
**
**生成的數據庫表將如圖所示: **
**
**2.單表繼承 **在一個寬表中列出所有父對象和子對象的屬性,同時用一個標識--
--列表示該行數據存儲的是哪個子類的數據。在PowerDesigner中,
修改繼承節點的屬性,取消“Generate children”,選中 --
--“Generate parent”,然後在下面添加一個標識列,叫PersonType,
如圖所示: **
**
**生成的數據庫表,在一個寬表中表示如圖所示: **
**
**
**可以看到Person中的列集成了Person、Teacher、Student這3個表---
---的所有列,同時還多了一個列PersonType,這個列就是用來區分這行---
---數據到底表示的是一個學生還是一個老師 !3.類表繼承。 對父對象和每個子對象建立一個對應的表,然後在子表中設置該子表的---
---主鍵為與父表關聯的外鍵。在PowerDesigner中,對於繼承節點的屬性,
允許生成父和子表,另外,將“Inherit only primary attributes”選中。
如圖所示: **
**生成的数据库表如图所示: **
**
**這裡可以看到,Teacher的主鍵和Student的主鍵同時又是該表---
----的外鍵,連接到Person表 ~!**
**
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
沒有留言:
張貼留言
if you like make fds, wellcome you here~~anytime***
my free place for everyones who want the good software,
come & download them~ wellcome!!