国家/城市+国家/资本=一对多+一对一?

时间:2017-08-19 05:13:49

标签: python sqlalchemy

你如何增强this一对多关系,使'多'方面的关系成为一个尊贵的关系。

使用一个具体的例子,如何在以下模型中引入资本的概念?它会是一个额外的一对一映射吗?它会干扰现有的一对多吗?仅仅引入db.Boolean is_capital就足够了吗?这最后是惯用还是有更合适的解决方案?

class City(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    ...
    country_id = db.Column(db.Integer, db.ForeignKey('country.id'))
    country = db.relationship('Country', back_populates='cities')

class Country(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    ...
    cities = db.relationship('City', back_populates='country')

1 个答案:

答案 0 :(得分:1)

您可以创建一个新的Capital表,其中每个国家/地区包含一行包含国家/地区ID和城市ID,或者您只需在包含Capital City ID的Country表中添加一列。对于每个城市,其中任何一个都将提供比布尔is_capital更高效的查找和更紧凑的存储。

相关问题