I use an entity-relationship diagram (ERD) to show the data structure of a system. First, I define the key term. An ERD maps entities, their attributes, and the relationships between them. Abbreviation: ERD. In addition, I show cardinalities and keys. Therefore, others can see how data items connect.
I work at the level of requirements. Thus, I focus on the information-structure view. In this view, I describe the static and structural aspects of the system. For example, I show the data the system must process. Moreover, I clarify which data elements belong together. Consequently, stakeholders better understand data needs.
I use common notations. For example, I may use Chen notation. In Chen, I draw entities as rectangles. Then, I draw relationships as diamonds. Alternatively, I use crow’s-foot notation. Also, I may follow FMC dialects. Each notation emphasizes different details. However, I always keep the diagram readable.
I apply ERDs to identify interfaces. For instance, I map which data flows to and from neighboring systems. Therefore, I can show the necessary interfaces between the system under development and its context. In practice, I combine ERDs with context diagrams. Thus, I link the static data model to the system boundary. Meanwhile, I keep the ERD focused on data, not on control flow.
I avoid confusing requirements with design. First, I model conceptual entities and relationships. Then, I avoid implementation details, unless stakeholders request them. For example, I do not specify database indexes at the requirements stage. Otherwise, the ERD may reflect system design rather than requirements. Furthermore, I validate conceptual entities with domain experts. In addition, I trace entities back to use cases and scenarios.
I align ERDs with other requirement views. For instance, I relate ERD elements to class diagrams when needed. However, I remember that UML and SysML serve broader modeling tasks. In particular, SysML does not include a class diagram. Therefore, I choose the best modeling language for the task. Moreover, I use ERDs with data-flow diagrams for context modeling. As a result, I deliver a coherent requirements model.
I include attributes and constraints. Namely, I state required attributes, mandatory fields, and uniqueness constraints. Thus, I capture boundary conditions and data quality needs. Also, I show optional attributes and multi-valued features. Consequently, I support later validation and testing.
I warn about common pitfalls. First, I avoid mixing behavior with data. Second, I prevent premature design decisions. Third, I ensure terminology consistency. For example, I confirm that “customer” means the same to all stakeholders. Therefore, I facilitate communication.
I follow practical steps. First, I interview domain experts. Second, I draft a conceptual ERD. Third, I review the ERD with stakeholders. Fourth, I refine the diagram and record decisions. Finally, I link the ERD to other requirement artifacts.
In summary, I use ERDs to make data structure explicit. Moreover, I use them to identify interfaces and to support requirement validation. Therefore, I keep ERDs simple, consistent, and focused on requirements. Consequently, teams gain a clear view of the system’s information structure.

