Тут один товарищ, по работе предлагает организовать такую схему хранения данных в БД:
Сам объект это только первичный ключ, а все его "атрибуты", хранятся в другой таблице, ввиде ссылки (внешнего ключа) на объект и пары колонок название атрибута его значение. И говорит что на прошлой работе они такое делали и все были от этого очень счастливы.
Мне такая схема представляется плохой по трём причинам:
1. Придётся делать двойной индекс по таблице, где хранятся значения "атрибутов"
2. То что обычно делается как SELECT * FROM people WHERE last_name=ivanov; Придётся делать за два селекта (т.е. сперва находим id, а затем делать селект пар название атрибута/его значение)
3. Никогда про такой способ хранения не слышал, что настораживает.
Есть и положительные моменты: 1. Если надо добавить новый атрибут то ничего делать не надо, мы просто добавляем какие надо атрибуты и всё.
Специалисты по БД, поделитесь пожалуйста своими соображениями на этот счёт.