Вне всякого сомнения
EAV штука полезная. Но стоит задуматься о целесообразности перевода обсолютно всех характеристик в EAV. На примере той же даты рождения: в EAV значения атрибутов будут либо все строковые, либо бинарные, как отследить всех тех кто родился в СССР? на лету конвертирывать данные в DATE и потом делать отбор? А как делать выборку по числовым значениям, сортировку? Все же стоит набор основных характеристик оставить в обычном строковом представлении.
Обновление данных вообще геморой.
1. Считать все строки совподающие по user_id (сохранить данные в сессию)
2. Распечатать форму
3. Построково сверить данные из сессии с данными из формы.
3.а. новые атрибуты (нет данных в сессии/дб) агрегирывать и вставлять одним запросом
3.б. обнуленные атрибуты агрегирывать и либо удалять, либо апдейтить в эмпти стринг по желанию
3.в. изменные построково апдейт.
может стоит посотреть в сторону NoSQL/schemaless?
были посты на хабре, сфинкс вам в помощ