只是将数据库中的XML / JSON存储在数据库中未使用的数据中?

时间:2013-10-31 13:11:28

标签: javascript php sql xml

我有一个包含一些基本用户数据的小型数据库(uid,用户名,电子邮件,密码等),这些数据被各种SQL查询和PHP使用,因此有一个完整的表结构是有意义的。

然而,一个新功能将添加一些新表,其中每个用户将“拥有”这些表中的多个行(例如每个用户100KB的数据)。但是从数据库的角度来看,我真正希望能够做的就是为一个用户设置所有数据,或者为一个用户获取所有数据。

然后,只能使用JavaScript在客户端查看和编辑数据。当然JavaScript不能直接运行SQL查询,并且在编辑数据并作为HTTP POST提交之后,尝试通过跟踪用户所做的任何更改来在PHP中组合正确的UPDATE,INSERT和DELETE查询集。该会议有点复杂。

相反,我想的是在每个用户的数据库中只有一个TEXT字段,并在其中存储JSON或XML。然后可以给出JavaScript以填充HTML表,并且在用户完成对该表的编辑之后,JavaScript只需要从HTML表单收集所有数据并发布它。然后PHP只需要运行SQL查询来覆盖现有数据。

虽然这似乎是最简单的方法,但它似乎有点滥用SQL DB。我也想知道如果在第一种情况下由PHP生成初始的编辑前表是否更好,而不是文件加载后的JS?

1 个答案:

答案 0 :(得分:1)

使用文本字段存储像您这样的案例的数据是一种常见做法。但是,如果您决定采取此行动,请考虑以下问题:

  • 坚持固定格式。如果您将数据存储为纯文本,请注意数据库将不再使用其机制来确保数据完整性和格式统一。因此,如果您有一些具有给定格式的记录,然后更改它并使用新格式添加更多,那么具有旧格式的记录将不再有效,除非您确保支持这两种格式。因此,您的数据格式应该是成熟且足够一致的。
  • 估算数据长度。您应该知道数据文本的长度,以确保它适合您存储它的数据库列。某些数据库存在问题无限数据类型列(如TEXT),因此您应该了解您的数据库服务器以及部署配置。通常MySQL和PostgreSQL不会有问题,但根据我的经验,我遇到了Informix的严重问题 - 所以你的数据库服务器很重要。
  • 不要依赖客户端代码。你提到要通过javascript创建数据。我建议至少将JSON提交给服务器并从中生成另一个JSON以存储在数据库中,或者以其他方式验证它。否则,如果您在添加自由格式客户端数据时未采取措施,则黑客可能会添加恶意内容,执行数据库注入或以其他方式危害您的应用程序。但是,如果数据完全在服务器上生成,则风险较小。

因此,总的来说,这在数据库开发方面并不是一个坏习惯,但正如您所见,提供了额外的注意事项。如果你把它们全部搞清楚(我不假装将所有内容都包含在我的列表中,只是我个人面临的最常见的那些),那么你就可以了。