對不起,如果我的標題不清楚。我在用PHP創建一個網站,用戶可以提交帖子。我目前使用MySQL數據庫來存儲用戶和帖子。我還想存儲每個用戶和每個帖子之間的相關值。這是想法:什麼是最理想的方式(與php兼容)將相關值存儲在數據庫中?
-----------------
| user1 | user2 |
-------------------------
| post1 | #val | #val |
-------------------------
| post2 | #val | #val |
-------------------------
我希望我能做出這樣的表在MySQL,但我不能選擇與預處理語句的列名,除非我連接成一個查詢,這顯然是不理想的。
I've asked a similar question before和響應是製作一個三列表,其中每一行代表一個相關性。像這樣:
=======================
| user | post | value |
=======================
| usr1 | pst1 | #val |
-----------------------
| usr2 | pst1 | #val |
-----------------------
| usr1 | pst2 | #val |
-----------------------
| usr2 | pst2 | #val |
-----------------------
我不喜歡這樣。它存儲了大量無關的數據,因爲它多次存儲每個用戶的id並且多次存儲每個帖子的id。它也需要瘋狂的行數;如果我只有100個帖子和100個用戶,那將是10,000行。
我不害怕將另一個數據庫添加到我的項目(或者如果我喜歡它,完全切換到另一個數據庫類型)以適應此問題。我知道那裏有很多NoSQL數據庫,但是我對MySQL以外的任何東西都沒有經驗,我不知道數據庫適合我的需求。
我在MySQL中做這件事的擔憂是否合理?或者MySQL可以處理多行?是否有另一種在MySQL中更有效的方法呢?如果沒有,我想知道這是什麼最好的數據庫類型。
這似乎是一種非常常見的存儲類型,但我在MySQL中看不到合理的方式;因此我會想象有一種數據庫類型非常適合這樣做。
我認爲你缺少的是MySQL只是一個比最優化的存儲方式更糟糕的常數因素。當然,對於100個用戶和100個帖子,您有10,000個行,但使用「最佳」解決方案時,您有10,000個單元。 MySQL在這裏不能很好地擴展,但其他解決方案也沒有。 – icktoofay 2013-05-05 05:00:32
謝謝!我只是不喜歡MySQL的想法,因爲對於10,000個單元中的每一個,我只會存儲相關值,但在MySQL解決方案中,我必須在每一行中存儲用戶標識和發佈標識。這基本上是存儲數據的三倍。加。我聽說MySQL對行數太多不太合適(我將在這個網站上有超過50個用戶和50個帖子) – vijrox 2013-05-05 05:05:23
我不相信「MySQL不適合太多的行」。這就是*用於*的數據庫:存儲行。如果MySQL不能很好地執行數據庫的主要功能,那麼它是什麼樣的數據庫? MySQL是一個有一定聲譽的數據庫,所以我認爲它確實可以很好地處理大量的行。 – icktoofay 2013-05-05 05:07:39