对于我的网站,我有表格
Category :: id | name
Product :: id | name | categoryid
现在每个类别可能有不同的大小,因为我还创建了一个表
Size :: id | name | categoryid | price
现在的问题是,每个类别都有不同的成分,客户可以选择添加到他购买的成分 产品。这些成分具有不同尺寸的不同价格。 为此我还有一个像
这样的表格Ingredient :: id | name | sizeid | categoryid | price
我不确定这个结构是否真的正常化了。有人可以帮我优化这个结构,我需要为这个结构索引哪个索引?
答案 0 :(得分:1)
这些成分对不同尺寸的价格不同。
如果一种成分的价格仅取决于其大小而不是该类别,那么试试这个:
Ingredient :: id | name
Ingredient_Price :: ingredientid | sizeid | price
Ingredient_Category :: ingredientid | categoryid
答案 1 :(得分:0)
结构对我来说很好看。 PK当然会通过将它们定义为PK来编制索引 您需要为所有FK添加索引:
product.categoryId,
size.categoryId,
ingredient.categoryId,
ingredient.sizeId
根据表的大小以及您可能希望按字母顺序显示项目的事实,您可能还希望索引所有名称字段。
答案 2 :(得分:0)
Category :: id |命名
产品:: id |名字| categoryid
Size :: id |名称|
成分:: id |名称|
Category_Size :: id | categoryid | SizeID |价格
Category_Ingredient :: id | categoryID |成分ID |价格
所有复杂实体都被分解为最不可能的部分(单个表)。然后使用外键关系来逻辑地联系它们。