2
产品属性列表设计模式
我正在更新我们网站的产品数据库。它内置于MySQL中,但这更多是一个通用的数据库设计模式问题。 我打算切换到Supertype / Subtype模式。我们当前/以前的数据库主要是一个表,其中包含有关一种产品类型的数据。我们正在考虑将我们的产品范围扩展到包括不同的产品。 这个新的草稿设计是这样的: Product product_[type] product_attribute_[name] ---------------- ---------------- ---------------------------- part_number (PK) part_number (FK) attributeId (PK) UPC specific_attr1 (FK) attribute_name price specific_attr2 (FK) ... ... 我对产品属性表有疑问。这里的想法是产品可以具有给定属性的列表,例如颜色:红色,绿色,蓝色或材料:塑料,木材,铬,铝等。 该列表将存储在表中,并且该属性项的主键(PK)将在特定产品表中用作外键(FK)。 (Martin Fowler的书《企业应用程序体系结构的模式》称为“ 外键映射 ”) 这允许网站界面提取给定属性类型的属性列表,并将其吐入下拉选择菜单或其他UI元素中。该列表可以视为属性值的“授权”列表。 对我而言,拉出特定产品时最终发生的连接数量过多。您必须将每个产品属性表都连接到产品,以便获得该属性的字段。通常,该字段的名称可能仅仅是字符串(varchar)。 这种设计模式最终会创建大量表,并且最终会为每个属性提供一个表。解决此问题的一种方法是为所有产品属性创建更多的“抓包”表。像这样: product_attribute ---------------- attributeId (PK) name field_name 这样,您的表可能如下所示: 1 red color 2 blue color 3 chrome …