【发布时间】:2016-07-22 13:04:52
【问题描述】:
我正在设计一个用于存储大量产品数据的数据库,这些数据既可以通过 API 提取,也可以从网络上抓取。这个爬虫会拉取一些静态数据和一些随时间变化的数据。因此,每种类型的数据(静态/变量)都有一个表。我试图决定是否应该有一个单独的表来存储与通过 API 提取的可变数据相比被抓取的可变数据。
起初,我认为它们应该存储在单独的表中,因为它们是由单独的工具管理的。但是,数据将通过 API 提取并按照相同的计划(每天)进行抓取,因此它们都将使用相同的 ProductID 和日期进行映射。因此,似乎我可以将两个表的模式结合起来,以节省查询期间的连接时间,以便稍后处理数据。这样做的明显缺点是管理是否需要在其中一个进程运行时创建或更新行(刮板工具与 API 工具中的哪个创建或更新行)。
不管怎样,这些脚本每天将提取数百万(可能是数千万)行的数据,并将其存储很长一段时间。所以,表格会变得非常大,这就是我稍后关心连接时间的原因。
这是一个示例,以防万一这一切都有些模糊。这有多个行业,但我只会使用房地产:
抓取的静态数据:ProductID、地址、城市、州、邮编、SquareFeet 等。
抓取的变量数据:ProductID、Price、PricePerSqFt 等
API 变量数据:ProductID、PageHits、UniqueVisitors 等
这里主要关注的是变量数据。所以,只是总结一下,为了一般的设计原则,单独的表,还是为了连接速度而一张表?
提前感谢您的意见
【问题讨论】:
标签: sql database-design database-normalization