我一直在想出一個好的設計模式,用於將包含在關係數據庫中的數據映射到我創建的業務對象,但我一直在打牆。對象關係映射問題:需要的建議
考慮以下表:
TYPE: typeid, description
USER: userid, username, usertypeid->TYPE.typeid, imageid->IMAGE.imageid
IMAGE: imageid, location, imagetypeid->TYPE.typeid
我想收集所有關於特定用戶的信息。爲此創建查詢並不困難。
SELECT u.*, ut.*, i.*, it.* FROM user u
INNER JOIN type ut ON ut.typeid = u.usertypeid
INNER JOIN image i ON i.imageid = u.imageid
INNER JOIN type it ON it.typeid = i.imagetypeid
WHERE u.userid = @userid
的問題是,字段名稱衝突,然後我不得不別名每一個領域,它們很快失控。
有沒有人有這樣的事情體面的設計模式?
我想過從單個存儲過程中檢索多個結果,然後使用數據集來遍歷每個結果,但我擔心一些性能問題可能會在以後咬我。例如,而不是上述查詢類似:
SELECT u.*, t.* FROM user u
INNER JOIN type t ON t.typeid = u.usertypeid
WHERE u.userid = @userid;
SELECT i.*, t.* FROM image i
INNER JOIN type t ON t.typeid = i.imagetypeid
INNER JOIN user u ON u.imageid = i.imageid
WHERE u.userid = @userid;
這看起來像一個體面的解決方案嗎?任何人都可以預見這種方法的任何問題嗎?
後面的解決方案似乎不好,簡單地說。你不覺得別名是一個更好的方式去。順便說一句,你真的使用任何ORM框架? – 2009-01-08 07:28:32
Wot沒有ORM框架在使用?這是什麼語言? – 2009-01-08 07:30:03