【发布时间】:2011-05-05 10:18:48
【问题描述】:
我正在为我的毕业设计开发一个文档管理系统。
在这个项目中,用户将文档的元数据添加到关系数据库中的“文档”表中。
当然,有不同种类的文件,如信件、票据等。因此,每种文件类型都有不同的属性集。 (当然还有一些常见的属性,比如“作者”。)
并且用户可以使用新的属性集定义新的文档类型(或者他们可以使用用户之前定义的现有属性)。当然,用户可以在插入几十个文档后添加或删除属性。
问题是我应该如何在我的关系数据库系统中存储这种数据? (本例中为 Postgres。)
我做了一些研究,找到了一些解决方案,但我无法决定该怎么做。
我是否应该有一个基本文档表,并且对于每个新添加的属性,我应该创建一个单独的表(docID、值),然后在用户请求时加入它们?
或者我应该为每种文档类型创建一个具有其定义属性的新表?然后在用户请求时合并它们?
或者我应该创建一个相对大的表,比如说 200 个整数、200 个 varchars、200 个日期、200 个浮点数等,它们将定义映射到每种文档类型的这些列。
作为初始要求, 用户应该能够以任何方式订购、过滤(搜索)文档以获取某种报告。 而这些文档及其属性将具有访问权限,我的意思是,它们将与我数据库中的其他表有关系。
我在这里主要考虑的不是开发的难易程度。性能和功能要求是最重要的。 因为,在我的演示中,我应该有一个已经插入了至少 100 万个文档的数据库。
如果需要,我可以提供更多信息。
谢谢。
【问题讨论】:
标签: database-design relational-database