2013-08-17 22 views
0

我正在尋找定義兩個人之間的關係並在SQLAlchemy中查詢它的最佳方法。我很難把這個包裹起來。這是我迄今爲止的,但我不知道我是否應該使用這樣的鏈接表模型。建議嗎?建模人際關係

character_a = studentcharacter_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)) 

回答

0

數據庫模式很難第一次正確地得到。我建議你按照Peter Norvig的建議 - 用英文編寫測試用例,用代碼模擬它們(假設它們存在於數據庫中的關係),你會發現當前設計的缺點。然後你可以改進關係,當你完成時,你的代碼必須和你用英文寫的用例一樣可讀。