Si vous voulez que de nombreux acteurs soient associés à un film et que de nombreux films soient associés à un acteur, vous voulez un plusieurs à plusieurs. Cela signifie que vous avez besoin d'une table d'association. Sinon, vous pourriez abandonner la normalisation et utiliser une base de données NoSQL.
Une solution de table d'association pourrait ressembler à :
class Actor(Base):
__tablename__ = 'actors'
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
name = Column(String)
nickname = Column(String)
academy_awards = Column(Integer)
class Movie(Base):
__tablename__ = 'movies'
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
title = Column(String)
actors = relationship('ActorMovie', uselist=True, backref='movies')
class ActorMovie(Base):
__tablename__ = 'actor_movies'
actor_id = Column(UUID(as_uuid=True), ForeignKey('actors.id'))
movie_id = Column(UUID(as_uuid=True), ForeignKey('movies.id'))
Si vous ne voulez pas qu'ActorMovie soit un objet héritant de Base, vous pouvez utiliser sqlachlemy.schema.Table
.