資料庫設計不外乎三種關係
1。一對一
2。一對多
3。多對多
首先,為每個表建立對應的實體類
1。一對一
人員表a,人員資訊表b,
那麼物件設計在為類a、a業務類,類b,b業務類
a類裡有個b類的物件
取b資訊的方法寫在b業務類中
3。一對多
人員表a,人員資訊表b,人員有多個資訊
那麼物件設計在為類a、a業務類,類b,b業務類
a類裡有個b類的物件集合
取b資訊的方法寫在b業務類中
3。多對多
人員表a,組織機構表b,人員表和組織機構對應關係表c
那麼物件設計在為類a、a業務類,類b,b業務類,類c,c業務類
a類裡有個b類的物件集合
取b資訊的方法寫在b業務類中
取a,b關係方法寫在c業務類中
同理b類裡有個a類的物件集合
如果多對多的關係表儲存的不光是關係,還有其他內容,那麼a類或者b類中就是關係物件了,而關係物件儲存的是a類和b類物件的集合。一對多同理
方法的定義原則是,取什麼物件,就到對應的業務類中取。
按上訴設計,每個業務類只有兩基本方法就夠了,然後根據兩個基本介面查詢出的基本物件,可以組合出所有資料庫中的資料資訊
1。獲取所有資訊
2。根據主鍵獲取單個資訊(多對多關係,需要根據外來鍵獲取資料集合,幾個外來鍵,幾個方法)
例如,要取出乙個部門的和人員資訊
(1)根據部門id在b業務類中取得部門資訊
(2)根據部門id在c業務類中取得人員id
(3)根據人員id在a業務類中取得人員資訊
這樣就根據三個業務類的簡單介面取出了詳細資訊(取全部其實和單個是一樣的,只不過沒有部門id的條件了)
這是理想中的orm定義,可以使程式設計師完全的不用關注結構型資料、只關注物件資料就可以了,這麼做有個侷限性是(一般是取出的資料量過大,鏈結資料庫次數過多),如果這麼簡單的設計,那麼乙個部門有200人,那麼取這個部門和部門人員的資訊需要調200次獲取人員的方法根據主鍵,那麼就相當於連線了200次資料庫,顯然這是不行的,上面所說的只是理想的設計,現實情況還要按理論變化(比如查部門不能關用id就可以了,還有其他條件等等)。
orm也為程式設計師由先設計資料庫走向只關注設計物件提供了道路。
在這裡提一下.net中的linq技術,他的物件查詢功能為orm提供了新的生命力。
學習O RM,從最簡單的例子開始 之四
之前的幾篇文章 學習o rm,從最簡單的例子開始.之一 學習o rm,從最簡單的例子開始.之二 學習o rm,從最簡單的例子開始.之三 學習o rm,從最簡單的例子開始.之四 更新日期2月2號 希望大家能給點建議,做得很粗糙,如果有什麼想法,一定要告訴我啊,在此謝過了。雜亂,希望不要太讓你難受 也希...
PHP最簡單的設計模式是?
設計模式經常在composer包中很常見,今天來學習一下php設計模式 單例模式 class sigle public static function getins return self ins 防止被轉殖 final protected function clone obj sigle geti...
簡單示例實現django的orm
在django中如果我們定義了乙個user的model。就可以使用user.objects.create 等方法.那麼在django的原始碼中是如何實現這種寫法的呢?下面 從最外層簡單完成了django orm的呼叫方法實現.ps 下面的 只是實現了django的最外面呼叫實現而已.class ma...