Als je wilt dat veel acteurs aan een film worden gekoppeld en veel films aan een acteur, dan wil je een veel-op-veel. Dit betekent dat je een associatietabel nodig hebt. Anders zou je normalisatie kunnen weggooien en een NoSQL-database kunnen gebruiken.
Een oplossing voor een associatietabel kan lijken op:
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'))
Als u niet wilt dat ActorMovie een object is dat van Base wordt geërfd, kunt u sqlachlemy.schema.Table
gebruiken .