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:
-
Creating a visual graph model
-
Documenting your node labels and properties
-
Defining relationships and their properties
-
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:
-
Log in to Neo4j Aura
-
Open your AuraDB instance
-
Click Import in the left sidebar
-
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
-
Log in to Neo4j Aura
-
Open your AuraDB instance
-
Click Import in the left sidebar
Step 2: Upload Your Data Files
-
In the Files panel on the left, click Browse or drag and drop your CSV files
-
The Northwind CSV files are available at: Northwind CSV files
-
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
-
Click the Add node label button on the canvas
-
Enter a label name such as
Customer -
In the Definition panel, select the corresponding CSV file
-
Click Map from file to map CSV columns to node properties
-
Select the columns you want to import and click Confirm
Step 4: Set the Unique Identifier
-
In the properties list, find the ID property such as
customerID -
Click the key icon next to it to set it as the unique identifier
-
This creates a constraint and index for efficient lookups
Step 5: Create a Relationship
-
Hover over the edge of a source node until you see the + icon
-
Drag from the source node to the target node
-
Enter the relationship type such as
PLACED -
Map the From and To IDs using the CSV columns
-
Optionally add relationship properties from the CSV
Step 6: Run the Import
-
Once your model is complete, click Run import
-
The Data Importer will create nodes and relationships in your database
-
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
-
Navigate to https://arrows.app
-
You will see a blank canvas for creating your model
Step 2: Create Your First Node
-
Click anywhere on the canvas to create a node
-
Double-click the node to edit its label
-
Enter
Customeras the label
Exercise 1: Create the Core Nodes
Create nodes for each of the main entities in the Northwind database:
-
Customernode -
Ordernode -
Productnode -
Categorynode -
Suppliernode -
Employeenode -
Shippernode
Arrange them on the canvas in a way that makes logical sense. A suggested layout:
-
Place
Customeron the left -
Place
Orderin the center -
Place
Producton the right -
Place
EmployeeaboveOrder -
Place
CategoryandSuppliernearProduct -
Place
ShipperbelowOrder
Exercise 2: Add Node Properties
For each node, add the main properties. In Arrows.app:
-
Select a node
-
Use the properties panel to add properties
-
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:
-
Click on the source node
-
Drag to the target node to create a relationship
-
Double-click the relationship to set its type
Customer to Order
Create a relationship from Customer to Order:
-
Click on
Customer -
Drag to
Order -
Set the relationship type to
PLACED
Employee to Order
-
Create
PROCESSEDrelationship fromEmployeetoOrder
Order to Shipper
-
Create
SHIPPED_BYrelationship fromOrdertoShipper
Order to Product
-
Create
CONTAINSrelationship fromOrdertoProduct -
Add properties:
quantity,unitPrice,discount
Product Relationships
-
Create
IN_CATEGORYrelationship fromProducttoCategory -
Create
SUPPLIESrelationship fromSuppliertoProduct
Employee Hierarchy
-
Create
REPORTS_TOrelationship fromEmployeetoEmployee, 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
-
Click the menu icon (three lines)
-
Select Export
-
Choose PNG or SVG for documentation
Export as Cypher
-
Click Export
-
Choose Cypher to generate CREATE statements
-
This gives you a starting point for creating your schema
Export as JSON
-
Click Export
-
Choose JSON to save your model
-
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:
-
Add a
Territorynode -
Add a
Regionnode -
Create
ASSIGNED_TOrelationship fromEmployeetoTerritory -
Create
IN_REGIONrelationship fromTerritorytoRegion
Model Order Details as Nodes
Instead of the CONTAINS relationship, try modelling OrderDetail as a node:
-
Create an
OrderDetailnode -
Create
HAS_DETAILfromOrdertoOrderDetail -
Create
FOR_PRODUCTfromOrderDetailtoProduct
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.