简短的解释
我有包含库存货架数据的条形码。我有多个架子,不想为每个架子的位置和级别创建自己的数据库记录。取而代之的是,我有关于每个架子包含的位置(又称列)和级别(又称行)的记录。
是否可以通过条形码搜索来解析并返回这种自定义模型?
更详细的解释
我在每个货架上都有可扫描的条形码。条形码包含有关货架、位置和级别的数据。
在数据库中,我有一个模型货架,它有整数属性"places“和"levels”。
在下面的例子中,我有3个架子。货架A是最大的货架,每4层有8个储物位置。架子B有点小,架子C是最小的,只有两个位置和一个关卡。
| Id | Name | Places | Levels |
|----|------|--------|--------|
| 1 | A | 8 | 4 |
| 2 | B | 5 | 4 |
| 3 | C | 2 | 1 |另一个模型包属于那些带枢轴的货架。套餐可以放在货架A、place 1和level 2。
{
id: 1,
shelf_id: 1,
receiver_id: 123,
pivot: {
place: 1,
level: 2
},
id: 2,
shelf_id: 1,
receiver_id: 567,
pivot: {
place: 1,
level: 2
},
}现在,当我使用条形码数据"A-1- 2“(条形码数据:SHELF-AREA-LEVEL)进行搜索时,我会得到ids为1和2的包。
{
id: 1,
name: 'A',
place: 1,
level: 2,
packages: [
{
id: 1,
receiver_id: 123,
},
{
id: 2,
receiver_id: 456,
}
]
}这是可能的,还是为每个地方做一条记录更好?
发布于 2019-03-06 22:26:02
我认为这取决于你对软件有什么进一步的要求。在我看来,你可以在一个架子上的一个地方有多个包。如果在Shelf模型中存储位置和标高的数量,则假定该工具架中的所有标高和位置共享相同的属性(例如,高度、宽度等)。如果确实是这样,我认为您可以使用您提出的模型。
但是您现在将包的位置存储在枢轴中-只有当您希望同一包和货架有多个条目时,这才有意义,例如,如果您将包移动到另一个货架,而您想保留旧信息。如果您不需要“位置历史记录”,您可以将关卡和位置放在Package模型中,而不是放在轴心中。
如果你想实现完整的“关系型MySQL风格”,我会为每个属性创建不同的模型。Package应该位于Place中,Place位于Level中,Level属于Shelf,其结构如下
Shelf (id, name)
Level (id, shelf_id)
Place (id, level_id)
Package (id, place_id)这样,您就可以存储每个级别/位置的附加信息。但这取决于您的需求和您的软件应该能够完成的任务。
https://stackoverflow.com/questions/55025033
复制相似问题