我有以下问题:
仅使用二元关系,为以下描述构建实体关系图。包括实体标签,主键字段,关系标签和关系的多重性。
“一家公司经营着几个汽车维修和服务车库,每个车库都有自己独特的号码(gargNo)。当车主联系车库时,他们的详细信息会被记录下来,并且他们被分配给车主。他们的车也注册了车库并分配了一个参考编号(carNo)。车主可能拥有一辆或多辆车,但一辆车只能在一个车库登记。当一辆车被预订到车库时,会为其制定服务计划。服务计划对于特定汽车可能是唯一的(例如,治愈吱吱作响的挡风玻璃刮水器),或者它可以是用于许多汽车的服务计划(例如,标准的60000英里服务)。任何服务计划可以包括一个或多个操作(改变油) ,拆除刮水器电机等。服务计划中的每种操作都有一个唯一的编号(operationNo)。
这是我的答案:
对于所有数据库老手,这看起来不错吗?
此外,任何其他意见反馈将不胜感激......
不是家庭作业
编辑 - 为什么人们会继续编辑帖子但不做任何更改?
答案 0 :(得分:2)
完全基于所提出的要求,忽略所有可能的现实复杂情况(例如当车主将汽车服务从一个车库转移到另一个车库时会发生什么):
我会遗漏公司。只提到了一个,并没有迹象表明我们正在为多家公司录制数据。
车主和车库之间的关系是通过汽车。车主和车库之间没有直接关系。 (考虑到多个车库,确保给定的多车主在系统中出现一次将很难执行。)
汽车和车库之间的关系也许应该“注册”。严格的阅读意味着汽车在车主接触时与车库相关联,而不是在提供服务时。
您需要实体 ServicePlanType [SPT]。大多数SPT是预定义的,多辆车将使用给定的SPT(60,000英里调整)。如果,何时以及根据需要,将添加其他SPT。可以对“标准”与“临时”子类型进行争论,但我认为它们是如此相似(基于操作),这是不需要的。然后:
操作可能涉及零个或多个服务计划类型。鉴于需要临时服务计划,可能需要最初不属于任何给定集合服务计划的操作。 (那或他们根据需要加入,这可能是可以接受的。我姐姐的沙鼠在从学校回家的路上逃脱一次,他们不得不拆开部分汽车把它拿出来。不收费,也许他们没有在他们的数据库中“提取沙鼠”。(我不这样做。)
我不会将服务计划类型或操作与车库联系起来。据推测,如果公司的一个车库可以做到这一点,他们都应该能够做到这一点,即使是临时车库。
您不需要将服务计划与车库联系起来,因为服务计划所涉及的汽车与车库有关。话虽如此,在物理实施时,这样做可能会很好。此外,如果汽车后来进入第二个车库,车与车库之间的关系会发生变化,如果没有车库关系的服务计划,你就会忘记谁做了早期的工作。正确地说,我认为你想要将汽车的车型设计为车库的服务计划,但他们特别拼写了“车到车库”。提出这些问题,看看业主说的话。
答案 1 :(得分:1)
根据问题陈述,我提出以下建议:
为了简单起见,我使用了Address,OwnerDetails等通用字段。
编辑:服务计划和操作之间的多对多解释:
“更换机油”操作是服务计划“30K维护”,“60K维护”和“换油”的一部分。
当然,“30K维护”和“60K维护”的维修计划有多项操作(更换机油,补充制动液,检查轮胎压力,平衡和旋转轮胎)。
因此,服务计划与运营之间的关系是多对多的关系。
此结构是一个模板,可以应用于VehicleService实例。