В СУБД я хочу создать таблицу «Каталоги» с отношением 1: n с «Коллекциями». «Коллекции» будут иметь n: n с «Тегами», поскольку Коллекция может иметь несколько тегов, а тег может принадлежать нескольким коллекциям.
Запросы, которые я хочу выполнить:
1) Получить все каталоги
2) Получить каталог по ID
3) Получить коллекции по ID каталога
Я прочитал в AWS, что могу использовать дизайн карты списка смежности (потому что у меня есть n: n с «Тегами»). Итак, вот моя структура таблицы:
PK SK name
cat-1 cat-1 Sales Catalog
cat-1 col-1 Sales First Collection
cat-1 col-2 Sales Second Collection
cat-2 cat-2 Finance Catalog
tag-1 tag-1 Recently Added Tag
col-1 tag-1 (collection, tag relationship)
Проблема здесь в том, что я должен использовать сканирование, которое, как я понимаю, неэффективно, чтобы получить все «Каталоги», потому что PK запроса должен быть «=», а не «Начинается с».
Единственное, о чем я могу думать, это создать еще один атрибут, такой как «GSI_PK» и добавить «Catalog_1», когда PK - это cat-1, а SK - это cat-1, «Catalog_2», когда PK - это cat-2 и SK. это кот-2. Я никогда не видел, чтобы это было сделано, поэтому я не уверен, стоит ли идти этим путем, и мне нужно какое-то обслуживание, если я когда-нибудь захочу изменить ID.
Есть идеи, как мне это сделать?