首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为多个关系设置主键

为多个关系设置主键
EN

Database Administration用户
提问于 2012-10-28 10:38:50
回答 1查看 139关注 0票数 4

对于这两种关系,客户和设备:

有有限的设备(库存),在雇用时,我需要存储租用日期和预期的返回日期。

我画了个草图:

代码语言:javascript
复制
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,那么客户将来就不能再租用设备了?

我是不是设计错了模式?你建议一个更好的方法吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2012-10-28 11:54:17

在实际系统中(与教科书中的问题相反),您可能希望在任何事务上都有某种事务标识符,比如雇用一个或多个设备。假设您正在经营设备租赁业务,您的交易可能必须考虑到一次出租多个设备。因此,您需要添加一个订单表,如下所示:

代码语言:javascript
复制
Table Order
order_id
order_date

您的Hire_Equipment表将更改如下:

代码语言:javascript
复制
Table Hire_Equipment
customer_id (PK)
order_id (PK)
equip_id (PK)
expected_return_date

请注意,hiring_date已经标准化到Order级别,但是expected_return_date被保留在项目级别,因为您可能希望允许单一订单包含混合租期。

这种设计允许客户在给定的日期租用一台设备不止一次,但它防止在同一订单上多次使用相同的设备--这正是您所期望的。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/27770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档