2016-09-19 9 views
0

У меня есть набор предварительно определенных свойств, которые я хочу сохранить. Например:Какая структура данных лучше всего подходит для хранения отличий

PersonNr,Gender,Name,Surname, Address, Zip,City. 

Теперь у меня есть различные источники для этих наборов данных, которые разделяют PersonNr, но имеют разные значения для других свойств:

Пример:
из базы данных AI получить

123456,M,Hudson,James,Fakestr 123, 12345, West City 

из базы данных B я получить

123456,M,Hudson,Jameson,Fakestr123, 12345, East City 

Вместо того чтобы хранить оба значения, которые я хочу, чтобы хранить данные из базы данных А в качестве эталона и только хранить данные B, которые отличаются А.

В моем примере я хотел бы хранить что-то вроде:

Database B, Jameson, East City 

Какую структуру данных я могу использовать для данной проблемы?

Заранее спасибо

ответ

1

Решение вы выбираете, зависит много от характера данных, как вы собираетесь хранить его, и то, что вы хотите с ним делать. Если все, что вам нужно, это сокращенная запись, в которой хранятся только дельта, тогда вы можете написать строку, разделенную запятыми, которая имеет пустые поля. То есть, учитывая:

Database A 
123456,M,Hudson,James,Fakestr 123, 12345, West City 

Database B 
123456,M,Hudson,Jameson,Fakestr123, 12345, East City 

Вы могли бы написать отдельную запись с указанием дельт:

123456,,,Jameson,,,East City 

Если вы храните дельты в базе данных, то вы, вероятно, хотите записи, которые дают идентификатор записи, имя поля и измененное значение. Это представление было бы:

123456,Surname,Jameson 
123456,City,East City 

Это, наверное, как бы я представить его в памяти, тоже: хэш-карту заклиненную по идентификатор записи (то есть 123456), со списком пар имя/значение поля для каждого идентификатора.