让我们在python中考虑sqlalchemy的以下表模型。
class Worker(Base):
id Column(Integer, primary = True)
name Column(String, nullable = False)
class Project(Base):
id Column(Integer, primary = True)
name Column(String, nullable = False)
class Rating(Base):
id Column(Integer, primary = True)
description Column(String, nullable = False)
让我们考虑对这些表的一些限制。 (请不要质疑这个例子的意义,这是我想出的最好的描述我想学的东西。: - ))
worker
可能有多个projects
可供使用。project
可能会分配多个workers
来处理它。(worker, project)
,您都有一个独特的rating
我明白,我有三对多关系。那些是:
我在定义两个表之间的多对多关系时没有问题。我只需要添加以下关联表和我的模型的实现。
worker_project = Table('worker_project', METADATA,
Column('worker_id', Integer, ForeignKey('workers.id')),
Column('project_id', Integer, ForeignKey('projects.id')),
class Worker(Base):
# [...]
papers = relationship('Project',
secondary=worker_project,
backref='workers')
我所做的失败,就是如上所述链接表“评级”。感谢任何帮助。
答案 0 :(得分:4)
使评级表格如此。
Rating
---------------------
rating_id (primary key)
worker_id (foreign key - worker(worker_id))
project_id (foreign key - project(project_id))
description
如果我正确地理解了这一点。