使用历史记录表跟踪库存的系统

问题描述 投票:0回答:1

我有一个系统,让会员租用设备,系统应该有每个租用的项目和谁的历史。系统还应该跟踪谁有租用/检出的设备,还应该按类型,状态,名称等对设备进行分类。最后,它还应该发送过期设备的通知电子邮件。

我正在努力理解这种关系,以及我应该如何对此进行建模。截至目前,我目前的表格和想法是这样的:

Member Table:
Id (PK)
MemberId
FirstName
LastName
Email

EquipmentItem Table:
Id (PK)
EquipmentName
EquipmentType (FK)
EquipmentStatus (FK)
TotalQuantity
RemainingQuantity

EquipmentStatus Table:
Id (PK)
StatusName

EquipmentType Table:
Id (PK)
TypeName

EquipmentRentalHistory Table:
Id (PK)
MemberId (FK)
EquipmentId (FK)
CheckOutDate
ReturnedDate

1)我想知道这些之间的关系,租赁历史是会员表和EquipmentItem表之间的多对多关系吗?

2)EquipmentItem表是否具有状态和类型之间的一对多关系,我看到它的方式是EquipmentItems可以有许多状态或类型,但每个状态或每种类型只能属于一个EquipmentItem。

3)在EquipmentItem中有一个数量字段是否有意义,我曾经在杂货店工作,因此我将逻辑基于条形码,其中相同的产品通常具有相同的条形码,例如(Cheetos Puff筹码)所有Cheetos Puff筹码都有相同的条形码,但会有一个数量值。或者,如果每个项目都是相同的产品/型号,那么它会更好吗?

我的逻辑是:

  1. 会员出租物品
  2. 系统将其记录到历史记录表中
  3. 系统然后检查到目前为止已检出多少相同的项目,如果说我们在该项目上的总数量为4,并且3个成员已检查出来
  4. 我们将剩余数量字段更新为差异,因此在这种情况下为1
  5. 然后,系统可以通过返回返回日期为null的所有记录来跟踪谁签出了什么
  6. 系统将检查返回日期为null的所有记录,然后在检出日期执行日期范围,以确定设备是否过期
  7. 从步骤6向与所述记录相关联的成员电子邮件发送通知

我想要一些帮助更好地理解这些之间的关系,如果我正确地模拟了我的表,如果没有,如果有人可以指出我正确的改进方向,那将是很好的。

sql-server database data-modeling
1个回答
0
投票

To answer your questions

  1. 关于ERD中的建模,我认为这不符合多对多关系,而是EquipmentRentalHistory是它自己的实体,与MemberEquipmentItem有多对多的关系。 多对多会更像是,“Member可以访问0 ... n EquipmentItems,每个EquipmentItem都可以通过0 ... n Members访问”。

  1. 我不同意他们是一对多的关系。 氧气罐和一对脚蹼都可以归类为“Scuba Gear”并且状态为“Checked Out”。 您可以拥有多个“Scuba Gear”标签并将每个独特的“Scuba Gear”标签分配给它自己的EquipmentItem,但是您只需为每个新的EquipmentItem创建新标签,而不是重复使用现有的标签。

  1. 这真的取决于你是否想要确定一个成员租用的设备(可能是某些东西损坏了,你可以追踪那些租用那个特定的设备的人?)。如果你做区分,那么每个项目都只是它自己的行。您还应该添加一个新列作为外部标识符,但不需要保留计数。 如果它对你来说都一样,那么我只会保留total而不是available。如果您保留available列,那么无论何时在EquipmentRentalHistory中记录某些内容,您都必须不断更新它。如果表格不同步,这将很烦人。您可以只查询EquipmentRentalHistory获取设备的Id,并计算returnedDate IS NULL中当前正在使用的设备数量的条目

Additional Note

如果您想要更改截止日期,在租赁历史记录中设置“截止日期”列可能会很好,而不是硬编码日期计算。这样您也可以授予扩展名。

© www.soinside.com 2019 - 2024. All rights reserved.