2015-03-25 55 views
0

我在試圖創建一個表,以便跟蹤報告網站評論的用戶。現在,我有一個表,將是這個樣子:MySQL-列在列內

id | num_reports | users 
----------------------------------- 
12345   1 
12489   4 

對於這個表,我想ID是唯一的,number_reports保持遞增從1開始。但是對於用戶來說,我越來越困惑,因爲我想保留創建報告的user_id的記錄,但我不確定如何製作報告,因此我可以存儲多個user_id。

我認爲做這樣的事情

id | user_id 
--------------- 
123  567 
123  689 

,並在這種情況下,你只指望用ID行被複制的數量和user_id說明是唯一的,但是這只是似乎效率不高。

我一直在環顧四周,它看起來像正確的方式將創建另一個表,但如何讓我存儲多個user_ids?

回答

1

這是正確的做法。這裏是你應該擁有的一切:

USERS     COMMENTS 
+---------+------+ +------------+---------+------------+---------------------+ 
| id_user | name | | id_comment | id_user | id_article | date    | 
+---------+------+ +------------+---------+------------+---------------------+ 
| 171  | Joe | | 245  | 245  | 24   | 2015-03-22 10:12:00 | 
| 180  | Jack | | 1245  | 180  | 68   | 2015-03-23 23:01:19 | 
| ...  | ... | | ...  | ...  | ...  | ...     | 
+---------+------+ +------------+---------+------------+---------------------+ 

COMMENT_REPORTS 
+-----------+------------+---------+---------------------+ 
| id_report | id_comment | id_user | date    | 
+-----------+------------+---------+---------------------+ 
| 1   | 245  | 171  | 2015-03-24 16:11:15 | 
| 2   | 654  | 180  | 2015-03-24 18:13:42 | 
| 3   | 1245  | 180  | 2015-03-24 18:34:01 | 
| 4   | 1245  | 456  | 2015-03-25 09:58:10 | 
| ...  | ...  | ...  | ...     | 
+-----------+------------+---------+---------------------+ 

然後你就可以得到:

# Every reports made by an user 
SELECT * 
FROM comment_reports 
WHERE user_id = 180 

# Every reports related to a comment 
SELECT * 
FROM comment_reports 
WHERE comment_id = 1245 

# Every reports made today 
SELECT * 
FROM comment_reports 
WHERE date >= CURDATE() 

# The amount of reports related to an user's comments 
SELECT c.id_user AS User, COUNT(cr.id_report) AS Reported 
FROM comment_reports cr 
JOIN comments c ON (cr.id_comment = c.id_comment) 
WHERE c.id_user = 180 
GROUP BY c.id_user 
0

你在製作datawarehouse嗎?通常不會保存網站的報告數量。它們是通過從保存報告的表格中的website_id中獲取COUNT(*)來計算的。在那裏你可以保存做這個報告的用戶。然後你可以通過收取報告總數,或用戶等報告總數。

但是,如果你有這樣的解決方案,那麼你沒有其他選擇,而不是創建單獨的鏈接表來存儲報告< - >用戶鏈接。

+0

根據嵌套深度和數據的,我不會在飛行算量.... – ITroubs 2015-03-25 08:20:03

0

您可以通過那裏找到唯一的用戶ID,由於增量,用戶始終唯一,並且永遠不會被覆蓋。