亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用靜態語言將數據庫表中的對象分離與合并

使用靜態語言將數據庫表中的對象分離與合并

Go
慕容森 2021-08-16 20:19:14
考慮在數據庫中有一個名為users的表和一個名為 的表wallets。除其他外,用戶有 0 個、1 個或多個錢包。這種關系是一對多的,這意味著錢包有一個指向用戶的外鍵?,F在的問題如下:在為一個人構建結構或類時,我看到兩種可能性:1) 用戶沒有錢包的跡象。有一個函數將用戶作為參數并獲取錢包數組。2) 用戶擁有一個包含錢包的數組作為成員,并且在創建對象/結構時獲取錢包。我認為第一種方法可能更好,因為它更加模塊化——在第二種方法中,用戶依賴于錢包,即使用戶沒有錢包。不過,我不確定哪種方法更好,所以我正在尋找兩種方法的比較。
查看完整描述

1 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

在應用程序級別,您可能有這樣的用戶類型(Go 符號):


type User interface {

    Wallets() []Wallet

}

在下面,有一個數據庫,在您的情況下是 SQL。這應該不會是通過看你的應用程序很明顯,想。


對超出它們以接口契約形式保證的依賴項做出假設會使組件不可逆轉地耦合。


這意味著,如果您根據數據庫的模式對應用程序進行建模,那么您就做錯了,因為您的整個應用程序現在與所述數據庫緊密耦合,并且對其任何部分的任何更改都會產生巨大的、不可預測的影響。


一個常見的解決方案是使用所謂的ORM 層,它位于您的數據庫驅動程序和實體模型之間。它將處理以下內容:


應該如何以及何時取出錢包?

錢包的信息存儲在數據庫中的哪個位置?

當你刪除一個用戶時,錢包也應該被刪除嗎?

除其他事項外。


PS:此答案適用于靜態和動態類型語言。


查看完整回答
反對 回復 2021-08-16
  • 1 回答
  • 0 關注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號