Farsh
~ on ~ high ~ wave ~
Есть задача, которая состоит из двух субзадач:
a) Хранить свойства объектов
б) Прикрутить версионность; для того, чтобы я мог сделать срез - получить за указанную дату список существующих объектов с их свойствами ( удаленные объекты тоже надо хранить )
Соответственно, главный вопрос - как это сделать, чтобы все было нормализованно и удобно для разнообразных выборок ?
Хранить свойства объектов
Каждый объект может быть одного из, допустим, 10 типов ( указан в поле типа "enum" )
Соответственно, здесь возникает вопрос - как хранить ?
Можно, конечно, наделать дополнительных колонок в таблице самого объекта, что просто, быстро, без дополнительных таблиц, с четким указанием типа ( integer, string )
Плюсов много, но минус один - бОльшая часть тех самых колонок для определенных объектов вообще не будет нужна ( то есть будет содержать NULL )
Прикрутить версионность
Если хранить свойства объектов методом, который описан выше, то все просто - создать вторую таблицу, в которой и хранить все данные, а в основной - только актуальные.
Я знаю, что то, что я описал - будет работать и работать хорошо, но подход мне совсем не нравится.
Хочется как-то хранить свойства в отдельной таблице + сделать каким-нибудь образом версионность ..
Может кто-нибудь подать идею, как это сделать правильно ? Или забить и сделать так, как я это вижу ?
Спасибо)
a) Хранить свойства объектов
б) Прикрутить версионность; для того, чтобы я мог сделать срез - получить за указанную дату список существующих объектов с их свойствами ( удаленные объекты тоже надо хранить )
Соответственно, главный вопрос - как это сделать, чтобы все было нормализованно и удобно для разнообразных выборок ?
Хранить свойства объектов
Каждый объект может быть одного из, допустим, 10 типов ( указан в поле типа "enum" )
Соответственно, здесь возникает вопрос - как хранить ?
Можно, конечно, наделать дополнительных колонок в таблице самого объекта, что просто, быстро, без дополнительных таблиц, с четким указанием типа ( integer, string )
Плюсов много, но минус один - бОльшая часть тех самых колонок для определенных объектов вообще не будет нужна ( то есть будет содержать NULL )
Прикрутить версионность
Если хранить свойства объектов методом, который описан выше, то все просто - создать вторую таблицу, в которой и хранить все данные, а в основной - только актуальные.
Я знаю, что то, что я описал - будет работать и работать хорошо, но подход мне совсем не нравится.
Хочется как-то хранить свойства в отдельной таблице + сделать каким-нибудь образом версионность ..
Может кто-нибудь подать идею, как это сделать правильно ? Или забить и сделать так, как я это вижу ?
Спасибо)