关系模型与EAV

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关系模型与EAV相关的知识,希望对你有一定的参考价值。

数据库初学者在这里。

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

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

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

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

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

关系模型将是:

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

...因为现有的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更有效和简单的查询模型。

以上是关于关系模型与EAV的主要内容,如果未能解决你的问题,请参考以下文章

雄辩的 ORM 和 EAV

实体属性值数据库与严格的关系模型电子商务

EAV模型

Magento ORM 文档

数据库 结构 , Eav 模型 , 太慢 的 搜索 查询

实体-属性-值 (EAV) 的替代方案?