结束日期过程的数据库模式

时间:2017-03-08 18:32:10

标签: sql-server database-design

我有一个POS和库存系统,其中包含发票标题的收据表和其中内容的receipt_lines表。用户必须在一天结束时按下关闭日期按钮,以便删除并重新创建表格,并且发票号码将在第二天从1开始。在删除当前表之前,过去表中的数据将被复制到历史表中。

我想知道是否有更好的方法来设计此架构,其中收据编号每天重置并保持主键:

  • 收据表 收据收据金额clientnumber

  • receipt_lines 商品代码的收据ID数量unit_price

1 个答案:

答案 0 :(得分:1)

不完全清楚你在做什么,但首先你不必丢桌子。 您可以截断并重置标识:

TRUNCATE TABLE [Receipt ] GO
DBCC CHECKIDENT ('Receipt ', RESEED, 0)

其次,您似乎需要拥有PK收据& receiptID有另一个表来保存receitID并每天重置该表。这种方式无需复制任何记录,只需根据收据和查询进行查询。 receiptID,这样就没有必要和资源消耗复制历史收据。

稍微考虑一下,你可以只有一个ReceitID表来保存每个日期的计数器(每个日期一行),其中包含Date和ReceitId,其中Date是PK而ReceitID只是一个整数,并且在此时增加此ReceitID每个插页。然后,该表的第一个增量将在您的"收据"中使用该ID。表