如何将用户创建的符号数学存储在数据库中?

时间:2012-05-02 22:34:50

标签: database postgresql math mathml mathjax

我的网站要求用户输入大量的数学和科学记数法。当然,我需要一种方法来存储此服务器端以供将来使用。这是我理想的行动方案:用户输入一大块文本,可能有或没有数学符号,提交输入,然后将其转换为适合数据库的格式,最后,在每次后续查看时输入的数学,它应该转换为MathML。 MathML被MathJax转换为可读格式。

我以前从未使用过在数据库中存储数学,而且我想让用户能够在文本中插入数学内容这一事实会产生一些影响。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

将这种事情规范化的愿望是可以理解的。这也是错误的。

对于使用关系数据库,您应该“扩展”为更多语义类型的唯一事情是where子句中出现的任何内容。

如果您想要运行看起来像(伪代码:)的查询

,那是合理的
SELECT * FROM FORMULAE
WHERE "/theta" in free_vars(FORMULAE.FORMULA)
AND "bob" in FORMULAE.USERS;

然后,您希望使用能够提高查询效率的数据类型。另一方面,如果数据库不对存储的公式进行任何处理,则不要尝试将其转换为除最有用的外部表示之外的任何内容,正确表示公式的标记。 / p>

答案 1 :(得分:0)

将MathML存储为文本。如果它不适合VARCHAR,那么使用CLOB

答案 2 :(得分:0)

我建议将其作为MathML文本存储在数据库中。这样,在插入时,您将其转换为MathML一次,然后每次访问它时,都不需要转换它(即:更快)。