【问题标题】:Storing data for HTML tables in database在数据库中存储 HTML 表的数据
【发布时间】:2014-02-02 22:09:43
【问题描述】:

我正在使用 PHP / SQL Server 开发一个应用程序,该应用程序需要存储来自大量不同学术项目的毕业生的信息,以及毕业后就业人数的信息......然后用户会查询这些信息,他们将想要将一个程序与另一个程序进行比较,因此他们将需要能够生成自定义表格来显示学生的结果。表格将是这样的:

Program            Salary after 1 Year      Salary after 2 Years         Etc...
Engineering        Lots                     Even more!
Philosophy         Nothing                  Are you kidding me?

那么,问题来了:我应该将这些数据点的单独值存储在数据库中,还是应该只存储表格行的原始 HTML?

换句话说,我要存储这个吗:

ProgramID    Salary1    Salary2               Etc...
1            Lots       Even More!
2            Nothing    Are you kidding me?

或者我存储这个:

ProgramID   RowHTML
1           <td>Lots</td><td>Even More!</td>...
2           <td>Nothing</td><td>Are you kidding me?</td>

我可以看到这两种方法的论据...我的直觉告诉我存储原始 HTML 会更快——它将消除 PHP 处理的 GOBS。但我对其他解释持开放态度。

【问题讨论】:

    标签: php sql sql-server


    【解决方案1】:

    任何 RDBMS 的简单规则,只将数据存储在您的表中,而不是其他任何东西。

    这将使您的数据检索、更新和插入操作快速、简单和安全。将数据存储在表中并在运行时创建 HTML 表。我在这里演示了当您的表中只存储数据而没有其他内容时,创建 HTML 表是多么容易和简单。

    示例

    我用过你给的例子

    DECLARE @t TABLE (ProgramID INT,Salary1 VARCHAR(50),Salary2 VARCHAR(50))
    INSERT INTO @t VALUES
    (1,'Lots','Even More!'),
    (2,'Nothing','Are you kidding me?')
    
    DECLARE @tableHTML  NVARCHAR(MAX) ;
    
    SET @tableHTML =
        N'<H1>Students Salaries</H1>' +
        N'<table border="1">' +
        N'<tr><th>ProgramID </th><th>Salary1</th><th>Salary2</th>' +
        CAST ( ( SELECT td = ProgramID,       
                        '',
                        td = Salary1, 
                        '',
                        td = Salary2
                    FROM @t    
    
                  FOR XML PATH('tr'), TYPE 
        ) AS NVARCHAR(MAX) ) +
        N'</table>' ;
    SELECT @tableHTML;
    

    由上述查询创建的 HTML 表

    &lt;H1&gt;Students Salaries&lt;/H1&gt;&lt;table border="1"&gt;&lt;tr&gt;&lt;th&gt;ProgramID &lt;/th&gt;&lt;th&gt;Salary1&lt;/th&gt;&lt;th&gt;Salary2&lt;/th&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Lots&lt;/td&gt;&lt;td&gt;Even More!&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Nothing&lt;/td&gt;&lt;td&gt;Are you kidding me?&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

    【讨论】:

    • 可爱。下一个问题是,“我如何更改这些值?” - 这将需要抽象行对象。但是为了快速而肮脏地显示数据,这是功能性的。
    • @DanAndrews 我的回答是为你做这件事我会得到多少报酬:)
    • 谢谢...这实际上是我的后续问题...更好地使用 PHP 数组处理从原始数据生成表,或者创建一个精心设计的 SQL 查询来处理它?我已经把代码写下来了,所以这不是需要代码的问题,只是不知道最佳实践的问题......(作为旁注,我的数据将是相当静态的......任何更新都将是一个替代品整个表的问题。)
    • @JohnChrysostom 此查询仅用于演示目的,正如我已经说过的仅将数据存储到您的表中而不是其他任何内容,它实际上是第一种形式的数据规范化只存储一个一列信息,只用一列存储一条信息
    【解决方案2】:

    我只会存储原始数据。当你的老板说“让它看起来更新”或其他什么时,这将提供改变页面格式/布局的能力。如果存储表数据,就会卡住。

    【讨论】:

      【解决方案3】:

      我认为将这些数据点的单独值存储在数据库中会更好地管理应用程序,HTML 很好,但是当您使用 PHP-DATAbase 时更好,...祝你好运。

      【讨论】:

        【解决方案4】:

        所以,问题来了:我应该为这些存储单独的值吗? 数据库中的数据点,或者我应该只存储原始 HTML 表格行?

        直接回答:

        存储data points,您以后可以随时重新创建 html,这也将使您的查询更快。

        【讨论】:

          【解决方案5】:

          简答:存储单个数据,而不是 HTML。

          在此处存储 HTML 没有任何好处。重新生成表可能会更容易一些,但您也存储了大量冗余信息,并且动态构建表并不是一项艰巨的任务。处理原始数据也容易得多:当您将一段时间内的工资存储为单行 HTML 时,您只能按程序排序,但如果您单独存储每年并控制数据类型(您的示例工资是字符串,但你应该存储整数或浮点数,因为你知道薪水是一笔钱),你可以选择按照毕业生从大学毕业后赚多少钱、十年后的收入等对项目进行排序。请注意,您可能并不总是希望显示一个表格:例如,您可能希望绘制每个专业的收入随时间变化的图表,在这种情况下,您需要从和标签中提取薪水,为自己创造更多的工作和减慢应用程序的速度。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-10-11
            • 2015-01-19
            • 2014-07-21
            • 1970-01-01
            • 1970-01-01
            • 2016-03-01
            相关资源
            最近更新 更多