我有一个系统,让会员租用设备,系统应该有每个租用的项目和谁的历史。系统还应该跟踪谁有租用/检出的设备,还应该按类型,状态,名称等对设备进行分类。最后,它还应该发送过期设备的通知电子邮件。
我正在努力理解这种关系,以及我应该如何对此进行建模。截至目前,我目前的表格和想法是这样的:
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筹码都有相同的条形码,但会有一个数量值。或者,如果每个项目都是相同的产品/型号,那么它会更好吗?
我的逻辑是:
我想要一些帮助更好地理解这些之间的关系,如果我正确地模拟了我的表,如果没有,如果有人可以指出我正确的改进方向,那将是很好的。
EquipmentRentalHistory
是它自己的实体,与Member
和EquipmentItem
有多对多的关系。
多对多会更像是,“Member
可以访问0 ... n EquipmentItems
,每个EquipmentItem
都可以通过0 ... n Members
访问”。EquipmentItem
,但是您只需为每个新的EquipmentItem
创建新标签,而不是重复使用现有的标签。total
而不是available
。如果您保留available
列,那么无论何时在EquipmentRentalHistory
中记录某些内容,您都必须不断更新它。如果表格不同步,这将很烦人。您可以只查询EquipmentRentalHistory
获取设备的Id
,并计算returnedDate IS NULL
中当前正在使用的设备数量的条目如果您想要更改截止日期,在租赁历史记录中设置“截止日期”列可能会很好,而不是硬编码日期计算。这样您也可以授予扩展名。