SQL 数据库布局,包括作为条目的列表
Posted
技术标签:
【中文标题】SQL 数据库布局,包括作为条目的列表【英文标题】:SQL Database Layout including Lists as entries 【发布时间】:2018-03-08 17:49:54 【问题描述】:我想写一个简单的主页来跟踪各种在线商店的价格。我有一个刮板,它可以读取特定产品的价格,我计划每天运行一次这个刮板,也许我想跟踪一些产品。
现在我需要存储这些信息,但我不确定一个好的方法会是什么样子。我想我应该为我跟踪的每个产品创建一个表,其中包含两行:date
| price
.
我还有一些悬而未决的问题:这样一张桌子应该叫什么名字?产品名称?如果产品名称包含空格会怎样?或者可能是指向产品的 URL 部分?不过,这似乎有点难以理解。或者我应该将表名命名为 id(递增数字)并保留一个单独的表名products
,其中包含以下行:product_name
、product_url
、track_table_id
。
这似乎是个好主意,因为我可以稍后为产品添加更多信息(例如描述)。
欢迎任何有关此主题的帮助,因为我以前从未接触过数据库。我的考虑是否合理。可能会出现什么其他问题?
编辑:我无法将完整的产品数据存储在单个表中,因为每个产品在不同时间点都包含可变数量的价格点。
【问题讨论】:
恕我直言,您应该有一个products
表,其中包含列或 字段 product_id
、product_name
、url
等...这是基本的数据库管理——您似乎对数据在 DBMS 中的存储方式缺乏了解?
@Zak 然后我会有一行包含列表(不同价格点的不同价格),我在想没有人想要列表作为数据库条目。您将如何处理?
【参考方案1】:
我也建议对 RDBMS 和数据库设计进行一些研究。这是一个很好的开始资源:
https://www.calebcurry.com/blogs/database-design/what-is-a-relational-database
在那个系列之后,试试他的下一个级别的视频:
https://www.youtube.com/watch?v=e7Pr1VgPK4w
在您承担创建数据库的任务之前,需要进行一些基线 DB 设计。
【讨论】:
【参考方案2】:如果我理解正确,您需要 3 个表...这是一个基本的关系数据库。
1) a product table
2) a pricing table
3) a price point type table
您的产品表将包含产品的基本信息 IE product_id
product_name
etc etc etc ...
您的产品定价表将包含您要存储的价格 - 它还将包含一个将其与价格点相关联的字段type
您的价格点类型表将包含不同的类型
例如,表一将如下所示:
+----------------------------------------------------------+
| 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 个价格点small
、medium
和large
,分别与5.00
、10.00
和15.00
的价格相关。产品Green Tomatoes
也是如此。这样您就可以拥有无限的价格点类型和每个产品的无限价格点......有意义吗?
【讨论】:
谢谢。这很有意义,但我对价格点表仍然有些困惑。它到底是干什么用的?这是否适用于例如具有多种尺寸并因此具有多种价格的产品? 是的 .. 没错 .. 它技术上 不是一个数据透视表 .. 但你仍然可以把它当作一个 .. 所以你可以有小、中、大、绿色、蓝色、橙色、短、高、中 - 都在同一张表中。它只是为您的价格点提供了一个描述。 好的,谢谢。这似乎是个好主意。我还没有遇到过这样的产品,因此甚至没有想过需要这样的桌子。以上是关于SQL 数据库布局,包括作为条目的列表的主要内容,如果未能解决你的问题,请参考以下文章