Согласен с уже полученными ответами.
Самый очевидный случай против EAV - это когда есть бизнес-правила, в которых задействованы атрибуты, которые вы упоминаете. Скажем, в вашем примере «Атрибут 1 и Атрибут 2 не могут быть длиннее ... символов».
Если вы реализуете свой пример с использованием одной таблицы с тремя столбцами, то реализация этого бизнес-правила будет такой же простой и простой, как определение единственного ограничения CHECK для этой таблицы. Правило будет простым и понятным, а также для декодирования другими, которые позже прочтут ваш дизайн, и во время выполнения проверка ограничения будет выглядеть как swoosh.
Если вы реализуете свой пример, используя EAV подход, реализуя те же правила бизнеса не может быть сделано декларативно, таким образом, это потребует (совсем немного) дополнительного кода, который будет более трудным для декодирования для всех позже прочитав дизайн, у которого больше возможностей для его неправильного использования, особенно на арене сериализации транзакций, и во время выполнения он может стать кошмаром производительности, который заставляет вашу систему работать как собака без ног.
Вы также попросите своего друга, как он намеревается включать атрибуты в свой дизайн, если значение этих атрибутов является целым числом, или датой или поплавком, или логическим, или любым другим типом, который СУБД имеет предлагает. (Он не может придерживаться одной таблицы, не создавая проблемы с производительностью, чтобы отключить любое число во время чтения и перевести любое число во время записи. И это кошмар для копыта CPU.)
Что ваш друг «на самом деле» используется самой СУБД для документирования структуры пользовательских баз данных. Каталоги СУБД знали, что структура на протяжении десятилетий (за исключением части «V», конечно, каталоги - это EA, так сказать, EAV без V), поэтому это не совсем «новая» идея в любом смысле.
Так что да, когда он утверждает, что с его дизайном легче адаптировать структуру базы данных, он в некотором смысле прав. Но стоит заплатить за то, что повышенная гибкость в большинстве случаев непомерно высока, особенно, если вы также считаете фактическую добавленную стоимость (как правило, меньше, чем предлагают сторонники EAV) этой «повышенной гибкости».
Типичный случай, когда ЭАФ подход может быть приемлемым, для работы с вопросников. Если вопросник на самом деле не стабилен на 99,99% (может растягиваться с течением времени), и не так много «правил», которые применяются к «как он должен быть заполнен» (если ответ на вопрос 7 был «да», то вопрос 8 должен быть дан ответ), а ответы на вопросник обычно проверяются более подробно в «изоляции», чем в «комбинации», тогда большинство недостатков EAV не применяются и могут быть справедливо рассмотрены.
http://tonyandrews.blogspot.co.uk/2004/10/otlt-and-eav-two-big-design-mistakes.html – sqlvogel