Blame
|
1 | > **DRAFT** — under teacher review. |
||||||
| 2 | ||||||||
| 3 | # Data Dictionary — "Format" Is Not "Type" |
|||||||
| 4 | ||||||||
| 5 | The Hamilton and Alexandra College · Year 12 · 2026 |
|||||||
| 6 | ||||||||
| 7 | The single most common data-dictionary error is writing a data **type** in the **Format** column. They are not the same thing. This page explains the difference, shows you what correct entries look like, and maps to the VCAA band descriptors. |
|||||||
| 8 | ||||||||
| 9 | --- |
|||||||
| 10 | ||||||||
| 11 | ## The core distinction |
|||||||
| 12 | ||||||||
| 13 | **Type** is the *kind* of data — what category it belongs to. |
|||||||
| 14 | ||||||||
| 15 | **Format** is the *storage or display pattern* — the exact shape the value takes. |
|||||||
| 16 | ||||||||
| 17 | These are different answers to different questions: |
|||||||
| 18 | ||||||||
| 19 | | Question | Column | Example answer | |
|||||||
| 20 | |---|---|---| |
|||||||
| 21 | | What kind of data is this? | **Type** | `Integer` | |
|||||||
| 22 | | What does a valid value look like? | **Format** | `999999` (fixed 6 digits) | |
|||||||
| 23 | ||||||||
| 24 | If you write `Integer` in the Format column, you have answered the wrong question. A marker sees that and knows you have conflated two concepts. |
|||||||
| 25 | ||||||||
| 26 | --- |
|||||||
| 27 | ||||||||
| 28 | ## Format notation key |
|||||||
| 29 | ||||||||
| 30 | The format strings use a small set of symbols — memorise these: |
|||||||
| 31 | ||||||||
| 32 | | Symbol | Meaning | |
|||||||
| 33 | |---|---| |
|||||||
| 34 | | `9` or `N` | One digit (0–9) | |
|||||||
| 35 | | `X` | One uppercase letter | |
|||||||
| 36 | | `x` | One lowercase letter | |
|||||||
| 37 | | `YYYY` | Four-digit year | |
|||||||
| 38 | | `MM` | Two-digit month | |
|||||||
| 39 | | `DD` | Two-digit day | |
|||||||
| 40 | | Separator (`,` `.` `-`) | Literal separator character | |
|||||||
| 41 | ||||||||
| 42 | So `999999` means "exactly six digits". `Xxxxxxxxxxxxxxx` means "one uppercase letter followed by lowercase letters — the number of `x` characters shows the maximum length". |
|||||||
| 43 | ||||||||
| 44 | --- |
|||||||
| 45 | ||||||||
| 46 | ## Worked example — a complete data dictionary |
|||||||
| 47 | ||||||||
| 48 | These rows come from a client-management system. Read across each row and notice that Type and Format sit in separate columns and say different things. |
|||||||
| 49 | ||||||||
| 50 | | Field | Type | Size | Format | Example | |
|||||||
| 51 | |---|---|---|---|---| |
|||||||
| 52 | | `id` | Integer | 6 | `999999` | 201940 | |
|||||||
| 53 | | `firstName` | Text | 50 | `Xxxxxxxxxxxxxxx` | Jane | |
|||||||
| 54 | | `lastName` | Text | 50 | `Xxxxxxxxxxxxxxx` | Smith | |
|||||||
| 55 | | `DOB` | Date/time | 8 | `YYYY-MM-DD` | 2001-07-19 | |
|||||||
| 56 | | `clubMember` | Boolean | 1 | `true/false` | true | |
|||||||
| 57 | | `memberYears` | Integer | 2 | `NN` | 6 | |
|||||||
| 58 | | `sales` | FloatingPoint | 8 | `NN,NNN.NN` | 12,543.76 | |
|||||||
| 59 | ||||||||
| 60 | Notice what each Format entry tells you that the Type alone does not: |
|||||||
| 61 | ||||||||
| 62 | - `id` is an Integer — but the Format `999999` tells you it is always **6 digits**, not 1 or 2. |
|||||||
| 63 | - `firstName` is Text — but `Xxxxxxxxxxxxxxx` tells you it starts with a **capital** and the rest are lowercase. |
|||||||
| 64 | - `DOB` is Date/time — but `YYYY-MM-DD` fixes it to **ISO format**, not DD/MM/YYYY or MM-DD-YYYY. |
|||||||
| 65 | - `sales` is FloatingPoint — but `NN,NNN.NN` specifies a **thousands separator** and exactly **2 decimal places**. |
|||||||
| 66 | ||||||||
| 67 | --- |
|||||||
| 68 | ||||||||
| 69 | ## Why Format matters |
|||||||
| 70 | ||||||||
| 71 | Format entries do three jobs in your design documentation: |
|||||||
| 72 | ||||||||
| 73 | - **Data consistency** — every value entered follows the same shape, so comparisons and sorting work correctly. |
|||||||
| 74 | - **Validation** — your software can reject an entry that does not match the pattern (e.g., a date typed as `19-07-01` instead of `2001-07-19`). |
|||||||
| 75 | - **Readability** — another developer reading your data dictionary can reproduce the exact storage structure without guessing. |
|||||||
| 76 | ||||||||
| 77 | A Format column filled with type names (`Integer`, `String`, `Boolean`) gives you none of these benefits — it duplicates the Type column and adds no information. |
|||||||
| 78 | ||||||||
| 79 | --- |
|||||||
| 80 | ||||||||
| 81 | ## VCAA band levels — what's required at each step |
|||||||
| 82 | ||||||||
| 83 | VCAA defines a data dictionary as specifying variables, arrays, and GUI objects with reference to data types, data structures, and data sources. The level descriptors build upward: |
|||||||
| 84 | ||||||||
| 85 | | Level | What you must include | |
|||||||
| 86 | |---|---| |
|||||||
| 87 | | **Level 3** | Reference to **data types** (Integer, Text, Boolean, Date/time, FloatingPoint) | |
|||||||
| 88 | | **Level 5** | Data types **and data structures** (arrays, records — not just scalar variables) | |
|||||||
| 89 | | **Level 7** | Data types, data structures **and data sources** (where does each value come from — user input, database, calculation?) | |
|||||||
| 90 | ||||||||
| 91 | You cannot skip levels. If your dictionary has no data structures, you cannot claim Level 5 or above. |
|||||||
| 92 | ||||||||
| 93 | --- |
|||||||
| 94 | ||||||||
| 95 | ## Common mistakes |
|||||||
| 96 | ||||||||
| 97 | ### Mistake 1: Format = Type |
|||||||
| 98 | ||||||||
| 99 | > ~~`Format: Integer`~~ |
|||||||
| 100 | ||||||||
| 101 | Write the pattern instead: `999999`, `NN`, etc. If you cannot write a pattern, leave a note and revisit — but do not copy the Type column. |
|||||||
| 102 | ||||||||
| 103 | ### Mistake 2: Missing data sources at Level 7 |
|||||||
| 104 | ||||||||
| 105 | > ~~(no Source column, or Source column left blank for half the rows)~~ |
|||||||
| 106 | ||||||||
| 107 | Every field at Level 7 needs a source. "User input", "calculated from `sales` total", "retrieved from customer database" — these are all valid. Blank is not. |
|||||||
| 108 | ||||||||
| 109 | ### Mistake 3: Vague sizes |
|||||||
| 110 | ||||||||
| 111 | > ~~`Size: large`~~ |
|||||||
| 112 | ||||||||
| 113 | Size must be a number — the number of characters, bytes, or digits the field can hold. If you do not know, look at your data (the longest plausible value) and choose a round number that covers it. |
|||||||
| 114 | ||||||||
| 115 | ### Mistake 4: Only scalar variables |
|||||||
| 116 | ||||||||
| 117 | A dictionary that lists only individual variables but no arrays or records cannot score Level 5 or above. If your design uses a list of items or a record structure, include it. |
|||||||
| 118 | ||||||||
| 119 | --- |
|||||||
| 120 | ||||||||
| 121 | ## 🎬 Watch |
|||||||
| 122 | ||||||||
| 123 | > [!NOTE] |
|||||||
| 124 | > Video coming soon. |
|||||||
| 125 | ||||||||
| 126 | **🎯 Watch for:** how an experienced developer reads a Format string and immediately knows the exact shape of valid data — something the Type alone can never tell you. |
|||||||
| 127 | ||||||||
| 128 | --- |
|||||||
| 129 | ||||||||
| 130 | ## Check Your Understanding |
|||||||
| 131 | ||||||||
| 132 | 1. A student writes `Text` in the Format column for a `lastName` field. What is the mistake, and what should they write instead? |
|||||||
| 133 | ||||||||
| 134 | >| ### Answer |
|||||||
| 135 | >| `Text` is a **type**, not a format. It duplicates the Type column and adds nothing. The correct Format entry is `Xxxxxxxxxxxxxxx` — one uppercase letter followed by lowercase letters, with the number of `x` characters indicating maximum length (e.g. 15 for a 15-character maximum). |
|||||||
| 136 | ||||||||
| 137 | 2. Your data dictionary has variables and arrays but no data sources. Which VCAA level can you reach, and which is out of reach? |
|||||||
| 138 | ||||||||
| 139 | >| ### Answer |
|||||||
| 140 | >| You can reach **Level 5** (data types and data structures). **Level 7** is out of reach because it requires data sources as well. Add a Source column and fill it in for every row to unlock Level 7. |
|||||||
| 141 | ||||||||
| 142 | 3. What does the Format string `NN,NNN.NN` tell you that the Type `FloatingPoint` does not? |
|||||||
| 143 | ||||||||
| 144 | >| ### Answer |
|||||||
| 145 | >| It tells you the value uses a **thousands separator** (`,`) and is stored to exactly **two decimal places**. `FloatingPoint` alone does not specify either of these — you could have `12543.7` or `12,543.759` and both would be valid floats, but only `12,543.76` matches the format. |
|||||||
| 146 | ||||||||
| 147 | --- |
|||||||
| 148 | ||||||||
| 149 | ## See also |
|||||||
| 150 | ||||||||
| 151 | - [IPO Charts — Process Means Steps](/sd/C05/IPO%20Charts%20-%20Process%20Means%20Steps) |
|||||||
| 152 | - [Sketch vs Mock-up](/sd/C05/Sketch%20vs%20Mock-up) |
|||||||
| 153 | - [Ryan's Tutorials — Data Dictionary](https://ryanstutorials.net/software-design-and-development/data-dictionary.php) — AU secondary-pitched; shows a "Format for Display" column with N/X notation |
|||||||
| 154 | - [C05 Resources](/sd/Resources/C05-Resources) |
|||||||
| 155 | ||||||||
| 156 | ← Back to [C05 Home](/sd/C05/C05-home) · [VCE Software Development Hub](/sd/VCE%20Software%20Development%20Hub) |
|||||||
