有一个来源提供了以下格式的数据,我必须根据这种格式设计表格。我应该保留他们现有的结构还是将它们分成几个表?
第一个表:
ItemId PropertyId Value
A1 10 Black
A1 20 16gb
A1 30 Iphone6
A1 1000 Apple
属性引用表:
PropetyID Value
10 Color
20 Memory Size
30 Item Name
100 Product Group
可以有超过 2000 个不同的属性。最后设计的表格应该能够回答以下问题:
How many white iPhones of 16gb were sold?
最佳答案
这个设计对我来说看起来不错,因为它没有违反任何明显的标准化规则。此外,这是为了编写您正在查找的查询而设计的。
因为我怀疑这是一个家庭作业问题,所以我不会为您编写整个查询,但我会给您一个粗略的指导,您必须将其转换为 SQL。要查找白色 16 GB iPhone:
- 选择 itemID,其中值 10 等于白色,值 20 等于 16GB,值 30 等于 iPhone。
- 由于这些条件不能在每一行上都成立,因此您需要查询与这些条件之一匹配的行(提示:
OR
运算符)。 - 话虽如此,您随后需要找出哪些 itemID 与所有这三个条件匹配(提示:
HAVING
子句)。
粗略的骨架:
SELECT items
FROM myTable
WHERE itemIsWhite OR itemIs16gp OR itemIsIphone
GROUP BY item
HAVING threeRowsReturned
如果您遇到任何困难,请随时询问,但我强烈建议您自己尝试一下,因为我已经为您提供了很多入门信息。
关于mysql - 我如何建模这个数据库来处理这个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30575807/