Для отношения «один-ко-многим» ваш второй прием - это стандартный, нормальный, правильный способ его выполнения.
Тем не менее, вы полностью уверены, что отношения «многие-ко-многим», которые вы наброскали при первом взятии, не применимы? Я не был бы так уверен, но вы знаете свой домен лучше, чем I.
EDIT:
ОП добавил комментарий;
Спасибо. Я действительно не верю, что фотографии должны принадлежать более чем одному событию - события - это фотосессии, каждая фотография по определению от определенной съемки, а просмотр по событию - единственный способ просмотреть сайт. Я уверен, что один-ко-многим правильный.
В этом комментарии есть несколько уроков, поэтому я хотел бы отредактировать это, чтобы подчеркнуть эти уроки.
Наблюдение 1. Самое главное, что вы не можете моделировать схему, не зная двух вещей: моделирование реальной проблемной области, и, что требует наше решение от модели.
Мое первоначальное предположение состояло в том, что события и изображения OP моделировали дисплей фотографий на мероприятиях, например, в картинной галерее (или в галерее изображений на веб-сайте). В этом случае, например, в галерее Ansel Adams Online могут быть очень интересные события, на которых показаны фотографии Ансела Адамса под названием «Зрелая работа Адамса», «Фотографии структур Адамса» или «Фотографии пустынь Адамса». Все три события могут включать в себя Адам "Transmission Lines in the Mohave Desert", 1941. Поскольку многие фотографии могут отображаться во многих событиях, нам нужна структура «многие-ко-многим».
Но «событие» OP - это фотосессия, и, очевидно, как отмечает OP, любая фотография снимается в одной и единственной фотографии.
Урок здесь состоит в том, что мы не можем моделировать (или моделировать только временно), пока не узнаем Проблемную область.
Я также предлагаю изменить название таблицы «события», чтобы сделать эту руду явной. Вызов «стрелять» или «photo_shoot» делает более понятным то, что мы моделируем.
Наблюдение 2. Комментарий ФП дает ответ на его возражение о том, что наличие события FK на фотографии является «грязным». OP довольно уверенно понимает, что это «избегает объединения, и это заставляет отношение к« имеет один/принадлежит », а не« имеет много ». (Избегая объединения - проблема реализации, правильная взаимосвязь более фундаментальна, так как это вопрос моделирования).
Что он должен также понимать, так это то, что в нашем решении и в Проблемном домене имеет смысл спросить фотографии, «на какой фотосессии/мероприятии была сделана эта фотография». И вот почему это не грязно: «в котором сеанс принят» является законным вопросом или атрибутом фотографии, и FK дает ответ на этот вопрос. Это также означает, что в этом случае FK от фотографии к событию не должен " t быть недействительным: фотография должна иметь фотосессию, иначе фотографии не может быть.
(Здесь есть несколько дополнительных уроков, о том, что значит иметь отношения aa one-to-many или много-ко-многим, и что это означает, чтобы сделать FK нулевым или нет, я оставлю это в другое время.)
Спасибо. Я действительно не верю, что фотографии должны принадлежать более чем одному событию - события - это фотосессии, каждая фотография по определению от определенной съемки, а просмотр по событию - единственный способ просмотреть сайт. Я уверен, что один-ко-многим правильный. – palmsey