Я недавно реорганизовал свой код, чтобы попытаться денормализовать свою базу данных Firebase. Я понимаю, что необходимо некоторое дублирование и избыточность, но мне трудно выбрать правильный уровень дублирования.
Например, в моем проекте у меня есть outfits
и items
, где outfit
может содержать много тегов items
.
В настоящее время у меня есть такая настройка:
outfits
outfitId
outfitName
outfitDescription
items
itemId
itemName
itemDescription
itemBrand
itemsByOutfit
outfitId
itemId
itemName
itemDescription
itemBrand
itemId
itemName
itemDescription
itemBrand
В пользовательском интерфейсе мне часто нужно получить список outfit
объекты и отмеченные объекты. itemsByOutfit
- удобный индекс в этом смысле, потому что я могу получить название, описание и бренд в одном go.
Но когда дело доходит до переименования элемента или изменения описания, мне тоже нужно разложить обновление.
Было бы лучше оставить itemsByOutfit
ограниченным только itemId
стоимость? Примерно так:
itemsByOutfit
itemId: true
itemId: true
Это кажется более простым в обслуживании, но больше работы при загрузке. Предположительно, мне пришлось бы сделать второй запрос, используя все значения itemId
, чтобы получить имя, бренд и т. Д. c.
У меня также есть другой индекс - itemsByBrand
- который следует за аналогичным дублированием шаблон. Все данные дублируются и упорядочиваются по брендам - например:
itemsByBrand
Nike
itemId
itemName
itemDescription
itemBrand
Я был бы признателен за любые мысли или передовые методы, которые могут помочь мне создать более масштабируемое решение. Спасибо!