库存系统的灵活数据库设计
Flexible database design for an inventory system
我必须为我的学校建立一个库存管理系统,这就是我面临的问题:
我必须在我的系统中存储多种类型的设备:
Computers, Printers, Cartridges, Projectors, Mouses, Keyboards etc.
而且每个项目都有一些共同的数据,不管它是什么类型:
TEMSID (like a barcode), SerialNumber, PurchaseDate, RegisterDate and other, see item entity for more.
此外,每个项目类型都有其必须存储的特定字段。
这就是我要处理它的方式,但是我不确定:
- [item] table 存储常用数据
- [item] table 与其他 table 具有一对一的关系,后者存储有关特定项目的更多详细信息。
- 重复数据(制造商、型号、分辨率等)存储在其他 tables [itemType] 中以减少冗余。
忽略项目 table
中的那些 FK ID
我觉得这是一个糟糕的设计。
如果有其他更有效的解决方案,我准备从头开始设计。
提前致谢!
问问自己:如果学校得到一个你没有 table 的物品,会发生什么(f.e。比如 Printer
和 PrinterType
) 在你的数据库中?如果这种情况经常发生?然后你每次都必须向数据库添加新的tables。
另一方面,您拥有类型特定的属性,但它们可能很常见,例如 model
或 color
。
如果我是你,我会制作一个动态系统,这意味着 administrator/user 可以添加任何项目(设备)类型并可以向其添加任何属性。
我会这样设计数据库:
我们有打印机、投影仪等设备类型。然后我们有带有基本数据的 devices
table 并连接到 devicetypes
table。然后我们有一个 properties
table,其中我们保存所有设备类型的其他属性(一个 属性 只有一次,没有冗余)。最后,我们有一个 propvalues
table,我们在其中存储每个设备的不同 属性 值。
F. e.在上面的示例中,具有 id: 1
的设备具有两个属性(型号和颜色),其值为 hp
和 true
。
通过这种设计,user/administrator 可以管理任意数量的属性。
一件特别的事:value
字段应该是 f。 e.一个 string
字段,因为它可以保存数字、字符串、日期等值。在视图中,您必须根据 datatype
.
转换此值
如果您还必须管理兼容性数据,当然您可以更通用一些。但也许这应该是一个家庭作业:-)
我必须为我的学校建立一个库存管理系统,这就是我面临的问题:
我必须在我的系统中存储多种类型的设备:
Computers, Printers, Cartridges, Projectors, Mouses, Keyboards etc.
而且每个项目都有一些共同的数据,不管它是什么类型:
TEMSID (like a barcode), SerialNumber, PurchaseDate, RegisterDate and other, see item entity for more.
此外,每个项目类型都有其必须存储的特定字段。
这就是我要处理它的方式,但是我不确定:
- [item] table 存储常用数据
- [item] table 与其他 table 具有一对一的关系,后者存储有关特定项目的更多详细信息。
- 重复数据(制造商、型号、分辨率等)存储在其他 tables [itemType] 中以减少冗余。
我觉得这是一个糟糕的设计。
如果有其他更有效的解决方案,我准备从头开始设计。 提前致谢!
问问自己:如果学校得到一个你没有 table 的物品,会发生什么(f.e。比如 Printer
和 PrinterType
) 在你的数据库中?如果这种情况经常发生?然后你每次都必须向数据库添加新的tables。
另一方面,您拥有类型特定的属性,但它们可能很常见,例如 model
或 color
。
如果我是你,我会制作一个动态系统,这意味着 administrator/user 可以添加任何项目(设备)类型并可以向其添加任何属性。
我会这样设计数据库:
我们有打印机、投影仪等设备类型。然后我们有带有基本数据的 devices
table 并连接到 devicetypes
table。然后我们有一个 properties
table,其中我们保存所有设备类型的其他属性(一个 属性 只有一次,没有冗余)。最后,我们有一个 propvalues
table,我们在其中存储每个设备的不同 属性 值。
F. e.在上面的示例中,具有 id: 1
的设备具有两个属性(型号和颜色),其值为 hp
和 true
。
通过这种设计,user/administrator 可以管理任意数量的属性。
一件特别的事:value
字段应该是 f。 e.一个 string
字段,因为它可以保存数字、字符串、日期等值。在视图中,您必须根据 datatype
.
如果您还必须管理兼容性数据,当然您可以更通用一些。但也许这应该是一个家庭作业:-)