mySQL数据库创建/设计 - 不确定如何组织数据时就像这样

时间:2012-05-27 14:59:38

标签: mysql database database-design

通常情况下,我只需搜索谷歌一个问题并找到答案,但我知道我的SQL数据库并不是一件事,所以我从头开始。

我的问题是如何格式化/组织我拥有的数据,而不是像电子表格那样简单。我认为它将被格式化的方式将导致数十万个单独的表,这似乎不对。这是我的数据,也许有人可以指出我在如何在mySQL数据库中组织它的正确方向,这样它不仅有条理,而且可以根据每个人生成报告“点“数据:

我从网站的特定网址上删除了产品评论,让我们举例说明亚马逊。我需要按照他们留在亚马逊上的顺序保留评论。

为了保持这一点,我会说我已经从亚马逊的三个不同网址上删除了产品评论:

http://amazon.com/product/12345-x
http://amazon.com/product/12345-y
http://amazon.com/product/12345-z

因此,从这三个网址中的每个网址中,每个网址上有3个不同的人留下了评论。所以我认为它将存储在数据库中(这可能不对)将是这样的:

          TABLE FOR PRODUCT 12345-X
REVIEW NUMBER    REVIEWER     THEIR REVIEW     NAME OF PRODUCT   PRODUCT PRICE   REVIEW LEFT ON
1                username     great product    some product      $399            monday
2                username     crappy product                                     wednesday
3                username     okay product                                       wednesday


          TABLE FOR PRODUCT 12345-Y
REVIEW NUMBER    REVIEWER     THEIR REVIEW     NAME OF PRODUCT   PRODUCT PRICE   REVIEW LEFT ON ON
1                username     great product    some product      $399            monday
2                username     crappy product                                     wednesday
3                username     okay product                                       wednesday


          TABLE FOR PRODUCT 12345-Z
REVIEW NUMBER    REVIEWER     THEIR REVIEW     NAME OF PRODUCT   PRODUCT PRICE   REVIEW LEFT ON ON
1                username     great product    some product      $399            monday
2                username     crappy product                                     wednesday
3                username     okay product                                       wednesday

现在,由于我已经获得了数千种产品的数据,这显然会导致数千个表格,而且这不是组织事物的正确/最佳方式。

为了使事情变得更糟/更复杂,有时同一产品的价格会发生变化,所以它以两种不同的价格(实际上是很多不同的价格)出售。我还希望能够获得以超过一个价格出售的每个“相同产品”的“平均价格”,并显示最常留下的日评价和整体评价。基于每个产品。

因此,您可以看到我需要能够不仅在每个产品上生成报告,而且还要为每个产品中的每个“列”数据生成报告......这将导致更多的表格。

有人可以指出我在数据库中如何组织这些数据的正确方向吗?

如果我要求的内容过于荒谬可以回答我道歉,我甚至不知道如何在数据库中组织这个,甚至不知道从哪里开始(键入google的短语)。

1 个答案:

答案 0 :(得分:2)

如果我找对你,你想存储不同的东西: 1个产品 2评论每个产品 3该人的数据如何划分评论名称......

所以你需要的只是表。

TABLE FOR PRODUCT
ProductID  P_Price   P_Name
1          399       Name X
2          299       Name y
3          199       Name z

TABLE FOR Review
ReviewID  ProductID  Review            R_Date           UserID
1         2          Review for y      1/1/2012         1
2         1          Review for x      1/1/2010         2
3         3          Review for z      4/4/2009         2


Table for User
UserID    U_Name
1         Peter
2         Simon

所以现在你可以,例如看到西蒙为X和Z写了一个Rewiev。每个产品都有一个评论。 一般情况下,如果必须在运行时创建表,则需要进行实际操作。 Tabes始终是一个修复策略,只有在您决定进行一些重大更改(例如向每个用户添加密码)时才会更改。 当你添加新评论这样的新信息时,你总是只添加一个或多个托管。

我认为你应该得到一本关于MySQL的书或长篇教程(或者你曾经使用过的),其中hopfuly是关于数据组织的重要章节。

我希望我能帮到你。