我在学校中学到的只是SQL,它将数据保存到表中。现在,我正在一个项目中,数据存储在XML文件中。此外,每个XML都包含对可视文件(JPEG)的引用。
XML本身包含一千多个坐标点,以及有关数据的其他信息。
我认为将这些信息存储在表中没有任何意义。此外,我也无法使用SQL存储JPEG文件。
什么是合适的解决方案,或者我的推理存在错误?
如您所见,我对数据库还很陌生。因此,欢迎提出任何建设性的建议,链接和建议。
我在学校中学到的只是SQL,它将数据保存到表中。现在,我正在一个项目中,数据存储在XML文件中。此外,每个XML都包含对可视文件(JPEG)的引用。
XML本身包含一千多个坐标点,以及有关数据的其他信息。
我认为将这些信息存储在表中没有任何意义。此外,我也无法使用SQL存储JPEG文件。
什么是合适的解决方案,或者我的推理存在错误?
如您所见,我对数据库还很陌生。因此,欢迎提出任何建设性的建议,链接和建议。
Answers:
您需要的只是XML的持久性。使用NoSQL解决方案或文件系统。
除非您要使用RDBMS代替NoSQL或文件系统,否则使用RDBMS没有任何好处。
我今天在Phil Factor的博客文章Normalization和'Anima notitia copia'中添加了书签,因为它巧妙地总结了支持和反对规范某些类型数据的情况。在SQL实例上运行以下查询,看看是否同意。
SELECT * FROM sys.syslanguages
SQL使您可以创建关系数据库。但是,即使闻起来很糟,只要有必要,并且可以分辨出区别,就可以使用SQL数据库进行无关紧要的无关紧要的事情。不仅如此,而且也只有在您意识到风险和隐含含义的情况下。
您提到XML文件包含“有关数据的附加信息”。出于询问的目的,在关系数据库中对该元数据进行建模是否有任何好处?如果是这样,则可能存在提取相关数据并将剩余的XML保留为XML文档类型的情况。
...如果您传递了JSON字符串或XML,并要求将其存储在数据库中,那么您要做的就是问问自己,以Anima notitia copia(数据库之魂)的角色吗?对此项信息的内容感兴趣?”。如果答案是“否!”或“ nequequam!然后它是一个原子值,无论它有多复杂。
菲尔·菲尔特(Phil Factor)的论点是,如果将关系字段视为原子即字段不变,或者当整个字段更改时,而不是字段的组成部分,则关系数据库中的非关系字段是完全可以接受的。这种自然的扩展是,如果您的文档中包含您确实感兴趣的元素,则将关系模型应用于这些元素可能会有价值。
与问题相关,但主要是措辞方面,Phil的最后一句话是:
自然,我从来没有有意地创建过一个数据库,而Codd可能会皱眉,但是我写的接口和数据提要的周围却引起了标准化基础论者的关注。
还不是我们所有人!
就Oracle数据库而言,答案是“ 不能”。数据库中的所有数据都存储在表中,甚至是元数据。数据可以存储在队列中,但这只是使用表的另一种方式。XML文件可以存储在数据库外部,但是不能满足您的“数据库中”需求。
除了您提出的问题之外,JPEG文件或与此相关的任何文件都可以存储在数据库中。他们将需要一个表和一个LOB列(BLOB或CLOB)。XML也可以通过这种方式存储,但是将XML数据导入数据库将使您能够以现在不容易完成的方式对数据进行操作。它还将提供数据库的其他好处,包括:减少冗余,可访问性,并发性,可伸缩性,互操作性,安全性,恢复和性能。
如果数据库的好处不能进一步实现您的目标,请不要使用它。