在我的應用程序中,用戶可以創建項目(上傳他們的照片/圖片),欣賞或添加到收藏夾中的其他用戶項目,撰寫消息,發表評論。還有活動供稿,每個用戶可以看到新評論,新消息,朋友的新項目等。Mysql活動飼料設計
活動供稿中的每條記錄都可以與不同的對象相關聯。例如,類型new_vote
的記錄可以連接到Vote
,Project
和Sender
(誰投了票)。並且每個記錄都有owner
。我有如下表(簡單地):
feed (id, owner_id, sender_id, project_id, vote_id, message_id, comment_id, type)
projects (id, title)
votes (id, vote)
等
而且我希望每個記錄中涉及到多個對象。例如,類型new_message
的記錄可能與多個消息有關。因此,在活動Feed頁面上,我可以向用戶顯示「Mike給你寫了4條消息」。在我看來它將是:
feed (id, type)
projects (id, title)
votes (id, vote)
feeds_projects_relations (feed_id, project_id)
feeds_votes_relations (feed_id, vote_id)
和其他類似的表。
設計是否正確?有沒有更好的方法來做到這一點?
謝謝。
如果您希望將用戶照片圖像數據作爲帶有BLOB字段的單獨表格包含在數據庫中,則可能需要考慮,因爲假設您使用的是InnoDB,回滾事務時文件系統上的文件不會被刪除/更改。 –
@RaymondNijland,我不確定這件事。圖片是我網站上的主要內容,就是內容。將所有這些文件保存在數據庫中是個好主意嗎? – krasulya
可能依賴應用程序/硬件/ MySQL配置/使用的存儲引擎/ ..在表和文件上存儲路徑文件有一個優點,這應該是更快的編寫文件,但是當你需要獲取一個文件,你需要做的一個數據庫請求和一個基於路徑的文件系統請求....如果您將文件存儲到數據庫中寫入文件可能比文件系統更慢,但獲取文件是一個簡單的內部連接,文件流將發送到php客戶端可能會更快......但你真的需要對這個基準進行基準測試 –