# Criterion 5 Component Guide: Data Dictionaries
In VCE Software Development, a **data dictionary** is a structured table used to design the data requirements of a software module. It acts as a blueprint for all the data elements in your code, databases, and user interface.
---
## 1. VCAA Required Columns
To ensure a high score, your data dictionary must follow the VCAA-specified table format.
* **Minimum Requirement (Marks 1–4):** `Name` and `Data type`.
* **High/Very High Requirement (Marks 5–10):** Add fields like `Description`, `Size / Range`, `Validation rules`, and `Data sample`.
### Recommended Structure:
| Name | Data Type | Description | Size / Limit | Validation Rules | Data Sample |
| :--- | :--- | :--- | :--- | :--- | :--- |
---
## 2. Standard Software Development Data Types
In your data dictionary, you must map elements to standard data types. Refer to the table below for standard VCE definitions:
| Data Type | Description | Example Values |
| :--- | :--- | :--- |
| **String** / **Text** | Alpha-numeric characters and text values. | `"Hello World"`, `"7566-jgilbert"` |
| **Character** | A single alphanumeric character or symbol. | `'A'`, `'%'` |
| **Integer** | Whole numbers (positive, negative, or zero). | `42`, `-107` |
| **Floating Point** / **Real** | Decimal numbers. | `19.95`, `-0.005` |
| **Boolean** | Logical values representing True or False. | `True`, `False` |
| **Date/Time** | Structured date or time values. | `2026-06-09`, `11:06:05` |
| **Array** | A collection of elements of the same data type. | `[ "Apple", "Banana", "Cherry" ]` |
| **Record** | A complex data structure storing related fields of varying types. | A row in a database table representing a user. |
---
## 3. Creating Multiple Categories of Data Dictionaries
To ensure your design is **complete** (required for 9–10 marks), do not just list database fields. You should partition your data dictionaries into three distinct categories:
### A. Logical Variables & Constants (Code Level)
These represent variables stored in memory during runtime.
* *Naming Convention:* camelCase with type prefix (e.g., `intAge`, `strUserName`, `fltPrice`).
| Name | Data Type | Description | Size / Limit | Validation Rules | Data Sample |
| :--- | :--- | :--- | :--- | :--- | :--- |
| `strEmail` | String | Stores the current user's email address in memory during login. | Max 255 chars | Must contain `@` and a domain name. | `"
[email protected]"` |
| `MAX_ATTEMPTS` | Integer | Constant defining the maximum login attempts before lockout. | Value = 3 | N/A | `3` |
| `boolIsAdmin` | Boolean | Flag indicating if the logged-in user has admin privileges. | 1 bit | Must be True or False. | `True` |
### B. Database / File Storage Records (Data Layer)
These represent records saved to external sources (such as CSV files, text files, or SQL databases).
* *Naming Convention:* PascalCase or snake_case matching database schema headers.
| Name | Data Type | Description | Size / Limit | Validation Rules | Data Sample |
| :--- | :--- | :--- | :--- | :--- | :--- |
| `UserID` | Integer | Unique primary key identifying the user account. | Auto-increment | Primary key, Not Null, Unique. | `1004` |
| `PasswordHash` | String | SHA-256 hashed and salted user password. | 64 chars | Fixed size, Not Null. | `"e3b0c44298fc1c149afb..."` |
| `CreationDate` | Date/Time | The date and time the user account was created. | YYYY-MM-DD | Valid date format, Not Null. | `"2026-06-09"` |
### C. UI Interface Controls (GUI Layer)
These represent the visual interface elements shown on your mock-ups.
* *Naming Convention:* Hungarian notation prefix representing the control type (e.g., `txt` for TextBox, `lbl` for Label, `btn` for Button, `lst` for ListBox).
| Name | Data Type | Description | Sourced From / Associated Logic | Data Sample |
| :--- | :--- | :--- | :--- | :--- |
| `txtInputEmail` | TextBox Control | Graphic input field where the user types their login email. | Maps to variable `strEmail`. | `"
[email protected]"` |
| `lblEmailError` | Label Control | Dynamic label that displays validation error messages. | Visible = False by default. | `"Invalid Email Format"` |
| `btnSubmitLogin` | Button Control | Clickable button that triggers the login authentication script. | Triggers validation and password checks. | `Click event` |
---
## 4. Student Tip for High Marks
Ensure that every variable used in your **Pseudocode** and every property listed in your **Object Descriptions** can be cross-referenced and found inside your **Data Dictionaries**. If an assessor finds an variable in your pseudocode that is not in your data dictionary, your design is **incomplete**, which will limit your score.