比較方面
|
每個具體類一張表
|
每個分層結構一張表
|
每個子類一張表
|
建立關係模型原則
|
每個具體類對應一張表,有多少具體類就需要建立多少個獨立的表
|
描述一個繼承關係只用一張表,也就是說子類所使用的表與父類相同
|
每個子類使用一張表,但這些子類所對應的表都關聯到基類所對應的表中
|
關係模型的優缺點
|
這種設計方式符合關係模型的設計原則,但有表中存在重複字段的問題
|
缺點有二:首先表中引入的區分子類的字段,也就是包括了描述其他字段的字段。其次,如果某個子類的某個屬性不能爲空,那麼在數據庫一級不能設置該字段not null(非空)
|
這種設計方式完全符合關係模型的設計原則,且不存在冗餘
|
可維護性
|
如果需要對基類進行修改,則需要對基類以及該類的子類所對應的所有表都進行修改
|
維護起來方便,只需要修改一個表
|
維護起來比較方便,對每個類的修改只需要修改其所對應的表
|
靈活性
|
映射的靈活性很大,子類可以包括基類屬性在內的每一個屬性進行單獨配置
|
靈活性差,表中冗餘字段會隨着子類的增多而越來越多
|
靈活性很好,完全是參照對象繼承的方式進行配置
|
查詢性能
|
對於子類的查詢只需要訪問單獨的表,對父類查詢怎需要檢索所有的表
|
在任何情況下,都只需處理一個表
|
對於父類的查詢需要使用左外鏈接,對於子類查詢需要使用內鏈接
|
維護性能
|
對於單個對象持久話操作只需要處理一個表
|
對於單個對象的持久話操作只需要處理一個表
|
對於子類的持久話至少要處理兩個表
|
|
|
|
|