关系模型与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的主要内容,如果未能解决你的问题,请参考以下文章