SQL Server数据库设计 - 单独的待售和购买表

时间:2015-01-30 07:49:57

标签: sql-server database-design data-structures

我正在为我的个人业务构建一个新的业务应用程序,每天有近100个销售和购买交易。我正在考虑使用单独的表格来记录销售和购买的另一个链接表,用于销售的物品和与购买物品的单独链接表。

Example:
**SaleTable**
InvoiceNo
TotalAmt

**SaleTableDetail**
LinkedInvNo
ProductID
Quantity
Amount
etc.,

这种设计会更好,还是更有效率的一个交易表与列说明销售或购买? - 从App / Database / Query / Reporting Perspective

2 个答案:

答案 0 :(得分:2)

  1. 发票与销售订单不同。发票是付款请求。销售订单是指以某个日期的价格向一方销售产品的协议。

  2. 除了您是客户之外,销售订单几乎与采购订单完全相同,而销售订单行项目可以引用采购订单行项目。您可以将它们放在单独的表中,但您应该使用表继承(CTI,从抽象Order扩展)。将它们放在具有“类型”列的同一个表中称为单表继承,并且非常简单。

  3. 不要在操作数据库中存储总计。您可以将它们放入分析数据库中(仓库)。

答案 1 :(得分:1)

你从小做起,这是一个快速的方法。但是,我相信,很快你就会遇到买卖交易之间的差异,有些领域只会描述销售情况以及一些仅适用于购买的字段。

在适当的时候,您可能希望跟踪修改或修改审核。然后,您开始为同一事务设置多行,其中字段表示已废弃,或者您必须将历史记录移动到另一个表。

另外,考虑所有查询中的代码样式开销,您必须提及交易类型作为简单查询的销售或购买。

最好使用最接近商业现实的模型来设计数据库。在最高级别,所有内容都可以抽象为“交易”,包括日期,金额和某种标签,以指示根据上下文支付或接收金额。这并不意味着我们可以拥有一个带有Tag,Date,Amount,PayOrReceive的表来处理所有不同的交易。