How to Design a Database for 3D Printing Requests and Jobs
Question details
The user needs a structured relational database schema to effectively track 3D printing requests, parts, print jobs, materials, and production workflows.

- Product
- Database
- Device & OS
- not provided
- Scenario
- Setting up a management system to track 3D printing workflows where multiple parts make up a request, and parts from different requests can be combined into a single print job.
- Observed behavior
- Requires an optimized architecture linking requesters, requests, printable parts, and print jobs without duplicating data.
Before structuring your database, list all the specific materials you stock and clearly define your production workflow stages (e.g., Requested, Added to Print Job, Printed, Completed).
Create a Relational Database Schema for 3D Printing
Design separate, linked tables to properly handle the many-to-many relationship between user requests and batch print jobs.
To handle complex scenarios where a single request contains multiple parts, and one print job contains parts from multiple requests, you need a normalized relational schema.
Set up a dedicated 'Requesters' table with unique IDs, names, and contact info. Do not use free-text name fields in the requests table, as this leads to inconsistent and duplicate entries.
Create a 'Requests' table linked to the Requester ID. Generate a formatted request number using the year and a sequence (e.g., '23-00001') to uniquely identify each order.
Create a 'RequestedParts' table containing a Request-Part ID, Request ID, part description, design file link for the printer operator, and the requested quantity.
Set up a 'PrintJobs' table to track active printer runs. Include a Print-Job ID, the specific printer assigned, start time, and overall machine status.
Create an intermediate 'PrintedParts' table that links the Print-Job ID to the Requested-Part ID. Track the completed quantity, materials used, and the part's status (Requested, Added to Print Job, Printed, Completed).

Track 3D Print Jobs Using a Multi-Sheet Workbook
If you do not have a dedicated SQL database, you can implement this relational structure using linked sheets in a spreadsheet program.
Build Your 3D Printing Database with WPS Spreadsheet
WPS Spreadsheet is a powerful, free tool to create relational trackers, manage 3D printing inventories, and monitor print jobs without complex SQL database setups.
- 1. Open WPS Spreadsheet: Launch WPS Office and open a new Blank Spreadsheet to serve as your database.
- 2. Create Database Tables as Tabs: Add new worksheet tabs at the bottom and name them Requesters, Requests, Requested Parts, and Print Jobs.
- 3. Define Database Columns: In each tab, set up your column headers (e.g., Request ID, Part Link, Material, Quantity, Status) in the first row.
- 4. Link Data Between Sheets: Use the VLOOKUP function to automatically pull requester information into your active Print Jobs sheet to avoid manual data entry.

Frequently Asked Questions
Why do I need a separate table for Requesters instead of typing their names?
Using a dedicated Requesters table prevents data entry errors, avoids duplicate names with slight spelling variations, and ensures consistency when tracking multiple requests from the same person.
How should I format request numbers in the database?
A common and effective method is combining the current year with a sequence number, such as '23-00001' or '23-XXXXX'. This allows for easy sorting and chronological tracking without needing a complex formatting system.
How do I handle parts from different requests being printed together?
By creating an intermediate 'PrintedParts' table, you can map multiple requested parts to a single Print Job ID. This supports a many-to-many relationship, allowing efficient batch printing of mixed requests on the same print bed.
What workflow statuses should I include in my database?
A typical 3D printing workflow should include distinct operational statuses like 'Requested', 'Added to Print Job', 'Printed', and 'Completed' to accurately track the lifecycle of each part.




