关系模型与EAV

问题描述 投票:0回答:1

数据库初学者在这里。

我一直在研究柱式模型,我来到了this paper。它基本上提出了专门的列存储模型来稀疏和巨大的临床数据,以便快速搜索。

我一般都理解论文提出的建议,但关于关系模型和EAV模型的一些想法使我感到困惑。本文假设关系模型甚至不能用于临床数据,并且比较了EAV和柱存储模型的性能。

EAV可以表示高维数据,不能通过关系模型建模,因为现有的RDBMS仅支持有限数量的列。

据我所知,this question及其第一个答案,临床数据是高维的(如预期的那样)但是

为什么不使用经典归一化并使用EAV?

关系模型将是:

Person: Id, Name, Surname, DateOfBirth, ...
Measurement: Id, Name, Desc, ...
PersonMeasurement: Id, PersonId, MeasurementId, Result, Date
database database-design relational-database entity-attribute-value
1个回答
1
投票

...因为现有的RDBMS仅支持有限数量的列。

这取决于术语“有限”的含义:典型的现代关系数据库有多个列超过1000.这是一个表,其中包含一些最常见的RDBMS的最大列数:

PostgresQL: 250 - 1600 depending on column types
MySQL: upto 4096, depending on row size
Oracle: 1000
IBM DB2: 1012
Mycrosoft SQL Server: 1024 - 30000
Sybase: 45000

在您的第二个链接中有以下声明:

有关患者健康状况的数据可以是高维的(100多个测量/记录的参数来自血液分析,免疫系统状态,遗传背景,营养,酒精 - 烟草 - 药物 - 药物,操作,治疗,诊断疾病......)

编辑

因此,如果列的数量大约为数百,我认为单表方法足以表示临床数据,正如您从StackOverflow上的许多问题中可以看到的,比EAV更有效和简单的查询模型。

© www.soinside.com 2019 - 2024. All rights reserved.