# Parts of an Aggregate: Overview > [!Note] > An [[Aggregate]] is a **transactional consistency unit** composed of one or more [[Entities]] -objects with distinct, evolving identities—and optional [[Value Objects]], immutable attribute-defined concepts, all coordinated by a single **Aggregate Root**. An [[Aggregate]] represents the smallest cluster of domain objects that must be kept consistent within a single transaction. At its heart sits the **Aggregate Root**, the sole entry point responsible for coordinating changes. Surrounding the root are one or more [[Entities]], each identified by a unique identity and capable of changing state over time. Optionally, an [[Aggregate]] can include [[Value Objects]], which capture immutable concepts defined entirely by their attributes. All objects within the [[Aggregate]] must be in a valid, consistent state whenever a transaction completes, ensuring the integrity of the business rules they enforce. --- ## References - Vernon, V. (2016). _Domain-driven design distilled_. Addison-Wesley Professional. - Vernon, V. (2013). _Implementing domain-driven design_. Addison-Wesley Professional. - Khononov, V. (2021). _Learning domain-driven design: Aligning software architecture and business strategy_. O’Reilly Media. - Alammar, J., & Grootendorst, M. (2024). _Hands-on large language models: Language understanding and generation_. O’Reilly Media. - Evans, E. (2003). _Domain-driven design: Tackling complexity in the heart of software_. Addison-Wesley Professional. - Millett, S., & Tune, N. (2015). _Patterns, principles, and practices of domain-driven design._ Wrox.