python - 在python中使用sqlalchemy对三个表之间的数据库多对多关系建模

标签 python database-design model sqlalchemy relationship

让我们考虑以下用于 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)

让我们考虑对这些表的一些限制。 (请不要质疑这个例子的意义,这是我想出的最好的描述我想学习的东西。:-))

  1. 一个 worker 可能有多个项目要处理。
  2. 一个项目可能有多个worker分配给它工作。
  3. 对于每个元组 (worker, project) 你有一个不同的 rating

我明白,我有三个多对多的关系。它们是:

  1. worker 和项目
  2. 工作人员和评级
  3. 评级和项目

我在定义两个表之间的多对多关系时没有问题。我只需要将以下关联表和关系添加到我的模型中。

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')

我失败的地方是像上面描述的那样链接表格“ratings”。感谢任何帮助。

最佳答案

让评分表像这样。

  Rating
---------------------
  rating_id (primary key) 
  worker_id (foreign key - worker(worker_id)) 
  project_id (foreign key - project(project_id)) 
  description

如果我理解正确的话,那就是。

关于python - 在python中使用sqlalchemy对三个表之间的数据库多对多关系建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6575396/

相关文章:

python - Python 中函数运行时间较长 - 效率

python - 针对一维列表绘制单行二维 numpy 数组

python - 如何使用 OAUTH/JWT 与 HANA 建立 Python 连接

sql - 多个数据库表或合并为一个

javascript - 前端和服务器共享相同的模型

python - 如何监控 TensorFlow 估计器训练中的验证损失?

sql - 除了 SQL Server 之外,哪个数据库可以安全地使用 GUID 作为主键?

mysql - 多个供应商的产品定价历史数据库设计

model - 在\Phalcon\Mvc\Model 中定义源表的最正确方法是什么?

mysql - CakePHP 模型链查找