我正在为我的毕业设计开发一个文件管理系统。
在这个项目中,用户将文档的元数据添加到关系数据库的“文档”表中。
而且,有不同类型的文件,如信件,账单等。因此,它们对每种文件类型都有不同的属性集。 (当然,一些常见的属性也像“作者”。)
用户可以使用新的属性集定义新的文档类型(或者可以使用先前由用户定义的现有属性)。当然,用户可以在插入数十个文档后添加或删除属性。
问题是我应该如何在关系数据库系统中存储这种数据? (在这种情况下是Postgres。)
我做了一些研究,找到了一些解决方案,但我无法决定该做什么。
我是否应该有一个基础文档表,并且对于每个新添加的属性,我应该创建一个单独的表(docID,value),然后在用户请求时加入它们?
或者我应该为每个具有已定义属性的文档类型创建一个新表?然后在用户要求时将它们联合起来?
或者我应该创建一个相对较大的表,比方说200个整数,200个变量,200个日期,200个浮点数等,并且它们将定义映射到每个文档类型的这些列。
作为初始要求, 用户应该可以通过任何方式订购,过滤(搜索)文档以获取某种报告。 这些文档及其属性将具有访问权限,我的意思是,它们将与我的数据库中的其他表有关系。
我在这里的主要考虑因素不是易于开发。性能和功能要求是最重要的。 因为,在我的演示中,我应该有一个数据库,其中已经插入了至少100万个文档。
如果需要,我可以提供更多信息。
感谢。
答案 0 :(得分:1)
一个表存储文档。
一个表存储元数据(document_id,key,value)。
一个联接可以获取文档及其所有元数据。