关系模型与EAV

时间:2016-03-14 22:34:02

标签: database database-design relational-database entity-attribute-value

数据库初学者。

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

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

  

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

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

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

关系模型将是:

Person: Id, Name, Surname, DateOfBirth, ...
Measurement: Id, Name, Desc, ...
PersonMeasurement: Id, PersonId, MeasurementId, Result, Date

1 个答案:

答案 0 :(得分: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模型。