| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > Неизвестный набор атрибутов. Как лучше хранить? |
| Автор: BuShaRt 20.8.2012, 20:45 |
| Нужно организовать хранилище для набора объектов имеющих общую природу, но разные наборы дополнительных атрибутов. У меня есть хранилище ключей - я точно знаю ID ключа, его владельца и название - остальные параметры мне заранее не известны . Там может быть токен, два токена, пароль или даже фотография сетчатки глаза - все что угодно и любой структуры. Я так понимаю похожим образом храниться информация в Facebook Graph API. Каждый объект может иметь уникальный набор параметров, не считая самых необходимых вроде ID. Первое, что приходи в голову для организации такой структуры - это реляционная база данных в отдельной ячейки которой храниться XML документ с пользовательскими атрибутами, но мне кажется это очень по "деревернски". Подскажите пожалуйста, что может быть лучше и в каком вообще направление стоит копать по этому вопросу? |
| Автор: password 20.8.2012, 21:29 |
| Я бы попробовал так: Основная таблица (шапка) - ID объекта - Какие то общие параметры для всех объектов Таблица для строковых данных (DATA_S) - ID объекта (для связи с основной таблицей) - Par - параметр - Параметр типа varchar Таблица для данных типа Date (DATA_D) - ID объекта (для связи с основной таблицей) - Par - параметр - Параметр типа Date Таблица для числовых данных (DATA_N) - ID объекта (для связи с основной таблицей) - Par - параметр - Параметр типа Numeric И создается справочник (можно программно), например: Объект записная книжка: Параметр (Par) | Название | тип FIO | ФИО | varchar D_rozd | Дата рождения | date tel1 | № телефона | numeric ..... И в зависимости от типа параметра в справочнике - записывать информацию в соответствующую таблицу: FIO -> DATA_S D_rozd -> DATA_D tel1 -> DATA_N |
| Автор: Fortop 20.8.2012, 22:02 |
| Уже обсуждалось десятки раз гуглить: разреженные матрицы, EAV - это для реляционных БД или же искать документооринетированные БД (CouchDB, MongoDB и т.д.) |