我正在设计一个包含客户表和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服务器中删除它们。