2014-02-20 11 views
-1

對於我正在創建的新站點,我有一組問題。我會很高興爲我獲得的所有幫助。用於大型數據庫的使用PHP和MySQL的關係表

比方說,我有表

  1. 成員(MEMBERID,成員名稱)
  2. 圖像(圖像標識,imageName)

成員國應能夠 「像」 的圖像,所以我'想製作關係表就像

  1. 贊(memberId,imageId)

這樣,當觀看圖像時,我可以檢查用戶是否具有此imageId。

我怎麼能成立這使它成爲大型數據庫的工作(可以說200K用戶和1M圖片)

首先我想MEMBERID在(1)和圖像標識的(2)應設置爲主鍵。

問題1:如何建表(3喜歡)

當顯示我想顯示每個圖像多少個「喜歡」有圖像,並相信對於大型數據庫,一個因爲行數太大,所以我猜想一個字段必須添加到數據庫圖像(2.)中,稱爲「likes」,每當有人喜歡它時,就會得到+1。

問題2:這是做這件事的正確方法嗎? 當作爲登錄用戶觀看圖像時,我想知道我是否已經「喜歡」一個圖像。

問題3:我應該在列表之前創建一個用戶擁有「喜歡」的數組,然後在列表中進行匹配,或者每次打印圖像時進行數據庫調用?

問題4:我應該甚至懶得在此設置有關係表,或者我應該只是在數據庫中的成員(1)現場的東西,如逗號分隔編號:s的圖像很喜歡(以獲得額外的性能?

+0

你能預測你的數據的大小嗎? – Yang

+0

請[採取SO遊覽](https://stackoverflow.com/tour) - 然後你會知道這是「_不是論壇_」,你應該「_Avoid主要是基於意見的問題,或者是可能會產生討論而不是答案_「 – kero

回答

0

你的200k用戶和1M圖像應該是絕對沒有問題的。你對錶的成員和圖像的主鍵是正確的。你喜歡的表應該包含memberId和imageId,我個人會添加一個時間戳(這個人是什麼時候喜歡這個圖片的)這個喜歡錶應該有一個聯合的主鍵memberId,imageId(防止某人喜歡幾次圖像)

主鍵會自動生成索引,這會使查詢表非常快。您可能會向喜歡的表中添加兩個索引:一個用於memberId,一個用於imageId。

您的問題:

  1. 帶索引的數量應該是非常快。沒問題。不要在images-table中添加計數的額外字段。

  2. 見上。應該沒問題

  3. 不明白這個問題。什麼名單?如果您害怕使用太多的數據庫調用,請查看memcached或類似的東西來緩存數據。

  4. 請使用關係表。

+0

所有我需要清除一切,非常感謝! –