Skip to content
EngineeringAll explainers

Data Structure Diagram (DSD): Definition, Symbols, and Examples

A plain-language engineering reference on Data Structure Diagrams (DSD): how Bachman diagrams model records, nested attributes, and pointer relationships, and how a DSD differs from an Entity-Relationship Diagram (ERD) or Data Flow Diagram (DFD).

Published: Updated: Reading time: 5 min
On this page

A Data Structure Diagram (DSD) is a graphical notation used in software engineering and database architecture to model the internal structure of data entities and the directional relationships connecting them. First formalized by computer scientist Charles Bachman in 1969 (and often called a Bachman diagram), a DSD bridges abstract domain modeling and physical storage design by showing how attributes are nested inside records and how pointers or keys traverse from one record type to another.

In modern custom software development, engineers use data structure diagrams alongside Entity-Relationship Diagrams (ERDs) and JSON/Protobuf schema definitions when designing relational schemas, graph models, event payloads, and data pipelines.

Core components of a Data Structure Diagram

Unlike early Chen-style ERDs that draw attributes as separate bubbles around an entity, a Data Structure Diagram consolidates attributes inside the entity rectangle and focuses external arrows strictly on record-to-record traversal paths.

ComponentVisual NotationArchitectural Purpose
Entity (Record Type)Rectangular box with a headerRepresents a distinct data record, table, or document collection (such as Account, Transaction, or LedgerEntry).
Attributes (Data Elements)Listed rows inside the entity boxDefines the fields, data types, and constraints stored within the record (such as account_id: UUID, balance_minor: int64).
Primary / Sort KeyUnderlined or badged attributeIdentifies the unique key or physical ordering key used to locate a record in an index.
Owner-Member Arrow (Set)Directed arrow from Owner (1) to Member (N)Shows the traversal direction from a parent record to its dependent child records via foreign keys or physical pointers.

Data Structure Diagram vs ERD vs DFD

Because software teams frequently mix notations during architecture reviews, distinguishing a Data Structure Diagram (DSD) from an Entity-Relationship Diagram (ERD) and a Data Flow Diagram (DFD) prevents costly schema misunderstandings during system integration.

DimensionData Structure Diagram (DSD)Entity-Relationship Diagram (ERD)Data Flow Diagram (DFD)
Primary FocusPhysical/logical record layout and pointer traversalHigh-level conceptual business entities and cardinalityMovement and transformation of data across processes
State of DataData at rest (storage & memory structure)Data at rest (domain relationships)Data in motion (inputs, transforms, outputs)
Attribute PlacementInside the entity box (nested hierarchy)Outside the box (Chen notation) or tabular (Crow's Foot)Omitted or attached to data-flow arrows
Best Used ForDatabase indexing, network/graph databases, nested JSON/Protobuf schemasDomain modeling, relational SQL schema designAPI boundary mapping, threat modeling, ETL pipeline design

1. DSD vs ERD

In classical database literature, Chen's 1976 Entity-Relationship model was designed as a conceptual layer above Bachman's Data Structure Diagram. Modern Crow's Foot ERDs used in tools like dbdiagram.io, Prisma, and DataGrip are actually a hybrid of both: they adopt the DSD convention of listing attributes and types inside the entity rectangle while using ERD cardinality symbols (1..*, 0..1) on the connecting lines.

2. DSD vs DFD

A Data Flow Diagram (DFD) answers where data goes and what transforms it (for example, an webhook payload entering an ingestion queue, passing through a validation worker, and writing to PostgreSQL). A Data Structure Diagram (DSD) answers how that data is structured inside the payload or table (for example, how an Order record contains LineItem arrays and links to a Customer record).

When engineers use Data Structure Diagrams today

While relational databases standardized around SQL DDL and Crow's Foot ERDs, explicit Data Structure Diagrams remain valuable in four engineering scenarios:

  1. Document and NoSQL schema design: In MongoDB, DynamoDB, or Firestore, deciding whether to embed child attributes inside a parent document or reference them across collections requires mapping access paths and nested record structures.
  2. Graph and ledger architectures: Systems built on Neo4j, double-entry financial ledgers, or Merkle trees rely on explicit directional pointers (Owner -> Member) rather than ad-hoc relational joins.
  3. API and event contract design: Complex OpenAPI, GraphQL, and Avro/Protobuf event schemas use tree-structured DSDs to visualize deeply nested objects before generating TypeScript or Go types.
  4. In-memory data structures: High-throughput systems (such as order books, caching layers, and real-time transaction management engines) use DSDs to document how hash tables, B-trees, and linked lists reference one another in memory.

How to design a clean Data Structure Diagram

When documenting a domain model during technical discovery or software development consulting, follow three practical rules:

  • Model access paths, not just nouns: Draw arrows in the direction your application queries traverse most frequently. If 95% of reads fetch Organization -> Workspace -> Project, make that hierarchy explicit and index the corresponding foreign keys.
  • Separate identity from mutable state: Mark primary keys, natural keys, and version timestamps at the top of each entity box so engineers immediately see how records are deduplicated in data pipelines.
  • Pair every DFD with a DSD: Whenever a Data Flow Diagram introduces a critical data store or message queue topic, link it to the corresponding Data Structure Diagram or schema contract so both the runtime flow and the payload structure are unambiguous.

Frequently asked questions

  • A Data Structure Diagram (DSD) is a conceptual data modeling diagram that describes entities, their internal attributes, and the explicit pointer or set relationships connecting them. Introduced by Charles Bachman in 1969, DSDs place attributes inside entity boxes rather than in external ovals.

  • An Entity-Relationship Diagram (ERD) models high-level business relationships between entities, whereas a Data Structure Diagram (DSD) specifies how data elements are grouped inside records and how pointers or foreign keys physically link owner and member records.

  • A Data Structure Diagram (DSD) shows the static organization of data at rest inside records and tables. A Data Flow Diagram (DFD) shows the dynamic movement of data in motion across processes, external actors, and data stores.

Still unanswered
Ask us directly

A senior engineer replies under 4 hours.