【问题标题】:SQL Programming Paradigm - Client vs. ServerSQL 编程范式 - 客户端与服务器
【发布时间】:2012-04-18 15:15:09
【问题描述】:

我正在研究一个 MS SQL 数据库。我们处于早期开发阶段,我正在使用 PHP,而我的一个同事正在使用 ASP.NET。最后,我们可能会结合我们的努力并坚持其中一个。出于这个原因,我认为在数据库上的存储过程中尽可能多地进行编程是明智的。

所以我目前正在处理用户上传文本文件、重新排列数据并插入到服务器上的表中的这一点。现在我基本上面临三个选择:

  1. 在 PHP 中进行所有重新排列并构建查询字符串并执行它。
  2. 将数据按原样插入到不同的表中,并调用存储过程对其进行重新排列并将其插入到更大的目标表中。
  3. 只需将数据作为参数传递到存储过程中,该过程同时执行所有操作和连接。

从我目前阅读的内容来看,我知道选项 1 可能不太好。真的我的问题是,选项3在另一个方向上是否太远了?我觉得这会更困难,但它会是最便携的,而且我不会有那个额外的表,服务器上还有尚未处理的数据。或者选项 2 是可行的方法,因为它可能对任何在我之后试图分析我的代码在做什么的人来说最有意义?

【问题讨论】:

    标签: php sql sql-server tsql paradigms


    【解决方案1】:

    我不喜欢让我的存储过程执行某种逻辑来处理读取文件和清理。我会将过程分成不同的逻辑层来处理这个问题。我想在我的业务逻辑级别进行文件操作并将干净的数据提供给存储过程(我的数据访问层),以便它可以将数据保存到相关表中。这样,如果您想从应用程序的不同部分/尝试保存已清理数据的不同应用程序保存数据,则可以使用相同的数据访问方法。我认为这是更具可扩展性的解决方案。

    所以我建议你在 PHP 文件中进行文件清理操作,然后将数据传递给存储过程。确保您没有传递要保存在查询字符串中的数据,而是直接从那里读取。因为那样你就会成为SQL Injection的受害者。

    【讨论】:

      【解决方案2】:

      我建议在两个 Web 部件之间添加一些中间层(可能是 SOAP 服务,以便 PHP 和 ASP.NET 都可以轻松使用它)来完成所有处理和数据操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-25
        相关资源
        最近更新 更多