>背景信息:
我正在通过创建库存跟踪应用程序来学习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(/未设置(
数量适用(真(或不适用(假(
"未设置",以防还不能确定