2013-02-17 55 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。

似乎更容易在单个表上有适当的表索引,并且如果需要,可以查看当前的月份数据。但是,如果性能是一个问题,那么我同意将数据移动到历史记录表可能是有利的。

相关问题