【问题标题】:Handling updating of data with "has many" relationships in web applications在 Web 应用程序中处理具有“多”关系的数据更新
【发布时间】:2011-09-02 03:28:56
【问题描述】:

所以在我正在构建的 Web 应用程序中,我遇到过几次这种情况。我觉得必须有更好的方法来处理这个问题,所以我将详细介绍我目前的技术,希望你们中一些更有经验的开发人员可以提出更好的选择。

本质上,问题围绕在使用关系数据库进行数据存储(尤其是我经常使用 MySQL)的应用中编辑具有多个关系的数据。

让我们想象一下这个数据库架构(尽管它可以是任何类似的设置):

用户有很多技能 技能属于用户

当我创建一个新用户时,我会填写他们的基本信息以及一些(或根本没有)技能。当我点击保存时,我的应用程序将获取此数据并将新用户与数据库中的零个、一个或多个技能条目一起保存。

现在,当我去编辑这个用户时,会显示一个表单,显示用户的基本信息,以及每个技能的多个字段。我可以选择删除技能、添加新技能或两者兼而有之。

目前我通过使用 Javascript 删除字段来处理这个问题,并且我也使用 Javascript 添加新的技能字段。我不想在单击“删除”时立即从数据库中删除一项技能,而只是删除该字段,然后在用户提交表单后删除该字段。

在我的服务器端代码中,通常我会通过删除该用户之前的所有技能条目来处理此问题,然后保存所有已发布的技能条目。另一种选择是只删除不在 POSTed in 技能条目 ID 中的技能条目,然后更新每个已发布的技能条目的记录。

这似乎是处理这个问题的好方法吗?有没有更好的方法来管理这个?我愿意接受任何建议,即使过程与我现在所做的有很大不同。

为了进一步参考,我在 PHP 和 MySQL 应用程序中执行此操作。

谢谢!

【问题讨论】:

    标签: php mysql web-applications


    【解决方案1】:

    每次获取数据时重写所有技能字段要好得多。所有过程都需要 1 个查询(只需更新查询)。

    如果您要删除未发布的技能,您将不得不进行大量比较。

    【讨论】:

    • 我不明白你在这里的意思。如果我删除一些技能,然后添加一些技能,然后再编辑一些技能,我最终会得到一些需要创建的技能记录,一些需要删除的技能记录,还有一些需要更新的技能记录。删除所有记录然后保存所有新记录,我觉得这要容易得多。但必须有替代方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 2011-03-07
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多