首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据建模:具有许多属性的表

数据建模:具有许多属性的表
EN

Stack Overflow用户
提问于 2012-10-27 00:21:03
回答 3查看 561关注 0票数 3

我有一个名为Project的实体。每个项目都有一组分配给它的成员。我从每个成员那里收集一些信息,例如年龄、身高等。其中一些是数值型的,一些是文本型的,一些是逻辑型的(布尔型)。可以收集的信息有几十种。

这是我在特定项目中收集的信息,它定义了项目本身。在单个项目中,我过去常常收集几个信息,比如3-5个。在一些项目中,我可以收集相同或相似的信息集。我感兴趣的是对所有项目进行统计,在这些项目中,我收集了特定的信息。

问题是:包含这些信息的表的体系结构应该是什么?拥有一个包含几十个列的大表,其中每一行都有许多空值,这听起来并不好,特别是因为我的数据库中将有数千个甚至数百万个空值。但是对于每个项目有一个表(和许多表一样多的项目),其中我只收集信息,这听起来也不太好,因为从所有项目中统计数据需要使用动态SQL (可变表名-取决于项目)并迭代数百个项目。另外,每个选项都有一个表,甚至是选项类型(逻辑、文本、布尔型)似乎不是正确的方法。

我使用的是PostgreSQL数据库。我知道,有些数据库有类似ANYTYPE的东西(例如,Microsoft SQL Server中的sql_variant,或者Oracle中的ANYDATA ),但PostgreSQL没有,这让我有点困惑。

我很确定有更好的解决方案,但我想不出来。你能帮我找一下吗?

提前感谢您的每一个回复。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-27 21:09:17

postgresql中内置了一个表继承功能,可以让您在表层次结构上运行查询。

在postgresql文档中查看therethere,以获得一个很好的教程。

它们解释了如何构建从一个表继承的表:父表中的所有字段都自动包括在子表中,在父表上运行的所有查询都在子表上运行(但不是在对立表或同级表上),并且结果是串联的,除非仅使用特殊关键字将查询(或子句)限定为限制为单个表。您应该小心使用约束,因为它们不会跨越表边界。换句话说,如果在父表上设置了约束,则该约束将仅限于该表,且子表或同级表可能包含受约束表中的重复行。

票数 1
EN

Stack Overflow用户

发布于 2012-10-27 00:51:00

将您可以定义的所有属性放入表的实际列中,这些属性是“常量”(并且对所有成员都是通用的)。对于任何动态数据类型,都可以使用hstore数据类型。

http://www.postgresql.org/docs/current/static/hstore.html

它比Oracle的ANYDATA更好(更灵活、更快)

票数 4
EN

Stack Overflow用户

发布于 2012-10-27 00:26:05

根据我对所提供信息的理解,这些数据不是关系型的。我觉得你应该看看这里的NoSql选项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13090697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档