对于这两种关系,客户和设备:
有有限的设备(库存),在雇用时,我需要存储租用日期和预期的返回日期。
我画了个草图:
Table Customer
customer_id
Table Equipment
equip_id
available_stock
Table Hire_Equipment
customer_id
equip_id
hiring_date
expected_return_date我不确定的是Hire_Equipment的主键是什么?
如果是customer_id和equip_id,那么客户将来就不能再租用设备了?
我是不是设计错了模式?你建议一个更好的方法吗?
发布于 2012-10-28 11:54:17
在实际系统中(与教科书中的问题相反),您可能希望在任何事务上都有某种事务标识符,比如雇用一个或多个设备。假设您正在经营设备租赁业务,您的交易可能必须考虑到一次出租多个设备。因此,您需要添加一个订单表,如下所示:
Table Order
order_id
order_date您的Hire_Equipment表将更改如下:
Table Hire_Equipment
customer_id (PK)
order_id (PK)
equip_id (PK)
expected_return_date请注意,hiring_date已经标准化到Order级别,但是expected_return_date被保留在项目级别,因为您可能希望允许单一订单包含混合租期。
这种设计允许客户在给定的日期租用一台设备不止一次,但它防止在同一订单上多次使用相同的设备--这正是您所期望的。
https://dba.stackexchange.com/questions/27770
复制相似问题