0

我对 ERD 概念有点困惑。情况如下。

有一个公寓大楼(它有很多公寓;每个公寓都有设备——比如空调、冰箱等)。我想将它们与“维护公司”实体联系起来。

这是我目前这样做的方式

MaintenanceCompany(M_ID(PK), .....)
MaintenanceDetail(M_Detail_ID(PK), M_ID(FK), M_Type, .....)
Apartment_Maintain(M_Detail_ID(PK/FK), Apartment_ID)
Complex_Maintain(M_Detail_ID(PK/FK), Complex_ID)
Equipment_Maintain(M_Detail_ID(PK/FK), Equ_ID) 

我在 MaintenanceDetail 和 Apartment_Maintain、Complex_Maintain 和 Equipment Maintain 之间进行了“不相交”的重叠。这是对的吗?

如果是这样,我是否需要将关系(行)从超级实体(如 Apartment_Maintain)连接回其关联实体(如 Apart)?

4

1 回答 1

0

目前尚不清楚您提议的实体是什么。什么是“Apartment_Maintain”?等等

根据您的描述,我的数据库设计开始是:

complex (id (pk), name, ...)
apartment (id (pk), complex_id (fk), ...)
maintenance_company (id (pk), name, ...)
equipment (id (pk), apartment_id (fk), maintenance_company_id (fk), ...)

也就是说,你有复合体。你有公寓。每个公寓都在一个综合体中,因此存在 M:1 关系。你有Maintenance_company的。你有装备。每件设备都在一个公寓中,所以这是一个 M:1 的关系。每件设备都由一个 Maintenance_company 维护,因此这是另一种 M:1 关系。

我可以想象会导致需要保留额外数据的要求。例如,这假设任何 Maintenance_company 都可以维护任何一件设备,并且一个公寓中的设备可能由不同的 Maintenance_company 维护。也许综合体与 Maintenance_companies 签订了合同,例如,如果综合体 A 与 Maintenance_companies X 和 Y 签订了合同,那么只有 X 和 Y 可以维护综合体 A 中的设备。或者公司可能只维护某些类型的设备,例如公司可能维护冰箱而不是空调,您需要跟踪每家公司维护的内容以及每台设备的内容。等等。

于 2016-05-02T14:34:27.350 回答