【问题标题】:Relational database design with unknown number of attributes at the beginnig开始时属性数未知的关系数据库设计
【发布时间】:2011-05-05 10:18:48
【问题描述】:

我正在为我的毕业设计开发一个文档管理系统。

在这个项目中,用户将文档的元数据添加到关系数据库中的“文档”表中。

当然,有不同种类的文件,如信件、票据等。因此,每种文件类型都有不同的属性集。 (当然还有一些常见的属性,比如“作者”。)

并且用户可以使用新的属性集定义新的文档类型(或者他们可以使用用户之前定义的现有属性)。当然,用户可以在插入几十个文档后添加或删除属性。

问题是我应该如何在我的关系数据库系统中存储这种数据? (本例中为 Postgres。)

我做了一些研究,找到了一些解决方案,但我无法决定该怎么做。

我是否应该有一个基本文档表,并且对于每个新添加的属性,我应该创建一个单独的表(docID、值),然后在用户请求时加入它们?

或者我应该为每种文档类型创建一个具有其定义属性的新表?然后在用户请求时合并它们?

或者我应该创建一个相对大的表,比如说 200 个整数、200 个 varchars、200 个日期、200 个浮点数等,它们将定义映射到每种文档类型的这些列。

作为初始要求, 用户应该能够以任何方式订购、过滤(搜索)文档以获取某种报告。 而这些文档及其属性将具有访问权限,我的意思是,它们将与我数据库中的其他表有关系。

我在这里主要考虑的不是开发的难易程度。性能和功能要求是最重要的。 因为,在我的演示中,我应该有一个已经插入了至少 100 万个文档的数据库。

如果需要,我可以提供更多信息。

谢谢。

【问题讨论】:

    标签: database-design relational-database


    【解决方案1】:

    一个表存储文档。

    一个表存储元数据(document_id、key、value)。

    一次连接可为您获取文档及其所有元数据。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多