2012-02-04 80 views
-2

例如,我有一個商業網站做廣告的東西登錄的用戶。我在另一篇文章中聽到有人說我應該只爲所有用戶使用一張桌子,並對我的產品使用相關評論。潛在買家和我的網站

什麼在我腦海中是我需要,我會存儲用戶信息的所謂usertable-表(用戶名,地址,電子郵件地址,哈希密碼);一個用戶可能有10條評論及其相關的發佈日期和時間;這些信息如何被存儲在同一個可用的?

可能有人流下了光對我這個好嗎?我很困惑,因爲我爲每個用戶設置了新表,但也考慮瞭如何在登錄到我的網站時選擇與特定註冊用戶匹配的創建表。到底是什麼,我越想越想離開,我越想越想。

+7

每個用戶有一張桌子聞起來 - 這很可能是糟糕的設計。 – Mat 2012-02-04 11:05:22

+8

獲取一本涵蓋數據庫設計和規範化的書,然後提出具體問題。 – CodeCaster 2012-02-04 11:05:32

+0

這就是OP指的是:http://stackoverflow.com/a/9140361/451969 @ user1058271,看到我的答案在那個鏈接,是我在談論的一個例子。 – 2012-02-04 11:07:07

回答

1

創建每個用戶的表是自找麻煩!如果你有100K用戶呢?

一個表中的所有用戶的建議是做的最好的,和最容易的事情。我會推薦一個基本結構,包括一個userid - 帶自動增量 - 以及個人信息。然後爲帖子分開一張表,每行包含發帖人的userid - 再次帶有自動遞增的postid字段。然後提供關於帖子的所有評論的單獨表格(使用postid)。然後

的基本結構將是(我的飛行寫這):

CREATE TABLE users (
    userid INT NOT NULL AUTO INCREMENT, 
    name VARCHAR(50), 
); 

CREATE TABLE posts (
    postid INT NOT NULL AUTO INCREMENT, 
    userid INT NOT NULL, 
    post VARCHAR(500) 
); 

CREATE TABLE comments (
    commentid INT NOT NULL AUTO INCREMENT, 
    postid INT NOT NULL, 
    comment VARCHAR(200) 
); 

然後做連接以獲取用戶和所有相關的評論帖子。還應該有索引(因爲我確信其他SO用戶會這樣說),但是我把它作爲讀者的練習!

+0

這真的太棒了。我非常需要這樣的東西!非常感謝您的「即時」救生回覆。 – user1058272 2012-02-04 11:17:47

+0

哪裏有主鍵和外鍵?壞設計... – 2012-02-04 11:23:05

+0

好吧他們在哪裏? – user1058272 2012-02-04 11:32:33