多くの俳優を映画に関連付け、多くの映画を俳優に関連付ける場合は、多対多が必要です。これは、関連付けテーブルが必要であることを意味します。それ以外の場合は、正規化を取り除いてNoSQLデータベースを使用できます。
アソシエーションテーブルソリューションは次のようになります。
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'))
ActorMovieをBaseから継承するオブジェクトにしたくない場合は、sqlachlemy.schema.Table
を使用できます。 。