我很难为这些关系建模。
有些产品,每个产品都属于一个product_type。 product_types具有不同功能的列表,例如。颜色,大小,重量,体积,多对多关系。每个功能依次具有不同的feature_options。红色,蓝色,绿色,黑色为颜色。最后,产品具有一些feature_options。一个例子应该是产品BIC2006,它具有product_type笔,其特征是颜色和重量,并且在这些特征中具有feature_options红色和蓝色(颜色为1g和2g)。
最后,我想按产品存储feature_options并按产品查询按功能列出的feature_options列表:
BIC2006-笔
颜色:红色,蓝色
重量:1g,2g
与SQLAlchemy一起使用的最佳数据库模型应该是什么?
就目前而言,由于我需要按尝试使用的产品存储feature_options,但是我不确定如何检索按功能排序:
class ProductTypes_Features(Base):
__tablename__ = 'product_types_features'
product_type_id = Column(Integer, ForeignKey('product_types.id'), primary_key=True)
feature_id = Column(Integer, ForeignKey('features.id'), primary_key=True)
class Feature_FeatureOptions(Base):
__tablename__ = 'feature_feature_options'
feature_id = Column(Integer, ForeignKey('features.id'), primary_key=True)
feature_options_id = Column(Integer, ForeignKey('feature_options.id'), primary_key=True)
class Product_FeatureOptions(Base):
__tablename__ = 'product_feature_options'
product_id = Column(Integer, ForeignKey('products.id'), primary_key=True)
feature_options_id = Column(Integer, ForeignKey('feature_options.id'), primary_key=True)
feature_id = Column(Integer, ForeignKey('features.id')) #??
class Products(Base):
__tablename__ = 'product'
id = Column(Integer, primary_key=True)
product_type_id = Column(Integer, ForeignKey('product_types.id'))
feature_options = relationship("Product_FeatureOptions")
class FeatureOptions(Base):
__tablename__ = 'feature_options'
id = Column(Integer, primary_key=True)
class Features(Base):
__tablename__ = 'features'
id = Column(Integer, primary_key=True)
feature_options = relationship("Feature_FeatureOptions")
class ProductTypes(Base):
__tablename__ = 'product_types'
id = Column(Integer, primary_key=True)
features = relationship("ProductType_Features")
如何查询?
session.query(Products.id,
Products.feature_options.feature_id,
Products.feature_options.feature_option_id).
order_by(...).all()
非常感谢您的最佳做法建议!