Database 板


LINE

我簡單回一下有關O/R mapping的方面好了 明天要出國 可能沒時間再繼續回了 ㄧ些有名的O/R mapping framework java: Hibernate http://hibernate.bluemars.net/ NET: LINQ http://blog.sina.com.tw/4907/article.php?pbgid=4907&entryid=38437 .NET版本的O/R mapping是我除了OODB之外 第二個期待的新技術 它能夠將資料庫查詢的語法 很完整的整合在程式語言裡頭 而關於O/R mapping該不該用sprocs ㄧ些常用的用法 都是將DAL(資料存取層)直接對應到sprocs上面 這絕對不是我自己亂搞的 http://www.devx.com/vb2themax/Article/19894/0/page/3 而我之前在處理這些對應的時候 當然也是按照上面的方法去做的 但我在思考 真的ㄧ定得做這些事情嗎? OOA/OODㄧ定得跟結構化分析設計方法搭上邊嗎(這兩個明明就是兩套分析方法)? 我不能從頭到尾都用OO嗎?(這樣不是應該很理所當然的事情嗎) 舉一個例子 或許可以用XML的方式來做persistence 或許可以期待OODB 或許我的survey還不夠 應該趕快唸書去 不要再玩逼逼了 ※ 引述《come ()》之銘言: : 並不是說OOA OOD就不會用到ER喔 : 只要你的軟體計劃中有需要使用DB,就會有ER或者類似的資料庫模型文件 : 除非你使用結合DB的OOPL : 另外資料庫的stored procedure不是用來給你寫物件的method的 : 是用來控制資料庫的一致性的,補足DBMS內建constraint的不足 : 資料庫的功能就是存放重要的資料 : 你不應該把AP的物件在資料庫中實做 : 除非你用OODB或ORDBMS : 這些資料庫就會提供定義"method"的方法 : 或者讓你mapping methods到stred procedures : ※ 引述《seagal (會長繞跑了)》之銘言: : : 這樣說也是有道理 : : 的確ER Model是在分析階段就會產出的文件 : : 不過這也是我最主要覺得的問題 : : 硬把傳統的結構化分析與設計 : : 跟物件導向分析與設計串在一起 : : 產生的很多問題 : : 都讓我覺得很弔詭 : : 結構化的分析與設計 : : 起源於1960年代末期 : : 最初的結構化的分析與設計 : : 並沒有包含ER Model : : 到新一代的結構化分析與設計 : : 才將ER Model加入 : : 我門看陳品山是在1976年提出這個模型就可以得知了 : : 直到1986年 : : Grady Booch率先發表物件導向的系統開發方法 : : 以開啟物件導向在軟體工程上應用的新頁 : : 在這幾十年之間 : : 關聯式資料模型的變化似乎不大 : : 看看現在最流行的兩種OO語言 : : Java and .NET : : 在支援OOA/OOD上可以說是配合的很好 : : 例如簡單的struts, EJB, servlet概念 : : 讓架構在OO上的MVC觀念得以完全發揮 : : 唯一我覺得有很多疑問的地方 : : 就是在關聯式資料庫的部份 : : 我這邊舉ASP.NET + SQL Server的例子 : : 當我以三層式架構 : : 完成我的ASP.NET網站的時候 : : 每一層的類別都經過良好的分析與設計 : : 配合的天衣無縫 : : 卻在資料處理層要與SQL Server溝通時 : : 讓我做了很多dirty work : : 也就是O/R mapping要處理的議題 : : 例如 : : 今天我要將新聞模組(News)從資料庫讀出來 或寫入資料庫 : : News類別裡面的method我該怎麼實做在呢SQL Server呢? : : 為了簡化例子 : : 我只需要簡單的兩個方法 getInstance, putInstance : : 這樣子就好 : : 沒錯 SQL Server可以提供sprocs : : 可是光是sprocs命名 : : 我就得取名作 : : News_getInstance(NewsID) : : News_putInstance(NewsID) : : 這兩支 : : 如果我每個類別有二十個方法呢 : : 如果我有二十個類別呢? : : 我的sprocs就會有400個 : : 事實上有些method是應該被封裝起來的 : : 所以也不應該被其他method存取到 : : 從sprocs拿出來的資料 : : 交給ASP.NET處理的時候 : : ASP.NET是利用一種ADO.NET的技術 : : 簡單來說就是將資料變成一個table : : 你必須要再去讀取每個table裡面的值 : : 轉換成你自己的物件 : : Oh my god : : 我只是要用個OO而已 : : 怎麼多出來這麼多個步驟了 : : 雖然我還是乖乖做完了:( : : 這只是一個小問題而已 : : 我再舉出另外兩個問題 : : 在OO的思維裡 : : 每個物件是不需要PK的 : : 你也可以說她們本身就有PK : : 因為每個物件都會自己產生獨一無二的ID : : 這也是現在的OODB實做的方式 : : 而在上面我舉的例子裡面 : : 我總是要透過News模組的PK (NewsID)來讀取每個tuple : : 最後一個問題 : : 在傳統的結構化分析與設計 : : 將每個階段都切的十分清楚 : : 而如果用OOA/OOD的方式來開發的話 : : 並不會產出ER Model的文件(上面提過這是結構化分析 設計的產物) : : 有些DBA也沒有學過UML(至少我們team的DBA沒有學過) : : 那分析階段產出的UML該由誰負責轉成ER Model呢 : : 萬能的SA/SD嘛 : : 或是像come網友講的 : : 在分析階段就產出ER Model : : 後面的設計都繞著ER Model來做? : : 這也就是說 : : 把OOA/OOD以資料導向的方式來開發? : : 我的領域並不在OODB上面 : : 我只是最近剛好有需要 : : 將生物資訊的大量資料作處理 : : 有必要的話可能還是得硬著頭皮弄出適合的一套檔案(or DBMS)系統 : : 所以如果有任何高手能指正的話 : : 也歡迎針對我說錯的地方指正 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.169.200







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP