0

我想将以下 HTML 字符串存储到 DB<b>This</b> is <i>my text</i>中。这个 Html 字符串有 2 个部分:

  • 文本:“这是我的文本”
  • 标签:<b>, </b>, <i>,</i>

在我看来,有 2 个选项可以存储上述 Html 字符串。

  • 选项 1:将文本和标签存储到 1 个相同的列中,因此 TextTag 列将具有<b>This</b> is <i>my text</i>.

  • 选项 2:将文本和标签存储到 2 个单独的列中,因此文本列将具有“这是我的文本”并且标签列将具有<b>x</b> x <i>x x</i>

选项1和2的优点和缺点是什么。

我认为,选项 1 很容易编码,但是当我们执行搜索功能时会很困难,因为我们不需要搜索标签部分,所以我们必须在搜索中使用某种正则表达式,这可能会减慢查询速度。

另一方面,选项 2 更难编码,因为我们必须将 Tag 列映射到 Text 列,但搜索起来很容易,因为我们不必在搜索中使用 Regex。此外,选项 2 比选项 1 花费更多的流量,因为他的查询中有一些额外的“x”。但我相信选项 2 比 1 更安全,因为我们只在主字段中存储文本而不是 html,因此它可能更安全。

如果您是 DB 专家,那么您的决定是什么?

4

2 回答 2

1

虽然我们不是数据库专家,但在我们看来,1> 您应该使用任何 html 提取库从内容中提取主要文本。2> 将提取的内容存储在您正在搜索的主字段中。3> 使用 HTML 标签存储整个值,即

<b>This</b> is <i>my text</i>在第二个领域。因为如果您必须渲染 HTML 后者,那么您将不会有任何额外的编程负担。您可以简单地通过搜索在主字段中查找,然后按原样返回所需的 html 段。

谢谢

于 2013-05-01T19:05:59.927 回答
0

我认为最好的选择是 OPTION-2 的修改版本,在第 1 列中存储数据的文本部分,在第 2 列中存储一个字符串,在 BINARY FORMAT 中使用 1 或 Y 或 X = TRUE和 0 或 N 或 O = FALSE,通过这种方式,如果需要应用 BOLD 或 ITALICS,您可以存储更多内容。

例如,如果您的第二列长 10 个字节,您可以存储十个不同项目的格式选项,例如粗体、斜体、下划线、水平(左、右、中)垂直(上中下)或任何您可以量化为一个字符或一个字节。

进一步解释见下图。

在此处输入图像描述

于 2013-05-01T19:42:51.833 回答