我需要設計一個類似於下載網站的數據庫。我想跟蹤用戶,每個用戶下載的程序,還允許用戶評價+評論說的程序。我需要從這個數據庫中得到的東西 - 獲得一個程序的平均評分,獲得一個程序的所有評論,確切地知道什麼程序(我不在意每個程序下載了多少次,但我想知道每個用戶都下載了哪些程序),也許還會計算每個程序的註釋數量以及它的相關內容(這是一個非常小的項目我想保持簡單的個人使用) 我拿出這些實體 -面向用戶的數據庫設計下載
用戶(UID,UNAME等)
計劃(PID ,PNAME)
和以下relationships-
UserDownloadedProgram(UID,PID,時間戳)
UserCommentedOnProgram(UID,PID,commentText,時間戳)
UserRatedProgram( uid,pid,rating)
爲什麼我選擇這種方式 - 關係船舶(用戶下載,用戶評論和費率)很多。用戶下載許多程序並且許多用戶下載程序。評論也一樣(用戶對很多程序發表評論,某個程序被許多用戶評論或評分)。據我所知,最好的做法是創建一個一對多的第三個表格(關係表)。 。我猜想在這個設計中,平均評分和評論檢索是通過連接查詢或類似的方法完成的。 我是數據庫設計總noob,但我試圖堅持最佳實踐,這個設計或多或少好,或者我忽略了什麼?
我可以肯定地想到其他的可能性 - 也許評論和\或評級可以是一個實體(表)本身和關係是3個實體之間。我不確定它的優點和缺點是什麼:我知道我並不關心評論或評分,我只是想在適當的時候展示它們並維護它們(在需要時刪除),所以如何我知道他們是否更好地成爲一個實體?
有什麼想法?
Eww請不要在您的列前加上。每次看到這個,我都會哭泣。用戶表上的Id列顯然是用戶Id,你不需要稱它爲uid。在引用用戶表的其他表中 - 這些列應該被稱爲UserId – Milney