我有一个系统,该系统使成员可以租用设备,并且该系统应具有每个租借项目以及谁租用的历史记录。该系统还应跟踪谁租用/检出了哪些设备,并应按类型,状态,名称等对设备进行分类。最后,它还应发送过期设备的通知电子邮件。
我正在尝试理解这些关系以及如何建模。到目前为止,我当前的表格和想法是这样的:
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)我想知道这些之间的关系,租赁历史会成为Member表和EquipmentItem表之间的多对多关系吗?
2)EquipmentItem表在状态和类型之间是否具有一对多的关系,我认为这是EquipmentItems可以具有许多状态或类型,但是每种状态或每种类型只能属于一个EquipmentItem。
3)在我以前在杂货店工作的EquipmentItem中有一个数量字段是否有意义,所以我将逻辑基于条形码,而相同的产品通常具有相同的条形码,例如(Cheetos Puff芯片)所有Cheetos Puff芯片都具有相同的条形码,但上面带有数量值。还是让每个商品都具有唯一性,而不管它是同一产品/型号,还是更好?
我的逻辑是:
我希望有一些帮助可以更好地理解它们之间的关系,如果我正确地建立了表的模型,那么如果有人可以指出正确的改进方向,那就太好了。
答案 0 :(得分:0)
关于ERD中的建模,我不认为这符合多对多关系,但是EquipmentRentalHistory
是它自己的实体,具有多对多关系与Member
和EquipmentItem
的关系。
多对多更像是,“一个Member
可以访问0 ... n EquipmentItems
,而每个EquipmentItem
可以被0访问... n Members
”。
我不同意它们是一对多的关系。
氧气罐和一对脚蹼都可以归为“潜水装备”,并且状态为“已签出”。
您可以有多个“ Scuba Gear”标签,并将每个唯一的“ Scuba Gear”标签分配给它自己的EquipmentItem
,但是随后您将为每个新的EquipmentItem
创建新标签,而不是重用现有的。
这实际上取决于您是否要确切确定成员所租用的设备(也许有些东西损坏了,您可以追踪每个租用该设备的人吗?)。如果您要区分,那么每个项目都将是其自己的行。您还应该添加一个新列作为外部标识符,但是无需保持总计。
如果您的情况都一样,那么我只会保留total
,而不保留available
。如果保留了available
列,那么无论何时在EquipmentRentalHistory
中登录某些内容,您都将不得不不断对其进行更新。如果表不同步,这将很烦人。您可以只查询EquipmentRentalHistory
的设备Id
,然后对returnedDate IS NULL
的条目进行计数,以获取当前正在使用的设备数量
在租赁历史记录中最好有一个“到期日”列,而不是对日期计算进行硬编码,以防您要更改到期日。这样,您还可以授予扩展名。