希望这不是基于意见的,但是我有以下模型:
owners = db.Table('owners',
db.Column('user_id', db.Integer, db.ForeignKey('user.id'), primary_key=True),
db.Column('project_id', db.Integer, db.ForeignKey('project.id'), primary_key=True))
members = db.Table('members',
db.Column('user_id', db.Integer, db.ForeignKey('user.id'), primary_key=True),
db.Column('project_id', db.Integer, db.ForeignKey('project.id'), primary_key=True))
class User(Base):
id = db.Column(db.Integer, primary_key=True, nullable=False)
projects = db.relationship('Project', secondary=owners, backref=db.backref('owners'))
memberships = db.relationship('Project', secondary=members, backref=db.backref('members'))
def __repr__(self):
return f'<User {self.email}>'
class Project(Base):
id = db.Column(db.Integer, primary_key=True, nullable=False)
def __repr__(self):
return f'<Project {self.name}>'
据我了解,使用这样的帮助器表维护成本很低,通常是正确的方法,但是如您所见,对于两种不同类型的关系,我有两个不同的帮助器表。用户可以是所有者,也可以只是组的标准成员。
我已经研究过使用关联模型,但这似乎会使数据库更难以管理。
是否有一种很好的方式将用户记录为所有者或基本成员,而无需使用两个单独的帮助程序表,或者这是最好的方式?