繁体   English   中英

在数据库中存储格式化内容的标准方法是什么?

[英]What's the standard way to store formatted content in the database?

我有一个应用程序,涉及使用WYSIWYG html编辑器存储和检索大量用户格式的内容。 有点像SO如何保存格式化的问题和答案。

这样做的标准方法是什么?

编辑:

只是为了澄清:我不是在询问要存储在数据库中的数据类型。 相反,我担心在数据库中存储带有样式信息的html标签块。

这只是文本数据。 通常VARCHAR是最好的。

更新:是的,如果你想支持Unicode(在这种情况下你可能会这样做),那就把它变成一个NVARCHAR

至于OP更新,您正在想象实际上并不存在的困难。 HTML是文本数据,因此它进入文本字段。 您根本不想将格式与文本分开。

这就是答案,但这并不是你对这件事的关注的结束。 这样做的原因是困扰你可能是因为数据库使用结构化数据(所有数据都在命名和类型列中),这是非结构化内容。 这意味着该字段中的数据不以DB友好的方式存储。 您应该尝试尽可能多地构建数据,因为它允许您通过字段值快速搜索。 我们将用户输入的任何内容扔进该字段,如果我们需要在该字段中查找数据,我们需要搜索整个字段以找到它。 这是一个非常缓慢的过程,为了使事情变得更糟,我们不仅要搜索文本,还要搜索该文本的格式。

这都是正确的,不好的,所以我们应该尽可能避免这样做。 如果您可以避免允许用户输入自由格式文本,那么一定要这样做。 从那时起,您可以快速一致地将HTML格式应用于客户端应用程序中的数据。

但是,此问题的基础是您需要一个非结构化内容字段,并且您正在询问如何存储该非结构化内容。 这个答案非常简单(即使我猜我第一次尝试没有100%正确),使用NVARCHAR

即使存储这种非结构化内容不是数据库友好的,它有时也是网站友好的,并且是您所描述的情况下的常见做法。 要记住的是,我们希望避免搜索这种非结构化数据。 我们可能需要采取相当极端的措施来实现这一目标。

许多应用程序将通过创建一个单独的表并解析HTML中的文本并将每个单词(以及原始表条目的外键)插入到稍后要搜索的另一个表中来解决这个慢搜索问题。 即使您这样做, 您仍然希望保留原始格式化文本以用于显示目的

我通常会进行这种类型的优化Phase II因为该网站将在没有这种优化的情况下运行; 它会变得更慢,直到该网站有足够的内容来搜索才会被注意到。

另外需要注意的是,这通常不是HTML格式的文本。 有几种常用的格式,如BBCode或Markdown。 SQL并不关心,对于您的SQL服务器,这只是文本。

问题的标题可以存储在VARCHAR ,问题可以存储在TEXT

在这里,看看SQL Server的数据类型: http//msdn.microsoft.com/en-us/library/ms187752.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM