以列或行存储站点数据

时间:2014-07-12 00:38:59

标签: mysql storing-data

这是一个如何执行从网页存储数据的最佳实践的问题。喜欢文字/图片网址/链接等。

我有一个CMS,你可以创建网页。在这里,您可以编辑文本/上传图像。将来,“添加新元素”,添加链接到标签等也是很好的。

我需要一个强大而灵活的解决方案,同时具有良好的性能。获取/接收这些数据。

让我们考虑一下1000页,每页大约25个元素,可以更新并存储在数据库中。

备选方案1)

为这些页面上的每个元素创建一个表和一列,例如: title_1,title_2,image_1,image_2。

这里我们有一组我们可以更新的列,我们可以在网页上使用这些列。

替代方案2)

使用列(id,namespace,page_id,data)创建1个表

对于页面上的每个元素,我添加了与page_id相关联的命名空间,以使数据输出唯一。在数据中我可以添加任何类型的信息;文字,链接等。

您对此问题的建议是什么?我当然也愿意接受其他选择。

谢谢!

1 个答案:

答案 0 :(得分:0)

我建议使用选项二,添加一个标识元素id /或类型的列,如果元素id确实具有可比性。也就是说,如果锚文本(例如)总是存储为元素id = 4,那么您可能需要一个元素id = 4,以便您可以比较多个文档中的锚文本。

另一方面,如果(这是我想象的场景更有可能),您可能在页面上有1-25个元素,并且每个元素可能不同(例如,文档一有三个锚文本和四个图像,文档二有一个锚文本,没有图像,等等。添加一个element_type_id表来存储一些关于元素类型的信息是有意义的。这假设你有兴趣比较(比如说)多个文档中的图像,或者跨多个文档锚定文本等。

要考虑的另一件事是:如果您可能一遍又一遍地看到相同的元素,那么通过查找表有效地参数化这些元素实际上更有意义。所以基本上将每个(比方说的)唯一锚文本存储在一个表中,并在实际数据表中引用它的id。

如果我可以添加一个额外的东西:对于您提出的特定问题,可能不是最佳位置。我对此并不完全确定,也许我错了......但是我会在Stack Exchange网络上逛一逛,看看其他论坛是否更贴切地处理你提出的问题类型。至少,我观察到你的问题相当模糊,并且目标是实现“稳健且灵活的解决方案,同时具有良好的性能。同时获取/接收这些数据。”不可能仅仅通过征求关于SO的建议来完成。有一个 LOT 进入数据架构,当然,我自己设计的很多细节都不在你的问题中。如果您不确定这些细节是什么,我不确定SO是否真的是开始学习它们的最佳位置。我认为https://softwareengineering.stackexchange.com/可能更适合这个问题。

只是我的意见,我可能是错的。无论哪种方式,我会考虑学习一些关于数据库常规形式(http://www.bkent.net/Doc/simple5.htm或Google它)以及对构建数据库的设计考虑因素的类型进行一些研究(一篇旧的但仍然很好的SO文章)就在这里:What are the most important considerations when designing a database?