SQL数据库布局,包括列表作为条目

时间:2018-03-08 17:49:54

标签: mysql sql database database-design database-indexes

我想写一个简单的主页来跟踪各种在线商店的价格。我有一个刮刀,可以读取特定产品的价格,我计划每天运行一次刮刀,我想跟踪一些产品。

现在我需要存储这些信息,而且我不确定一个好的方法会是什么样子。我想我应该为我跟踪的每个产品创建一个表,其中包含两行:date | price

我仍然有一些悬而未决的问题:这样一张桌子的名字应该是什么?产品名称?如果产品名称包含空格会怎样?或者也许是导致产品的URL部分?这似乎有点难以理解。或者我应该将表名称命名为id(增加数字)并保留包含行的单独表格productsproduct_nameproduct_url,{{1} }。

这似乎是一个好主意,因为我可以稍后在产品中添加更多信息(例如说明)。

欢迎任何有关此主题的帮助,因为我以前从未接触过数据库。我的考虑是否合理。还可能出现其他什么问题?

编辑:我无法将完整的产品数据存储在一个表格中,因为每个产品在不同的时间点都包含可变数量的价格点。

2 个答案:

答案 0 :(得分:2)

我建议对RDBMS和数据库设计进行一些研究。这是一个很好的资源:

https://www.calebcurry.com/blogs/database-design/what-is-a-relational-database

在该系列之后,试试他的下一级视频:

https://www.youtube.com/watch?v=e7Pr1VgPK4w

在您完成创建数据库的任务之前,必须进行一些基线数据库设计。

答案 1 :(得分:1)

如果我理解正确,您需要3个表...这是一个基本的关系数据库。

1) a product table
2) a pricing table
3) a price point type table

您的产品表将包含产品IE product_id product_name等等的基础知识等...

您的产品定价表将包含您要存储的价格 - 它还包含一个与价格点相关的字段类型

您的价格点类型表将包含不同的类型

例如,表一将如下所示:

+----------------------------------------------------------+
|                        Products                          | 
+----------------------------------------------------------+
|   product_id    |    product_name    |    product_url    |
+----------------------------------------------------------+
|      101        |    Baby Food       |  www.example.com  |
|      102        |  Green Tomatoes    |  www.widget.com   |
+----------------------------------------------------------+

然后你有一个价格点类型表

+-------------------------------------------------------+
|                  price_point_types                    |
+-------------------------------------------------------+
|    price_point_id    |    type    |    description    |
+-------------------------------------------------------+
|         1            |   small    | Small price point |
|         2            |   medium   |   Medium Point    |
|         3            |   large    |   Large  POint    |
+-------------------------------------------------------+

你有定价表:

+------------------------------------------------------------------+
|                            pricing                               |
+------------------------------------------------------------------+
|    id    |    price_point_id    |    product_id    |    price    |
+------------------------------------------------------------------|
|    1     |           1          |       101        |    5.00     |
|    2     |           2          |       101        |    10.00    |
|    3     |           3          |       101        |    15.00    |
|    4     |           1          |       102        |    6.00     |
|    5     |           2          |       102        |    9.00     |
|    6     |           3          |       102        |    12.00    |
+------------------------------------------------------------------+

现在,您可以看到产品Baby Food我们有3个价格点smallmediumlarge5.00,{{的价格相关联分别为1}}和10.00。产品15.00也是如此。通过这种方式,您可以拥有无​​限的价格点类型和每个产品无限的价格点......有意义吗?