2014-02-22 25 views
1

我正在创建一个管理业务许多方面的项目,但我目前正在编写发票,估算和信用部分。 我正在使用php和mysqli, 我的这一部分的前端正在进行中,但是在我陷入太深之前,我可以用一点输入做一个洞。 例如我的发票,估算和信贷数据在我的数据库中是分开的我有inv和invutes用于发票,est和est的表用于估算和信用和creditlines的信用,每个字段都是相同的,允许通过切换表取决于类型等 我的inv表存储inv编号,客户id,客户详细信息发票日期净总额,增值金额和总金额等等,invim存储invref,产品编号,产品说明,成本价格净售价,增值税率,数量等 在这种情况下我在这里和那里存储计算值以确保英国的增值税遵从。什么是存储和查询发票数据和帐户数据的最佳方式?

好的,所以当我到达测试阶段时,我需要能够生成报告,例如库存变动,日常分析中按名义代码(在循环表中)和利润和损失(购买账户方未开始还是)等等

我觉得我的数据库结构将允许我查询和建立从我存储的信息,但我的问题是我需要在发票点进一步细分这加速报告。例如在创建发票时,我是否也应该将收取的增值税金额写入增值税控制表?如果我这样做,我也应该写股票移动到股票管制表,显示何时,从哪里等到哪里等? 这可能会继续在交易中双重写入所有内容。

作为一个脚注,我的数据库是为多业务设计的,因为每个表中的每行都有一个名为coid的索引字段,它拥有对该公司唯一的引用,并且我的脚本检查该公司是否只能访问其自己的数据。

在此先感谢尼克

+0

你可以使用。 Mysql数据库,如果你想要你可以备份在一个普通的txt文件 –

回答

0

第一:您永远不应该将冗余数据保存在数据库中。如果可以从原始数据中轻松地检索信息,为什么将它保存在缓存列中?这带来了缓存值可能错误的问题!这是没有人想要的。

记住这一点总是有例外的规则。有些值真的很难计算,因此可能需要缓存这些值。这很可能不是这种情况。

另一个例外是可以命名(有点透支)“数据仓库”的东西。有例如法律要求长期保存发票。这些数据可能不会再发生变化(这是历史,所以应该改变什么?),并且可能需要能够输出过去任何时候的特定日期的数据。这个例外可能适用于您的案例!

如果这确实适用于您,我无法根据您提供的信息做出决定。你必须找出自己或提供详细的信息(但这可能会超过SO问题的框架),但我希望我能给你一些方向想法。

+0

所以你所说的是,如果例如我想在2014年1月1日至2014年1月31日之间的增值税发票报告,这将是可以接受的来查询类似inv invat的inv vatamount,其中invdate BETWEEN $ date1 AND $ date2 AND coid = $这个公司id然后在while循环中添加thenm来给出总收益?,((见下一个)) – Nick

+0

好吧,我可以看到这将是有效的,因为我已经将每个发票的计算值存储在inv记录中,但是当我需要通过检查每行的在这些日期之间的每个发票(可能有数万个),coid索引将有助于提高速度,但每个零件号码都需要通过函数运行以匹配产品数据库,以查看其存储的零件或一个零件是否添加。尽管我发现mysql在速度上让我感到惊讶。 – Nick

+0

对不起,但如果不知道你想要做什么,并且没有看到任何数据库模式,就很难顺着这里......你对JOIN和索引有很好的理解吗?大多数计算可以在关系数据库中非常高效地完成!我会重复缓存的是应用的增值税。那么我就不需要跟踪变化的增值税,这是未来不会改变的。我不幸意识到你对股票走势的看法。有什么股票与发票或估计有关?不能这样。 – GhostGambler

相关问题