0

我對ERD概念有點困惑。情況如下。不相交的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和設備之間的「脫節」重疊的維護方式。 這是正確的嗎?

如果是這樣,我是否需要將關係(線)從sup-entity(如Apartment_Maintain)連接回其關聯實體(如Apart)?

+0

功能要求尚不清楚。我可以猜測,Apartment_Maintain意味着公寓內的行爲(與某些設備相反),而Equipment_Maintain則意味着在一件設備上採取行動。但是Complex_Maintain是什麼?除了所有這些之外,爲什麼還要有MaintenanceDetail?此外,PK/FK的概念還不清楚:字段可以是主鍵或外鍵,但不能同時爲兩者。 – TAM

+0

譚是不正確的。一個密鑰可以同時輕鬆地同時PK和FK。弱實體也是如此,交集實體也是如此。 –

回答

0

目前尚不清楚您提出的實體是什麼。什麼是「Apartment_Maintain」?等

從你的描述,我在DB設計的起點是:

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的關係。你有維護公司的。你有設備。每件設備都在一個公寓裏,所以這是一個M:1的關係。每件設備由一個Maintenance_company維護,因此這是另一種M:1關係。

我可以想象會導致需要保留更多數據的需求。例如,假設任何維護公司都可以維護任何設備,並且一個公寓中的設備可能由不同的Maintenance_companies維護。也許Complex與維修公司有合同,因此,如果Complex A與Maintenance_companies X和Y簽有合同,那麼只有X和Y可以維護Complex A的設備。或者,公司可能只維護某些類型的設備,例如公司可能維護冰箱而不是空調,你需要跟蹤每家公司的維護情況以及每件設備是什麼。等