SELF-GUIDED BA PRACTICE Selected editions available · Access after confirmed paymentCheck editions ↗

Data & SQL

Data Dictionary Template and Example for Business Analysts

Data & SQL · Published · Updated · 10 min read · By BA Mentorship Editorial (AI-written)

Part of our guide to business analyst skills.

What a data dictionary is and why BAs need one

A data dictionary is a reference table that explains the data your project creates, stores, moves or reports on. Each row is one field. Each column answers a question about that field: what it means, what it looks like, where it comes from and who decides what it should contain.

BAs care about it because most data problems are really meaning problems. A developer reads 'total' and thinks one thing. A finance user reads it and thinks another. A tester has a third idea. The dictionary forces one agreed definition and writes it down where everyone can find it.

It also saves time later. When someone asks why a report number looks odd, or which field an API should send, the answer is already written. Documenting data clearly is one of the practical skills covered in our guide to business analyst skills.

Data dictionary vs data model vs glossary

AspectData dictionaryData model (ERD)Business glossary
Main question it answersWhat does each field mean and contain?How do tables and entities relate?What do our business terms mean?
Level of detailOne row per field, with type, format and rulesEntities, keys and relationshipsOne entry per business term, no technical detail
Typical authorBA with the data or development teamData architect or developerBA or business owners
Main readersDevelopers, testers, report builders, BAsDevelopers and data engineersEveryone on the project
Three related documents that answer different questions. Many projects keep all three and link them together.

If you are new to entities and keys, read about the entity relationship diagram first. The dictionary adds the field-level detail that a diagram leaves out.

Fields to include in a data dictionary template

You do not need every column below on day one. Start with the core group and add the rest as the project needs them. A spreadsheet with these columns is a perfectly good template.

Core columns (always include)

  • Field name: the technical name used in the system, for example order_status. Copy it exactly.
  • Business name: the friendly name users see on screens and reports, for example 'Order status'.
  • Definition: one or two plain sentences that say what the field means, including what it covers and what it leaves out.
  • Data type and format: text, whole number, decimal, date or true/false, plus length or pattern.
  • Allowed values or range: a fixed list, a minimum and maximum, or a pattern.
  • Mandatory and default: whether the field can be empty, and what value it holds if nobody sets it.
  • Example value: one realistic, made-up sample. Examples catch misunderstandings faster than definitions.

Rules and source columns

  • Source: the system and table, screen, file or API the value comes from.
  • Business rule or derivation: how a calculated field is worked out, and when it is set, changed or reset.
  • Sensitivity: whether the field holds personal or confidential data, so it can be masked or restricted.

Governance and traceability columns

  • Business owner: the person or role who decides what the field means.
  • Technical owner: the team that maintains the field in the system.
  • Linked requirements: the requirement or user story IDs that create or use the field.
  • Used in reports: the reports, dashboards or KPIs that depend on it.
  • Last changed and why: a date, a version or a link to the decision that changed it.

How to build a data dictionary step by step

Build the dictionary alongside the requirements, not after go-live. These steps work for a new feature, a data migration or a reporting project.

  1. Agree the scope. List the screens, tables, files, APIs and reports in scope. Only fields inside that scope need entries.
  2. Collect the raw field list. Ask developers for table structures, export column names from existing reports, or read the API specification. A simple SELECT on a few sample rows shows you real values, as explained in our SQL guide for business analysts.
  3. Draft definitions in plain English. Write what each field means, including what it leaves out. Mark anything you are unsure about as an open question.
  4. Review meanings with business owners. Walk through the draft with the people who own the data. Their answers become the agreed definitions.
  5. Confirm technical details. With the development team, check types, lengths, defaults and how calculated fields are worked out and when.
  6. Link each field to requirements and reports. Add requirement IDs and report names so every field has a reason to exist.
  7. Publish and keep a change log. Put it somewhere shared, such as a wiki page, and record every change with a date, a reason and an approver.
Building a data dictionary7 steps in order: 1. Agree the scope: List the screens, tables, APIs and reports that are in scope. 2. Collect the raw field list: Gather column names from tables, existing reports and API specifications. 3. Draft plain definitions: Write what each field means, what it covers and what it leaves out. 4. Review with business owners: Agree meanings and rules with the people who own the data. 5. Confirm technical details: Check types, formats, defaults and calculations with developers. 6. Link to requirements and reports: Add requirement IDs and report names to every field. 7. Publish with a change log: Share it on a wiki page and record every change and approval.1Agree the scopeList the screens, tables, APIs andreports that are in scope.2Collect the raw field listGather column names from tables, existingreports and API specifications.3Draft plain definitionsWrite what each field means, what itcovers and what it leaves out.4Review with business ownersAgree meanings and rules with the peoplewho own the data.5Confirm technical detailsCheck types, formats, defaults andcalculations with developers.6Link to requirements and reportsAdd requirement IDs and report names toevery field.7Publish with a change logShare it on a wiki page and record everychange and approval.
Seven steps from scope to a maintained, shared document. Steps 3 to 5 often loop until the owners agree.
Diagram in words
  • 1. Agree the scope: List the screens, tables, APIs and reports that are in scope.
  • 2. Collect the raw field list: Gather column names from tables, existing reports and API specifications.
  • 3. Draft plain definitions: Write what each field means, what it covers and what it leaves out.
  • 4. Review with business owners: Agree meanings and rules with the people who own the data.
  • 5. Confirm technical details: Check types, formats, defaults and calculations with developers.
  • 6. Link to requirements and reports: Add requirement IDs and report names to every field.
  • 7. Publish with a change log: Share it on a wiki page and record every change and approval.

Worked example: a data dictionary for a loyalty feature

Marigold Grocers is a fictional online grocery in India. It is adding loyalty points to its app. The agreed rule, requirement REQ-LOY-03, says: customers earn 1 point for every ₹10 of goods value, rounded down. Goods value includes tax, because Marigold shows tax-inclusive prices, but it does not include the delivery fee. The loyalty manager confirmed the tax question, and the answer is recorded as decision D-07.

Here are the example rows the BA, Nadia, drafted for the orders data. The sample order has goods worth ₹1,200 (tax included) and a delivery fee of ₹50, so the customer pays ₹1,250 and earns 120 points.

TEXT

Field name     | Business name  | Type          | Mandatory      | Allowed values / format                  | Example
order_id       | Order number   | Text(12)      | Yes            | MG- then 9 digits                        | MG-000451234
order_status   | Order status   | Text          | Yes            | Placed, Delivered, Cancelled, Returned   | Delivered
goods_subtotal | Goods value    | Decimal(10,2) | Yes            | 0.00 or more; includes tax; no delivery  | 1200.00
delivery_fee   | Delivery fee   | Decimal(10,2) | Yes, default 0 | 0.00 or more                             | 50.00
order_total    | Amount paid    | Decimal(10,2) | Yes            | goods_subtotal + delivery_fee            | 1250.00
points_earned  | Points earned  | Integer       | Yes, default 0 | 0 or more; rule REQ-LOY-03               | 120
customer_email | Customer email | Text(254)     | Yes            | Valid email; personal data, mask it      | (masked)

Notice that every amount field says what it includes. That one habit prevents most arguments later. Here is the full entry for the calculated field, with the extra columns that do not fit in the summary table.

One complete dictionary entry

Dictionary entry: points_earned

Field: points_earned1

Business name: Loyalty points earned

Definition: Points the customer earns for one delivered order.

Type: Integer, 0 or more

Mandatory: Yes. Default 0 when the order is created.2

Rule: goods_subtotal divided by 10, rounded down. Goods value includes tax, excludes delivery fee.3

Example: goods_subtotal 1200.00 gives 120 points

Timing: Calculated when order_status becomes Delivered.4

Reset: Stays 0 if Cancelled before delivery. Set back to 0 if order_status becomes Returned.4

Source: Orders service, table orders

Owner: Loyalty manager (business), Orders team (technical)5

Links: REQ-LOY-03, decision D-07, report Weekly Loyalty Summary6

  1. Exact technical name. Copy the field name exactly as it appears in the system, so developers and report builders can search for it.
  2. Mandatory needs a default. Points do not exist until delivery, so the entry says the field starts at 0. Nobody has to guess what an undelivered order holds.
  3. State the basis clearly. The rule names the source field and says tax is in and the delivery fee is out. So ₹1,200 of goods gives 120 points, whatever the delivery fee.
  4. Timing and reset. The value is calculated on Delivered, stays 0 if the order is cancelled before delivery, and goes back to 0 if the order is returned.
  5. Two owners. The loyalty manager owns the meaning. The orders team owns how it is stored and calculated.
  6. Traceability links. Links to the requirement, the decision and the report let anyone trace why the field exists and who uses it.
The full entry for points_earned at Marigold Grocers, a fictional company. Each note explains why a line is there.

Two weeks later, during testing, the dictionary paid for itself.

The dictionary catches a hidden mismatch

Marigold Grocers, a fictional online grocery, during the test review of the new loyalty points feature.

  1. Riya QA tester

    My test order has goods of ₹1,200 and a ₹50 delivery fee, so the customer pays ₹1,250. I expected 120 points, but the build gave 125.

  2. Mei Lead developer

    We calculated from order_total. It was the only amount I noticed in the orders API.

  3. Nadia Business analyst

    The entry for points_earned says the basis is goods_subtotal, which leaves out the delivery fee. The ₹50 fee at 1 point per ₹10 is exactly the 5 extra points.

  4. Mei Lead developer

    Clear. One more check: does goods_subtotal include tax?

  5. Nadia Business analyst

    Yes. Prices on the site include tax, and the loyalty manager confirmed points are earned on that tax-inclusive goods value. It is decision D-07, linked from the entry.

  6. Riya QA tester

    Then I will add two more tests: an order cancelled before delivery and a returned order. Both should end at 0 points.

The people and the company in this scene are fictional.

The tester's expected result and the build disagree. The dictionary entry settles which number is right.

The fix took minutes because the definition already existed. Without the dictionary, the team would have argued about which number was right, and wrong points could have reached real customers.

Who maintains the data dictionary

A data dictionary is shared work, but it needs one clear keeper. On most projects the split looks like this:

  • The BA drafts the dictionary, runs the reviews, keeps open questions visible and makes sure entries match the requirements.
  • Business data owners (for example a finance lead or a loyalty manager) approve definitions and business rules. They decide what a field means.
  • The development or data team confirms types, lengths, defaults, sources and calculations. They decide how a field is stored.
  • Testers and report builders flag gaps they find and use the dictionary as the source of expected results.

During the project, the BA is usually the keeper. After go-live, ownership often moves to a data steward, a product owner or the data team. Agree this handover before the project closes, or the dictionary will slowly go out of date.

Treat changes like requirement changes. If a definition changes, record who approved it, when and why, and tell the people whose reports or tests depend on it.

Linking the dictionary to requirements and reports

A field without a link is a field nobody can explain. Two kinds of link matter most.

Fields to requirements

Add a column for requirement or user story IDs. When a story says 'show the customer their points', the dictionary row for points_earned lists that story. This works in both directions: from a requirement you can find every field it touches, and from a field you can see why it exists. If your project keeps a requirements traceability matrix, reference the dictionary from it rather than copying definitions into it.

Fields to reports and KPIs

Add a column for the reports, dashboards and measures that use each field. Report builders then know exactly which field to use and what it means. When someone plans to change a field, this column shows which reports will be affected. It also helps when building measures in reporting tools, as described in our Power BI guide for business analysts.

Keep links as IDs or page names, not copied text. Copies drift apart over time. Links stay true.

Common data dictionary mistakes

  • Definitions that repeat the name. 'Order total: the total of the order' tells nobody anything. Say what is included and what is left out.
  • Amounts with no basis. Always state whether a money field includes tax, discounts, delivery charges or refunds.
  • Calculated fields with no timing. Say when the value is first set, when it changes and what it holds before then.
  • Mandatory with no default. If a field cannot be empty, say what it contains before the business event that fills it.
  • Documenting every column in the database. Stick to fields in scope. A huge dictionary nobody reads helps no one.
  • No named owner. Without a business owner, definitions are guesses, and guesses get built.
  • Writing it once and abandoning it. An outdated dictionary is worse than none, because people still trust it.
  • Copying real customer data as examples. Use made-up sample values and mask personal data.

Data dictionary review checklist

Run through this list before you share the dictionary for review or sign-off.

Before you share your data dictionary

  • Every field in scope has a technical name and a business name.
  • Each definition says what is included and what is left out.
  • Types, formats, allowed values and defaults are confirmed by the technical team.
  • Calculated fields state the rule and when the value is set, changed or reset.
  • Each field has a business owner and a technical owner.
  • Fields link to requirement IDs and to the reports that use them.
  • Personal or sensitive fields are flagged, and example values are made up.
  • A change log records what changed, when, why and who approved it.
Eight quick checks that catch the gaps reviewers usually find.
Silent clip, about 20 seconds. BA Lab screen recording: running a SQL query and reading the automatic check. All data in it is fictional.

Frequently asked questions

Is a data dictionary the same as a data model?

No. A data model or entity relationship diagram shows the tables and how they relate through keys. A data dictionary describes each field in detail: meaning, format, allowed values, rules and owners. They work best together, with the dictionary adding the detail the diagram leaves out.

What tool should I use to create a data dictionary?

A spreadsheet or a shared wiki page is enough for most projects. What matters is that it is easy to find, easy to update and has a change log. Some organisations use dedicated data catalogue tools, but the columns and the discipline are the same.

Does every field in the database need an entry?

No. Document the fields that are in scope for your project: the ones your requirements create, change, move or report on. You can add more later if the scope grows. A focused dictionary that people read is better than a complete one nobody opens.

How should I mark personal or sensitive data in the dictionary?

Add a sensitivity column and flag fields such as names, emails, phone numbers or account details. Note whether they must be masked in reports or test data. Rules on personal data vary by country and industry, so check requirements with your organisation's data protection team and the official regulator for your region.

Can a BA write a data dictionary without strong technical skills?

Yes. The most valuable parts, the definitions, rules and links to requirements, are business work. Ask the technical team to confirm types, lengths and sources. Basic SQL helps you look at real sample values, but you can start with a column list and good questions.

This article was written by an AI system and published automatically after automated accuracy, safety and quality checks. All companies, people and numbers in the examples are fictional. BA Mentorship does not issue professional certifications and cannot guarantee any job or interview outcome. Spot an error? Email our support team and we will check and correct it.

Key terms in this article

Browse the full glossary

CHECK BEFORE CONTINUING

Keep your work safe