我在IT商店工作,正在尝试创建一个数据库来跟踪我们的硬件库存。要点是,条形码资产只能位于一个位置,无论是桌面,机架还是某种存储(在货架,托盘等)。
我原本有这样的事情。
Table Asset(barcode);
Table Rack(rack_id, rackName);
Table Desk(desk_id, deskName);
Table Storage(storage_id, StorageName);
对于每个"位置" table(Rack,Desk,Storage)我有一张表来跟踪资产的放置位置:
Table Desk_Item (desk_item_id, desk_id, barcode);
Table Rack_Item (rack_item_id, rack_id, barcode);
Table Storage_Item (storage_item_id, storage_id, barcode);
但我不喜欢有三个独立的表来跟踪资产。所以我想我应该制作一个位置表
Table Location(location_id, barcode);
Table Rack(rack_id, rackName, location_id);
Table Desk(desk_id, deskName, location_id);
Table Storage(storage_id, StorageName, location_id);
Table Asset(barcode);
现在,Location表会跟踪资产的位置。但令我感到奇怪的是,如果我查询位置表,我必须检查机架,桌面和存储。这是设计这个的正确方法吗?欣赏任何想法或建议。
答案 0 :(得分:0)
你应该有location_type
表。
location_type_id location_type
1 Rack
2 Desk
3 Storage
如果您以后想要添加另一个location_type
,例如 ex: 'truck'
,则无需修改数据库,只需添加新的{{1} }
而不是type
的多个表,Rack
,Desk
一个表Storage
location
最后是你的location_id location_type_id name
1 1 'Im a Rack'
2 1 'Im another Rack'
3 2 'Im just a desk'
表
Assets