Example ERD
The following example shows an ERD for a school. Each box represents a different table.
Key Concepts
Term | Means | School Example | ||
---|---|---|---|---|
Table | A table represents a thing or entity. The table name is displayed in the blue area.
| Tables:
| ||
Attributes | The table has a list of attributes. If you display the table data in a grid, the attributes are the column headers. They name what the data is, and sets the type (date, integer, string etc.) and any format details. | Student table has attributes:
| ||
Primary key | PhixFlow automatically generates an attribute that is the unique identifier, UID. This is the table's primary key. The records for this attribute will all have a unique value. You may want to rename UID to something more descriptive, although it's a good idea to include ID in the name. Primary keys are indicated using a green key icon.
| Primary keys in different tables:
| ||
Relationship | You can create a relationship between the primary key in one table, to an attribute in another table. On the diagram the relationship is shown as an arrow from a primary key to an attribute in another table. Relationships always point from a primary key to a non-primary attribute. When you are designing screens, you can create views to display attributes from a table AND from other, related tables. Between two tables with multiple relationships, each connection must have a unique name. | By convention, set the name of a relationship an action (verb) that follows the left-right flow of the diagram.
| ||
Foreign key | Relationships show that the data in a primary key in one table also appears in an attribute in another table. The attribute may have a different name, but it must represent the same data. This attribute is a foreign key. Foreign keys are indicated using a grid icon. When you create a relationship in an ERD, PhixFlow automatically sets the foreign key status for the attribute. | Employee attributes:
Department attributes
|
Understanding Relationships
Relationships
From and ToRelationships between tables have a direction that depends on the table on which you are focused. For example, looking at the Teacher table, shown below, you can see 2 relationships.
- The school DepartmentID primary key connect connects into the Teacher table. This inbound relationship, called has-teachers, is highlighted in blue.
- The Teach Teacher table connects from its TeacherID primary key to an attribute in the Course table. This outbound relationship, called runs, is highlighted in green.
One-to-many and Many-to-
OneThe arrow is always drawnone
PhixFlow always draws a relationship arrow from a primary key to another, non-primary, attribute. This represents a one-to-many relationship, for example, one teacher→ runs→ many courses. For this type of relationship, PhixFlow automatically sets it to be aggregate. This means the relationship reports the total number. So a teacher runs 3 courses. In the ?? properties, you can clear the aggregate setting to report the full list of their courses.
A many-to-one relationship is implied when you read a relationship in the opposite direction. For example, a departhment department has many teachers, and several teachers work for one department.
Finding out about the relationships between tables
Use the ERD.
You can highlight relationships From and ToMany-to-many
To create a many-to-many relationship, you need an intermediate table that has foreign key attributes from the tables you want to connect. For example, there is a many-to-many relationship between customers and products.
- A customer → buys → many products
- A product → is bought by → many customers
The intermediate Customer Purchase Record table has both the CustomerID and ProductID as foreign keys.
- Customer purchase → records → CustomerIDs
- Customer purchase record → lists → ProductIDs
many students take multiple courses. This relationship is shown using the intermediate table called CourseAttendee.
- A course→ is attended by→ many students
- A student→ takes → many courses