| Lesson 8 | Verbalizing an ER diagram |
| Objective | Describe and apply a clear process for verbalizing an ER diagram. |
Verbalization turns an ER diagram into precise, plain-language statements. It lets modelers and stakeholders check the same business rules without requiring everyone to read diagram symbols. Use it during model reviews and revisit the statements as the logical schema and its normalization evolve.
Done well, verbalization is consistent, testable, and brief. Use the grammar below and keep a running list per entity and relationship.
| Related instances | Sentence pattern |
|---|---|
| Exactly one (1..1) | Each A must relate to exactly one B. |
| Zero or one (0..1) | Each A may relate to zero or one B. |
| One or more (1..*) | Each A must relate to one or more Bs. |
| Zero or more (0..*) | Each A may relate to zero or more Bs. |
Replace “relate to” with a business verb such as places, contains, or supplies. “Can have many” alone does not state whether zero is allowed. For Crow’s Foot notation, read the symbols at the opposite end: the markers beside ORDER count orders for one customer. Then reverse the direction and read the markers beside CUSTOMER.
The following logical model uses the course’s Stories on CD scenario. It is a compact schema summary, not executable SQL. PK means primary key, FK means foreign key, and CPK/FK marks a column that belongs to a composite primary key and is also a foreign key.
Customers (CustID PK, CustLast, CustFirst, CustStreet, CustCity, CustState, CustZip, CustPhone)
Orders (OrderNo PK, CustID FK, OrderDate)
LineItems (OrderNo CPK/FK, CDNo CPK/FK, Quantity, SellingPrice, LineCost, Shipped)
CDs (CDNo PK, CDTitle, DistID FK, RetailPrice, AgeGroup, Description)
Distributors (DistID PK, DistName, DistStreet, DistCity, DistState, DistZip, DistPhone)
Business rules assumed for this example: every order belongs to one customer; every CD has one distributor; and a submitted order contains at least one line item. A customer, CD, or distributor may exist before participating in a sale. The key labels above do not, by themselves, specify all these participation rules.
Customer represents a buyer and is identified by CustID.Order records a customer purchase and is identified by OrderNo.CD represents a catalog item and is identified by CDNo.Distributor represents a supplier of catalog items and is identified by DistID.LineItem records the quantity and selling price of a CD in an order. It is identified by the composite key (OrderNo, CDNo).Order must belong to exactly one Customer; each Customer may have zero or many Orders.LineItem must reference exactly one Order; each submitted Order must contain one or more LineItems. If the system also stores draft orders, specify separately whether drafts may temporarily contain zero line items.LineItem must reference exactly one CD; each CD may appear in zero or many LineItems.CD must have exactly one Distributor; each Distributor may supply zero or many CDs.CustPhone is a phone-number domain (format validated per locale).Quantity is a positive whole number. RetailPrice and SellingPrice are non-negative amounts in the example’s agreed currency. SellingPrice records the unit price for that sale and must not change merely because the catalog price changes. Define LineCost = Quantity × SellingPrice as the line amount before any separately modeled taxes or discounts; derive it or enforce consistency if it is stored.Shipped can be a yes/no indicator. If a line can be shipped in parts, this field alone is insufficient: record shipment quantities and events in an extended model.The composite key (OrderNo, CDNo) permits each CD only once per order; Quantity records multiple copies. If users need separate lines for the same CD, such as different prices or delivery arrangements, consider a line number unique within an order: (OrderNo, LineNo). Keep CDNo as a foreign key. Agree on the business rule before changing the identifier.
A non-null foreign key from an order to a customer enforces the order’s mandatory customer reference. It does not require a customer to place an order. Likewise, a line-item foreign key prevents an invalid order reference but does not ensure that every order has a line item. The “submitted order has at least one line” rule needs separate enforcement when an order is submitted, with transactions and concurrency handled appropriately.
The one-distributor-per-CD rule is an assumption for this example, not a universal rule. If a CD can be sourced from several distributors, model that many-to-many relationship through an associative entity and verbalize the revised rules.
CustID and DistID; alternatives such as customer_id and distributor_id are also clear. Table-name prefixes are a convention, not a relational requirement.CustLast, CustFirst).Read these cases to users during the review described in Lesson 7. If an expected case contradicts a statement, revise the rule and diagram together, and record who approved the decision.
The next lesson concludes the module.