模拟人际关系

时间:2013-08-17 02:42:32

标签: python database-design sqlalchemy data-modeling

我正在寻找定义两个人之间关系的最佳方法,并在SQLAlchemy中查询它。我很难绕过这个。这是我到目前为止,但我不知道我是否应该使用模型作为这样的链接表。建议?

示例character_a = student character_b = teacher

[[relationship.character_b, relationship.character_b.role] for relationship in character.relationships]获取相关字符及其角色的列表。

class Character(db.Model):
    __tablename__ = 'characters'
    story_id = db.Column(db.String, db.ForeignKey('stories.id'))
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(50))
    gender = db.Column(db.String(6))
    description = db.Column(db.Text())
    relationships = db.relationship('Relationship', backref='character', lazy='dynamic')

class Relationship(db.Model):
    __tablename__ = 'relationships'
    character_a_id = db.Column(db.String, db.ForeignKey('characters.id'))
    character_b_id = db.Column(db.String, db.ForeignKey('characters.id'))
    character_a_role = db.Column(db.String(25))
    character_b_role = db.Column(db.String(25))

1 个答案:

答案 0 :(得分:0)

数据库模式第一次很难正确。我建议你遵循Peter Norvig的建议 - 用英语编写测试用例,用代码模拟它们(假设它们存在于数据库中的关系),你会发现当前设计的缺点。然后你可以改进关系,当你完成后,你的代码必须像你用英文写的用例一样可读。