Rat*_*lad 5 html javascript database sql-server asp.net-mvc
我有一个应用程序,它涉及使用 WYSIWYG html 编辑器存储和检索大量用户格式的内容。有点像 SO 如何保存格式化的问题和答案。
执行此操作的标准方法是什么?
编辑:
澄清一下:我不是在询问要存储在数据库中的数据类型。相反,我担心在数据库中存储带有样式信息的 html 标签块。
这只是文本数据。通常aVARCHAR是最好的。
更新:是的,如果您想支持 Unicode(在这种情况下您可能会这样做),那么将其设为NVARCHAR.
至于 OP 更新,您正在想象实际上并不存在的困难。HTML 是文本数据,因此它进入文本字段。您根本不想将格式与文本分开。
这就是答案,但这并不是您对此事的担忧的结束。这样做让您感到困扰的原因可能是因为数据库使用结构化数据(所有数据都在命名和类型列中)并且这是非结构化内容。这意味着该字段中的数据没有以数据库友好的方式存储。您应该尝试尽可能多地构建数据,因为它允许您按字段值快速搜索。我们将用户输入的任何内容投入该字段,如果我们需要在该字段中查找数据,我们需要搜索整个字段以找到它。这是一个非常缓慢的过程,更糟糕的是,我们不仅要搜索文本,还要搜索该文本的格式。
这都是正确的,但并不好,所以我们应该尽可能避免这样做。如果您可以避免允许用户输入自由格式文本,请务必这样做。从那时起,您可以以快速且一致的方式将 HTML 格式应用于来自客户端应用程序的数据。
但是,这个问题的基础是您想要一个非结构化内容的字段,并且您正在询问如何存储该非结构化内容。这个答案非常简单(尽管我猜我第一次尝试没有 100% 正确),使用NVARCHAR.
尽管存储这种非结构化内容对数据库不友好,但有时对网站友好,并且在您所描述的情况下是一种常见做法。需要记住的是,我们希望避免搜索这些非结构化数据。我们可能需要采取相当极端的措施来做到这一点。
许多应用程序将通过创建一个单独的表并解析 HTML 中的文本并将每个单独的单词(连同原始表条目的外键)插入另一个表中以供稍后搜索来解决这个缓慢的搜索问题。即使您这样做,您仍然希望保留原始格式化文本以供显示。
我通常会进行这种类型的优化,Phase II因为如果没有这种优化,网站也能正常运行;它只会变慢,并且在网站有大量内容可供搜索之前甚至不会被注意到。
需要注意的另一件事是,这通常不是 HTML 格式的文本。有几种常用的格式,例如 BBCode 或 Markdown。SQL 不在乎,对您的 SQL 服务器来说,这只是文本。
| 归档时间: |
|
| 查看次数: |
5863 次 |
| 最近记录: |