Hvorfor? Gør alt kræver dine enheder at kunne udvides på denne måde? Sandsynligvis ikke -- i de fleste applikationer er der højst en eller to enheder, der ville drage fordel af dette fleksibilitetsniveau. De andre enheder nyder faktisk godt af stabiliteten og klarheden af ikke skifter hele tiden.
EAV er et eksempel på Inner-Platform Effect :
Med andre ord, nu er det dit ansvar at skrive applikationskode til at gøre alle de ting, som et ordentligt RDBMS allerede giver, såsom begrænsninger og datatyper. Selv noget så simpelt som at gøre en kolonne obligatorisk som NOT NULL
virker ikke i EAV.
Det er rigtigt nogle gange, at et projekt kræver mange borde. Men du snyder dig selv, hvis du tror, du har forenklet projektet ved kun at lave to borde. Du vil stadig have lige så mange forskellige entiteter, som du ville have haft borde, men nu er det op til dig at forhindre dem i at blive til en bunke affald.
Før du investerer for meget tid i EAV, skal du læse denne historie om en virksomhed, der næsten holdt op med at fungere, fordi nogen forsøgte at gøre deres datalager vilkårligt fleksibelt:Bad CarMa .
Jeg skrev også mere om EAV i et blogindlæg, EAV FAIL , og i et kapitel i min bog, SQL Antipatterns:Avoiding the Pitfalls of Database Programming .