我们有两个实体类别和用户。很经典的多2多关系。
访问模式
但我对如何查询没有什么困惑
答案 0 :(得分:2)
如果您有一个包含类别的 PK 和包含用户的 SK 来为每个类别中的用户建模,您可以创建一个全局二级索引 (GSI),其中 PK 指向原始表的 SK(用户)和SK 指向原始表的 PK(类别)。
Table
| PK | SK | ...
| C#1 | U#1 | ...
| C#1 | U#2 | ...
| C#2 | U#1 | ...
| C#2 | U#3 | ...
GSI
| Table_SK | Table_PK | ...
| U#1 | C#1 | ...
| U#1 | C#2 | ...
| U#2 | C#1 | ...
| U#3 | C#2 | ...
现在可以查询了:
更新:扩展模型以根据评论包含元数据
Table
| PK | SK | CAT | USR | Metadata
---------------------------------------
| | DATA | | { ...: ... }
| C#1 | U#1 | C#1 | U#1 | { ...: ... } (copied from user record)
| | U#2 | C#1 | U#1 | { ...: ... } (copied from user record)
---------------------------------------
| | DATA | | { ...: ... }
| C#2 | U#1 | C#1 | U#1 | { ...: ... } (copied from user record)
| | U#3 | C#1 | U#1 | { ...: ... } (copied from user record)
---------------------------------------
| U#1 | DATA | | { ...: ... }
---------------------------------------
| U#2 | DATA | | { ...: ... }
---------------------------------------
| U#3 | DATA | | { ...: ... }
---------------------------------------
GSI_Users
| Table_USR | Table_CAT |
-----------------------
| U#1 | C#1 |
| | C#2 |
-----------------------
| U#2 | C#1 |
-----------------------
| U#3 | C#2 |
-----------------------
GSI_Categories
| Table_CAT | Table_USR |
-----------------------
| C#1 | U#1 |
| | U#2 |
-----------------------
| C#2 | U#1 |
| | U#3 |
-----------------------
查询:
C#x
和 SK=DATA
查询表C#x
查询 GSI_CategoriesU#x
和 SK=DATA
查询表U#x
查询 GSI_Users