2013-02-17 18 views
0

我正在製作一個網站,用戶每月輸入一次數據,這個數據存儲在一個mysql數據庫中,帶有一個日期鍵,因此可以按日期。瀏覽這些數據讓每個用戶都擁有一個單獨的表格時,它會更容易和更具人性化,但是我非常確定這樣做會是一個壞主意。任何人都可以證實這一點並提供其他解Mysql爲每個用戶分開表。 (用戶每月輸入數據,如果這個數據是在一個單獨的表中輸入的話)

+0

爲什麼這是一個壞主意? – 2013-02-17 16:31:59

+0

@ExplosionPills - 嗯?假設所有字段都是相同的,只需在表中添加一個UserId列即可。然後,您可以輕鬆地由用戶查詢 - 除非我誤解了某些內容,否則沒有必要或不需要爲每個用戶設置單獨的表格。 – sgeddes 2013-02-17 16:37:56

+0

我猜不是每個用戶都有一個單獨的表格,而是一個單獨的用戶歷史表格 – 2013-02-17 16:39:58

回答

0

那麼一個新用戶會成爲一個新表?

此:

  1. 意味着DDL權利(CREATE TABLE)到MySQL網站的用戶(除非你手動或通過某種crontab的任務做)
  2. 不會使它很容易解析的withouth的混合mysql的user_schema表和常見的DML操作,每當你想獲取所有用戶的數據,或者僅僅知道用戶的列表

真正的答案是不容易的,不是絕對的,但理想情況下,作爲一個「宗教」的意見,我儘量避免模型操作在我的網站的日常生活中。 將自己定位於元模型化。

希望它的幫助下,

S.

1

爲什麼要這麼做? SQL將爲您過濾數據...例如獲取當月的數據:

select col1, col2, col3 from tbl1 where date_format(date_col, '%m') = date_format(now(), '%m') 
0

使用歷史記錄表可以有一個優勢,主要是當有性能的原因這樣做時。然而,一般來說,除非您計劃擁有大量數據(大多數RDBMS可輕鬆支持數百萬條記錄,而不會影響性能),否則無需將當前月份的數據與上個月的數據分開。 我不會推薦將表格僅用於演示目的。

你必須考慮其他事項以及歷史表。例如,您需要安排的事件將數據從當前表移動到歷史記錄表。如果您更改當前表格,則還需要更改歷史記錄表格。查詢所有數據可能會更麻煩一些,因爲您使用的是UNION。

似乎更容易在單個表上有適當的表索引,並且如果需要,可以查看當前的月份數據。但是,如果性能是一個問題,那麼我同意將數據移動到歷史記錄表可能是有利的。

相關問題