The entity map
An interactive ER diagram of your table's entities, relationships and GSI overloads, generated from live data.
The Map tab draws your single-table design as an entity-relationship diagram — entities, their item-collection relationships, and the GSIs they overload — laid out automatically from the model Tablyne inferred from your data.
What the diagram shows
Two kinds of node and two kinds of edge:
| Element | Looks like | Meaning |
|---|---|---|
| Entity node | Solid rounded card, accent-colored | A detected entity type, with its PK/SK patterns and item count |
| GSI node | Dashed violet card | A global secondary index that one or more entities overload |
| Item-collection edge | Solid gray line, 1—N | A parent/child relationship inside a partition (e.g. USER# owns its ORDER# items) |
| GSI-overload edge | Dashed violet line, indexa | An entity is projected into that secondary index |
Relationships are inferred, not declared. An item-collection edge is drawn when one entity’s partition-key prefix matches another entity’s id — the classic single-table parent/child pattern. A GSI-overload edge is drawn for every index an entity’s items carry.
Layout
Tablyne computes a deterministic left-to-right layout: roots (entities with no parent) sit in the first column, children fan out to the right by depth via a cycle-safe breadth-first pass, and GSI nodes stack in a final column. The result is stable and readable for roughly 3–10 entities. Edges are trimmed to node borders so arrows point cleanly between cards.
Navigating the canvas
The canvas behaves like a diagramming tool:
- Pan — drag empty space, or scroll (plain wheel / trackpad).
- Zoom — Ctrl/⌘ + scroll to zoom at the cursor, or use the −/+ buttons.
- Fit — click the percentage readout to reframe everything; the diagram auto-fits on load and on resize until you move it by hand.
- Reposition a node — drag any card; edges follow live.
- Reorganize — the ↺ button clears your manual positions and refits.
Selecting a node (a tap with no drag) lights it and its incident edges and dims the rest, so you can trace one entity’s relationships at a glance.
The inspector
The panel beside the diagram details the selection.
For an entity it shows the accent dot, label and item count, the PK/SK patterns, its relationships in plain language (parent of …, child of …, indexed in …), the full attribute list with key roles, and the entity’s access patterns — each tagged 🟢 Query or 🔴 Scan:
Query PK=USER#<id> SK begins_with ORDER# 🟢 Query
Scan + filter status = … 🔴 Scan
For a GSI node it lists which entities index into it and notes that the index is overloaded across entity types.
Sample vs. full scan
The map is built from the same model as the rest of the Studio, so by default it reflects the loaded rows. Use count all in the scan bar to read the whole table and redraw the map with exact counts and any entities or overloads that only appear deeper in the data. See /docs/std-overview/ for the sample-vs-full-scan trade-off.
Limitations
- Inferred relationships: edges come from key-prefix matching and index participation, not from declared foreign keys. A relationship that doesn’t follow the
parent#convention won’t be drawn. - Sample-bound by default: counts and which nodes/edges appear depend on loaded rows until you count all.
- Best for moderate models: the auto-layout targets ~3–10 entities; very large or deeply cyclic models still render but are less tidy.
- Item counts shown on cards are sample counts until a full scan replaces them.