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

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

在數據庫中實現評論和喜歡

在數據庫中實現評論和喜歡

我是一名軟件開發人員。我喜歡編碼,但我討厭數據庫...目前,我正在創建一個網站,允許用戶將實體標記為喜歡(如FB),標記和評論。我被困在數據庫表設計上來處理這個功能。解決方案是微不足道的,如果我們只能為一種類型的東西(例如照片)做到這一點。但我需要為5種不同的東西啟用它(現在,但我也假設隨著整個服務的增長,這個數字會增長)。我在這里發現了一些類似的問題,但沒有一個問題得到滿意的答案,所以我再次提出這個問題。問題是,如何正確,高效和彈性地設計數據庫,以便它可以存儲不同表的注釋,喜歡不同的表和標簽。一些設計模式作為答案將是最好的;)詳細描述:我有一個表 User與一些用戶數據,以及3個表:Photo用照片,Articles用文章,Places用的地方。我想啟用任何已登錄的用戶:評論這3個表中的任何一個將其中任何一個標記為喜歡使用某個標記標記其中任何一個我還想計算每個元素的喜歡次數以及使用特定標記的次數。 1 日的做法:a)對于標簽,我將創建一個表 Tag [TagId, tagName, tagCounter],然后我會創造很多一對多的關系表為:Photo_has_tags,Place_has_tag,Article_has_tag。b)同樣重要的評論。三)我將創建一個表 LikedPhotos [idUser, idPhoto],LikedArticles[idUser, idArticle],LikedPlace [idUser, idPlace]。喜歡的數量將通過查詢計算(我認為這是壞的)。和...我真的不喜歡這個設計的最后一部分,它對我來說很難聞;)2 次的方法:我將創建一個表ElementType [idType, TypeName == some table name],該表將由管理員(我)填充,其中包含可以被喜歡,評論或標記的表的名稱。然后我將創建表:a)LikedElement [idLike, idUser, idElementType, idLikedElement]和注釋和標簽相同,每個都有適當的列。現在,當我想拍照時,我會插入:typeId = SELECT id FROM ElementType WHERE TypeName == 'Photo'INSERT (user id, typeId, photoId)和地方:typeId = SELECT id FROM ElementType WHERE TypeName == 'Place'INSERT (user id, typeId, placeId)......等等......我認為第二種方法更好,但我覺得這個設計中也缺少一些東西......最后,我還想知道哪個最好的地方存放計數器元素被喜歡多少次。我只能想到兩種方式:在element(Photo/Article/Place)表中通過select count()。我希望我對這個問題的解釋現在更徹底。
查看完整描述

3 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

既然你“討厭”數據庫,你為什么要嘗試實現一個?相反,向喜歡和呼吸這些東西的人尋求幫助。

否則,學會愛你的數據庫。精心設計的數據庫簡化了編程,設計網站并平滑其持續運營。即使是經驗豐富的d / b設計師也不會有完整和完美的遠見:隨著使用模式的出現或需求的變化,將需要一些架構變化。

如果這是一個單人項目,則使用存儲過程將數據庫接口編程為簡單操作:add_user,update_user,add_comment,add_like,upload_photo,list_comments等。不要將模式嵌入到一行代碼中。通過這種方式,可以在不影響任何代碼的情況下更改數據庫模式:只有存儲過程應該知道模式。

您可能需要多次重構架構。這很正常。不要擔心第一次完美。只需使其功能足以原型化初始設計。如果您有足夠的時間,請使用它,然后刪除架構并再次執行。它總是更好的第二次。


查看完整回答
反對 回復 2019-09-18
  • 3 回答
  • 0 關注
  • 1033 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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