Pour un à-plusieurs, votre deuxième prise est la norme, de façon normale, correcte de le faire.
Cependant, êtes-vous entièrement que la relation plusieurs-à-plusieurs que vous avez esquissée dans votre première prise ne s'applique pas? Je ne serais pas aussi sûr, mais vous savez que votre domaine mieux que moi
EDIT:
L'OP a ajouté un commentaire;
Merci. Je ne crois vraiment pas que les photos devraient appartenir à plus d'un événement - les événements sont des séances de photos, chaque photo est par définition tirée d'un certain tournage, et la vue par événement est la seule façon de naviguer sur le site. Je suis plutôt confiant que le one-to-many est correct.
Il y a plusieurs leçons dans ce commentaire, je voulais donc éditer ceci pour souligner ces leçons.
Observation 1. Le plus important est que vous ne pouvez pas modéliser un schéma sans connaître deux choses: le vrai domaine de problème étant modélisé, et ce que notre solution exige du modèle. Ma première estimation était que les événements et les images de l'OP modélisaient l'affichage de photos lors d'événements, comme dans une galerie d'art (ou une galerie de photos sur un site web). Dans ce cas, par exemple, la galerie en ligne Ansel Adams pourrait très bien avoir des événements, dans lesquels des photos d'Ansel Adams sont montrées, intitulées «Adams 'Mature Work», «Adams's Photos of Structures», ou «Adams's Photos of Deserts». Les trois événements peuvent inclure les "Transmission Lines in the Mohave Desert", 1941 d'Adam. Puisque de nombreuses photos pourraient être montrées dans de nombreux événements, nous aurions besoin d'une structure plusieurs-à-plusieurs.
Mais l '«événement» de l'OP est une séance de photos , et clairement, comme le note l'OP, une photo est prise en une et une seule séance photo.La leçon à retenir ici est que nous ne pouvons pas modéliser (ou seulement modéliser provisoirement) jusqu'à ce que nous connaissions le domaine du problème.
Je suggère également que le nom de la table "events" soit changé, pour rendre ce minerai explicite. L'appeler "shoot" ou "photo_shoot" rend plus clair ce que nous sommes en train de modéliser.
Observation 2. Le commentaire de l'OP fournit une réponse à son objection selon laquelle un événement FK sur une photo est «désordonné». L'OP se rend compte assez astucieusement que cela "évite une jointure, et il force la relation à un" a/appartient à "au lieu de" a beaucoup ". (Éviter une jointure est un problème de mise en œuvre, la relation correcte est plus fondamentale, car c'est une question de modélisation.)
Ce qu'il devrait également réaliser est que dans notre solution, et dans le domaine du problème, il est logique de demander d'une photo, "dans quelle photo séance/événement cette photo at-elle été prise". Et c'est pourquoi il n'est pas enchevêtré: "dans quelle session prise" est une question légitime ou un attribut d'une photo, et le FK fournit la réponse à cette question.Elle signifie également que dans ce cas, le FK de la photo à l'événement ne devrait pas t être nullable: une photo doit avoir une séance photo, sinon il ne pourrait y avoir aucune photo
(Il y a quelques leçons supplémentaires ici, sur ce que cela signifie d'avoir une relation un-à-plusieurs ou un nombre-à-plusieurs, et ce que cela signifie de rendre un FK nul ou non, je vais les relier à un autre moment.)
Merci. Je ne crois vraiment pas que les photos devraient appartenir à plus d'un événement - les événements sont des séances de photos, chaque photo est par définition tirée d'un certain tournage, et la vue par événement est la seule façon de naviguer sur le site. Je suis plutôt confiant que le one-to-many est correct. – palmsey