Modelling Workshop

Optional Challenge

This is an optional hands-on challenge. You can skip it and continue to the next module, or use it to practice and reinforce your graph modelling skills.

Your challenge is to design a graph model by working through the Northwind schema step by step. You can use either Arrows.app or the Neo4j Data Importer in Aura.

Workshop Overview

In the previous lessons, you learned the theory of transforming relational schemas to graph models. Now you will apply those concepts hands-on by:

  1. Creating a visual graph model

  2. Documenting your node labels and properties

  3. Defining relationships and their properties

  4. Validating your model against the relational schema

Choose Your Tool

You can complete this workshop using either of these tools:

Option A: Arrows.app (Standalone)

Arrows.app is a free, browser-based tool for designing Neo4j graph models. Use this option if you want to focus purely on data modelling without connecting to a database.

Advantages:

  • No database connection required

  • Export models as images, Cypher, or JSON

  • Share models via URL

Option B: Neo4j Data Importer (Aura)

The Neo4j Data Importer is built into AuraDB and provides a visual modelling canvas alongside the import functionality. Use this option if you want to model and import in one workflow.

To access the Data Importer:

  1. Log in to Neo4j Aura

  2. Open your AuraDB instance

  3. Click Import in the left sidebar

  4. Use the visual canvas to define nodes and relationships

Advantages:

  • Model and import in one tool

  • Direct connection to your database

  • Validate mappings against your data source

Same concepts, different tools

The modelling concepts are the same regardless of which tool you use. Both tools allow you to define node labels, properties, and relationships visually. The exercises below provide instructions for both tools.

Getting Started with Neo4j Data Importer (Aura)

If you chose the Data Importer in Aura:

Step 1: Access the Data Importer

  1. Log in to Neo4j Aura

  2. Open your AuraDB instance

  3. Click Import in the left sidebar

Step 2: Upload Your Data Files

  1. In the Files panel on the left, click Browse or drag and drop your CSV files

  2. The Northwind CSV files are available at: Northwind CSV files

  3. Upload the files you need: customers.csv, orders.csv, products.csv, categories.csv, suppliers.csv, employees.csv, shippers.csv, order-details.csv

Step 3: Create a Node

  1. Click the Add node label button on the canvas

  2. Enter a label name such as Customer

  3. In the Definition panel, select the corresponding CSV file

  4. Click Map from file to map CSV columns to node properties

  5. Select the columns you want to import and click Confirm

Step 4: Set the Unique Identifier

  1. In the properties list, find the ID property such as customerID

  2. Click the key icon next to it to set it as the unique identifier

  3. This creates a constraint and index for efficient lookups

Step 5: Create a Relationship

  1. Hover over the edge of a source node until you see the + icon

  2. Drag from the source node to the target node

  3. Enter the relationship type such as PLACED

  4. Map the From and To IDs using the CSV columns

  5. Optionally add relationship properties from the CSV

Step 6: Run the Import

  1. Once your model is complete, click Run import

  2. The Data Importer will create nodes and relationships in your database

  3. Review the import summary to verify the results

Data Importer saves automatically

Data Importer saves your model automatically. You can also download your model using the …​ menu > Download model (with data) to back up your work or share it with others.

Getting Started with Arrows.app

If you chose Arrows.app:

Step 1: Open Arrows.app

  1. Navigate to https://arrows.app

  2. You will see a blank canvas for creating your model

Step 2: Create Your First Node

  1. Click anywhere on the canvas to create a node

  2. Double-click the node to edit its label

  3. Enter Customer as the label

Exercise 1: Create the Core Nodes

Create nodes for each of the main entities in the Northwind database:

  • Customer node

  • Order node

  • Product node

  • Category node

  • Supplier node

  • Employee node

  • Shipper node

Arrange them on the canvas in a way that makes logical sense. A suggested layout:

  • Place Customer on the left

  • Place Order in the center

  • Place Product on the right

  • Place Employee above Order

  • Place Category and Supplier near Product

  • Place Shipper below Order

Exercise 2: Add Node Properties

For each node, add the main properties. In Arrows.app:

  1. Select a node

  2. Use the properties panel to add properties

  3. Focus on the most important properties for now

Customer Properties

Add these properties to the Customer node:

  • customerID — String, identifier

  • companyName — String

  • contactName — String

  • city — String

  • country — String

Order Properties

Add these properties to the Order node:

  • orderID — Integer, identifier

  • orderDate — Date

  • shippedDate — Date

  • freight — Float

Product Properties

Add these properties to the Product node:

  • productID — Integer, identifier

  • productName — String

  • unitPrice — Float

  • discontinued — Boolean

Continue with Other Nodes

Add main properties to the remaining nodes:

Category:

  • categoryID, categoryName, description

Supplier:

  • supplierID, companyName, country

Employee:

  • employeeID, firstName, lastName, title

Shipper:

  • shipperID, companyName, phone

Exercise 3: Create Relationships

Now connect the nodes with relationships. In Arrows.app:

  1. Click on the source node

  2. Drag to the target node to create a relationship

  3. Double-click the relationship to set its type

Customer to Order

Create a relationship from Customer to Order:

  1. Click on Customer

  2. Drag to Order

  3. Set the relationship type to PLACED

Employee to Order

  • Create PROCESSED relationship from Employee to Order

Order to Shipper

  • Create SHIPPED_BY relationship from Order to Shipper

Order to Product

  • Create CONTAINS relationship from Order to Product

  • Add properties: quantity, unitPrice, discount

Product Relationships

  • Create IN_CATEGORY relationship from Product to Category

  • Create SUPPLIES relationship from Supplier to Product

Employee Hierarchy

  • Create REPORTS_TO relationship from Employee to Employee, self-referencing

Exercise 4: Review Your Model

Your completed model should look similar to this:

Model Checklist

Verify your model includes:

  • 7 node types: Customer, Order, Product, Category, Supplier, Employee, Shipper

  • 7 relationship types: PLACED, PROCESSED, SHIPPED_BY, CONTAINS, IN_CATEGORY, SUPPLIES, REPORTS_TO

  • Main properties on each node

  • Properties on the CONTAINS relationship

Exercise 5: Export Your Model

Arrows.app allows you to export your model in several formats:

Export as Image

  1. Click the menu icon (three lines)

  2. Select Export

  3. Choose PNG or SVG for documentation

Export as Cypher

  1. Click Export

  2. Choose Cypher to generate CREATE statements

  3. This gives you a starting point for creating your schema

Export as JSON

  1. Click Export

  2. Choose JSON to save your model

  3. You can reload this later to continue editing

Experiment Further

Try these additional exercises to deepen your understanding:

Alternative Relationship Directions

Experiment with different relationship directions:

  • Instead of (Customer)-[:PLACED]→(Order), try (Order)-[:PLACED_BY]→(Customer)

  • Consider how this affects query readability

Add Territory Data

Extend your model to include territories:

  1. Add a Territory node

  2. Add a Region node

  3. Create ASSIGNED_TO relationship from Employee to Territory

  4. Create IN_REGION relationship from Territory to Region

Model Order Details as Nodes

Instead of the CONTAINS relationship, try modelling OrderDetail as a node:

  1. Create an OrderDetail node

  2. Create HAS_DETAIL from Order to OrderDetail

  3. Create FOR_PRODUCT from OrderDetail to Product

Compare this approach to using relationship properties. When might each be appropriate?

Workshop Summary

In this workshop, you practiced:

  • Using visual tools (Arrows.app or Neo4j Data Importer) to design graph models

  • Creating nodes with labels and properties

  • Defining relationships with types and properties

  • Exporting your model for documentation and implementation

Your model is now ready to guide the data import process in the next module.

Summary

This optional workshop provided hands-on practice with graph modelling tools. You created a visual representation of the Northwind graph model that you will implement in the following modules.

In the next module, you will use the Neo4j Data Importer to import the Northwind data into Neo4j.

Chatbot

How can I help you today?