如何在没有表的数据库中存储数据?

チーズ*_*ズパン 12 xml database-design

我在学校学到的只是将数据保存到表中的 SQL。现在我正在研究一个数据存储在 XML 文件中的项目。此外,每个 XML 都包含对可视文件 (JPEG) 的引用。

XML 本身包含一千多个坐标点,以及有关数据的附加信息。

在我看来,将这些信息存储在表格中是没有意义的。此外,我也无法使用 SQL 存储 JPEG 文件。

什么是合适的解决方案,或者我这边的推理是否有错误?

如您所见,我对数据库很陌生。因此,欢迎任何建设性的建议、链接和建议。

gbn*_*gbn 11

您所需要的只是 XML 的持久性。使用 NoSQL 解决方案或文件系统。

使用 RDBMS 没有任何好处,除非您想使用它而不是 NoSQL 或文件系统。

  • 我会查看 RavenDB (http://ravendb.net/) 或 CouchBase (http://www.couchbase.com/couchbase-server/overview) 以在 Windows 上使用。其他的可以通过谷歌找到 - 我对这些产品有很好的体验。显然你的里程可能会有所不同:) (7认同)

Mar*_*ith 10

我今天在Phil Factor 的博客文章Normalization 和“Anima notitia copia”上添加了书签,因为它巧妙地总结了支持和反对对某些类型的数据进行规范化的案例。在 SQL 实例上运行以下查询,看看您是否同意。

SELECT * FROM sys.syslanguages
Run Code Online (Sandbox Code Playgroud)

SQL 使您能够创建关系数据库。然而,即使它闻起来很糟糕,只要有必要并且您能分辨出其中的区别,就可以对 SQL 数据库做一些与 SQL 数据库无关的可怕的事情,这也不是犯罪。不仅如此,而且只有在您意识到风险和影响的情况下。

您提到 XML 文件包含“有关数据的附加信息”。出于询问的目的,在关系数据库中对元数据进行建模是否有任何好处?如果是这样,则可能需要提取相关数据并将剩余的 XML 持久化为 XML 文档类型。

...如果您收到一个 JSON 字符串或 XML,并且需要将其存储在数据库中,那么您需要做的就是问问自己,作为 Anima notitia copia(数据库的灵魂)的角色,我有没有对此项信息的内容感兴趣吗?'。如果答案是“不!”或“nequequam!那么它是一个原子值,无论它有多复杂。

Phil Factor 的论点是关系数据库中的非关系字段是完全可以接受的,如果该字段被视为原子的,即它不会改变,或者当它改变整个字段而不是它的组成部分时。其自然延伸是,如果您的文档包含您确实感兴趣的元素,则将关系模型应用于这些元素可能是有价值的。

与问题相关,但主要是用语,菲尔的最后一句话:

当然,我从来没有故意创建一个 Codd 会皱眉的数据库,但边缘是我编写的接口和数据馈送,它们在规范化原教旨主义者中引起了嘘声。

我们不是都这样吗!

  • ACORD 有点像那样。我见过有人试图将它硬塞进数据库模型中。ACORD 随后从 Prima 获得了数据模型的许可,因此即使他们也承认它不是一个数据模型。ACORD 消息传递标准定义了大约 7,000 个字段,其中大约 200 个字段是强制性的——对 ACORD 的最好描述(来自消息传递标准的重要参与者)是“不知道如何管理标准过程”。 (2认同)