我正在设计一个包含客户表和company_transaction的数据库,其中公司按部门分类,每个部门都有自己的每日客户域。

例如,部门A一天处理100个客户,如果有50个这样的部门,则记录将为每天50 * 100 = 5000,每周记录35000。

现在我很困惑是否将所有部门的记录放在单个表下,就像

tbl_dept_transactions:

---------- ------------- -----------
dept_id       cust_id     bill
----------  ------------ -----------
d1              c23        34780
d2              c34        45000
                .
                .
                .


或为每个部门维护一个差异表。例如,像在自己的表下管理一个部门的交易一样,

tbl_dept1_transactions:

---------- ----------
cust_id      bill
---------- ----------
c45           56870
c56           56890
c34           32456


而且部门不断增加,并且数据以更高的速度添加,正如我告诉你的那样,一周内有35000多个记录,如果要添加更多部门,则更多。

最好的选择是什么?任何帮助,将不胜感激。

最佳答案

我会每月动态创建一个新表,并在月份后缀其名称。

例如:tbl_dept_transactions_2014_03

为每个部门创建表似乎是一个错误的主意,因为迟早它也会被重载。

为了维护查询,您可以使用当前表名定义一个全局常量,并在查询中使用它,例如:define('TRANSACTIONS_TABLE','tbl_dep_transaction_'.date('Y_m'));

对于5年后创建的表,是否没有足够的数据存储空间并不是很重要,但是如果您希望可以备份给定年份的所有表,然后从MySQL服务器中删除它们。

10-08 07:22
查看更多