Непересекающиеся отношения 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) 

I make ‘disjoint’ overlaping between MaintenanceDetail and Apartment_Maintain, Complex_Maintain, and Equipment Maintain.
Правильно ли это?

Если да, нужно ли соединять связь(линию) от sup-сущности (like Apartment_Maintain) обратно к их ассоциированной сущности(like Apart)?

1 ответ

  1. Неясно, что вы предлагаете. Что такое «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_companies может обслуживать любое оборудование и что оборудование в одной квартире может обслуживаться разными компаниями Maintenance_companies. Возможно, комплексы имеют контракты с сервисными компаниями, так что если, скажем, комплекс А имеет контракт с сервисными компаниями X и Y, то только X и Y могут обслуживать оборудование в комплексе A. Или, может быть, компании поддерживают только определенные типы оборудования, например, компания может поддерживать холодильники, но не кондиционеры, и вам нужно следить за тем, что каждая компания поддерживает и что каждая часть оборудования. Так далее.