# 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.