如何为序列化物料和批量物料的库存资产跟踪设计关系数据库



>背景信息:

我正在通过创建库存跟踪应用程序来学习Laravel 7。我有两种型号:产品和库存

产品可以是序列化批量跟踪。

  • 序列化跟踪产品是在每个单元上具有唯一序列号和属性的对象。
  • 散装跟踪产品是应跟踪其数量的物理对象。
  • 未跟踪的产品不按数量跟踪,但您可以为其分配成本和价格。

库存是存储条形码的地方。

  • 对于序列化产品,将有多个属于产品的记录
  • 对于散装产品,将有一条记录包含属于产品的数量

我尝试过的:

创建产品表:

id // Primary key
name
details
slug
brand_id
category_id
tracking // Enum ['serialized', 'bulk', 'none']
value
rental_price
is_active

创建股票表:

id // Primary Key
product_id
barcode
quantity // For serialized tracking, it defaults to 1. For bulk tracking, it will have the total quantity
condition // Enum ['great', 'damaged', 'broken']

问题:

我正在努力创建关系数据库设计。我觉得如果数据库增长,我采用的方法可能会变得混乱和低效。

这是正确的做法吗?有没有更聪明的方法来解决这个问题?

我是否应该在产品表中为条形码和数量添加两列,并且仅在跟踪批量时才填充这些列?

编辑1:实际用例是管理公司的所有资产。它专注于声音租赁公司...不是零售。该应用程序将是一个中央系统,他们可以在其中跟踪不同的属性,如固件版本、每个库存的序列号等......他们还将能够准备详细的发票并跟踪每种产品的维修和更换零件。我正处于开发的早期阶段...因此,我专注于创建关系,并确保我可以创建,更新和删除带有库存的产品。

您建议的方法听起来很棒且简单,但专注于零售应用程序。我觉得它需要单独跟踪每个项目的能力。

例如:我有一个名为">L-Acoustics K2 线性阵列扬声器"的产品。我有60个...因此,在 Stock 表中将创建 60 条具有唯一条形码的记录,因为每个扬声器都有不同的序列号。我使用条形码而不是序列号来识别库存,因为我想跟踪可能没有序列号或无法获得序列号的其他商品。

同时,还有其他产品,如电缆,我只关心数量。因为它们没有序列号或固件版本等单个属性。但它仍然需要一个条形码,以便我可以在准备事件时扫描条形码并指定为事件准备的电缆数量。

这是我遇到问题的时候...因为我觉得我设计数据库的方式只允许我拥有其中一个场景......批量或序列化产品,但我想同时拥有两者

我今天偶然发现了这个。您是否实施了解决方案?

你帖子中的这句话:

您建议的方法听起来很棒且简单,但重点是 零售应用程序。我觉得它需要跟踪每个 项单独。

不是指今天存在的东西吗?

在我看来,你现在有一个工作场景。

在应用程序代码中,您将添加验证规则和逻辑来处理quantity表中的库存和条形码:

  • 序列化
    数量 = 1(或 0?产品和条形码的
    组合可以多次出现
  • 散装
    数量>= 0
    产品和条形码的组合是唯一的
  • 不允许无
    数量 例如,在打印扫描廉价电缆时,您还将执行额外的检查:如果跟踪!=无,则继续使用条形码。

您还可以将字段tracking拆分为两个字段:

  • is_serialized
    true/false(/未设置(
    条形码是必需的/允许的(真(或不是(假(
    "未设置"以防还不能确定
  • has_stock
    true/false(/未设置(
    数量适用(真(或不适用(假(
    "未设置",以防还不能确定

最新更新