我正在建立一个租赁库存应用程序来处理租赁预订的跟踪。我想我可能会过度思考它,但我一直在试图弄清楚库存调度部分的模型或模式。在附图中,我有一部电影的4份。在第一个只有一个副本被安排出去; 5日,3份出来;在6日和10日,所有副本都出来了。现在,我想以一种方式设计数据库,我可以在其中查找日期或日期范围,以查看当天有多少库存可用。挑战在于每个租赁项目可能没有单独的sku或跟踪。所以我不能将Movie_1视为movie_1_a,movie_1_b,movie_1_c,movie_1_d。相反,我必须像对待Movie_1一样对待它有4个副本,而在5日,3个副本已经出来但我们不知道哪些副本。
任何人都可以就如何编写架构提出任何建议。样本查询如何搜索可用性?
答案 0 :(得分:1)
这有两个方面(如果包括销售/交付,则为三个)。
像
这样的东西Originals(StockId etc)
CopySchedule(CopyId,StockID,DeliveryDate,NumberOfCopiesRequired,NumberOFCopiesAchieved,Status等)
复制(CopyId,Quantity等)
因此,当您将CopyScheduleStatus设置为Done时,您将向Copies添加记录。
然后您的预计库存水平将来自现在?到时为止
NumberInStock - NumberScheduledtoDeliver(从现在到任何时候)+ NumberScheduledToCopy(从现在到任何时候)
不要试图在一个模型中完成所有需求。
答案 1 :(得分:0)
在你的电影表中你应该有movie_copies字段,然后使用这个模式为[Movie_flow]创建一个表:
[PK]movement_id (could be an identity or an pair year/movement number if you wanna reset movements counter every year)
movie_id
movement_datetime
movement_type (I-in/O-out)
quantity
如果您想知道特定日期的电影可用性,您可以简单地通过movie_id读取移动,为moving_type“I”添加数量值,并在给定日期之前减少moving_type“O”的数量:movie_copies - 此计数为您提供电影拷贝可用。
保持清洁该表以优化性能,如果您想保留历史记录,可以归档旧动作