我有一个POS和库存系统,其中包含发票标题的收据表和其中内容的receipt_lines表。用户必须在一天结束时按下关闭日期按钮,以便删除并重新创建表格,并且发票号码将在第二天从1开始。在删除当前表之前,过去表中的数据将被复制到历史表中。
我想知道是否有更好的方法来设计此架构,其中收据编号每天重置并保持主键:
收据表 收据收据金额clientnumber
receipt_lines 商品代码的收据ID数量unit_price
答案 0 :(得分:1)
不完全清楚你在做什么,但首先你不必丢桌子。 您可以截断并重置标识:
TRUNCATE TABLE [Receipt ] GO
DBCC CHECKIDENT ('Receipt ', RESEED, 0)
其次,您似乎需要拥有PK收据& receiptID有另一个表来保存receitID并每天重置该表。这种方式无需复制任何记录,只需根据收据和查询进行查询。 receiptID,这样就没有必要和资源消耗复制历史收据。
稍微考虑一下,你可以只有一个ReceitID表来保存每个日期的计数器(每个日期一行),其中包含Date和ReceitId,其中Date是PK而ReceitID只是一个整数,并且在此时增加此ReceitID每个插页。然后,该表的第一个增量将在您的"收据"中使用该ID。表