2016-04-13 3 views
-1

У меня есть простая модель: люди, фото, пара фотографий.Два объекта должны иметь один и тот же родительский объект в реляционной модели.

У объекта «PhotoPair» должно быть два объекта «Фото» из одного и того же «Человека».

В футляре this, PhotoPair может содержать фотографии от разных лиц.

Итак, как я могу решить эту проблему? (Без использования триггеров)

+0

Во-первых - удалить внешний ключ от человека к photo_pair. Вы уже подразумевали, что ~ может быть ~ более одного человека, основанного на последствиях из двух фотографий фото. Если в каждой паре фактически нет 3 владельцев фотографий. Во-вторых, нет оснований, основанных исключительно на ограничениях сказать, что люди, «владеющие» отдельными фотографиями в photo_pair, различны. На самом деле я не уверен, почему вы так моделируете этот способ. Всегда ли ВСЕГДА будут «парными» фотографиями? –

+0

Благодарим вас за ответ. Всегда будут пары фотографий. – jagermeister

ответ

0

Поскольку у вас PersonId в стереопаре аэроснимков, вы можете настроить перекрытие внешних ключей:

ALTER TABLE PhotoPair 
ADD CONSTRAINT 'photo1_person_fk' 
    FOREIGN KEY (Photo1, PersonID) 
    REFERENCES Photo (PhotoID, PersonID), 
ADD CONSTRAINT 'photo2_person_fk' 
    FOREIGN KEY (Photo2, PersonID) 
    REFERENCES Photo (PhotoID, PersonID); 
Смежные вопросы