A database is not just a place where software stores information.
It is the structure behind the system.
When the database is designed well, the software feels organized, reliable, and easier to grow. Reports make sense. Permissions are clearer. Workflows are easier to manage. Future features are easier to add.
When the database is designed poorly, the software becomes fragile. Data is duplicated. Reports are unreliable. Features become harder to build. Small changes create unexpected problems.
For custom business software, database design is one of the most important technical decisions.
What Is Database Design?
Database design is the process of planning how software stores, organizes, connects, and retrieves data.
It defines:
- What data the system needs
- How records relate to each other
- Which fields are required
- How users access information
- How reports are generated
- How data stays accurate
- How the system can grow over time
Good database design makes the software easier to use, maintain, and improve.
Why Database Design Matters for Business Software
Custom software is usually built around real business workflows.
That means the database often needs to represent customers, users, requests, projects, payments, files, reports, approvals, statuses, and activity history.
If that structure is unclear, the software becomes harder to trust.
Good database design supports:
- Accurate reporting
- Faster dashboards
- Clear user permissions
- Easier search and filtering
- Better workflow tracking
- Fewer data errors
- Easier future development
- Better long-term maintenance
The interface is what users see.
The database is what keeps the system stable underneath.
1. Start With the Business Workflow
Database design should begin with the business process, not the table structure.
Before creating records, understand how the business works.
Ask:
- What process is the software supporting?
- Who uses the system?
- What information do they create?
- What information do they update?
- What statuses are needed?
- What reports are required?
- What approvals happen?
- What records need history?
The database should reflect the real workflow.
2. Identify the Main Entities
Entities are the main types of records in the system.
For business software, common entities include:
- Users
- Clients
- Projects
- Tasks
- Requests
- Files
- Payments
- Comments
- Notifications
- Reports
- Teams
- Roles
Each entity becomes part of the data model.
For example, a client portal may include clients, users, requests, files, messages, and status updates.
3. Define Relationships
Most records are connected.
Examples:
- A client can have many projects.
- A project can have many tasks.
- A task can have many comments.
- A user can belong to a team.
- A request can have many files.
- A payment belongs to an invoice.
These relationships should be planned carefully.
Good relationships make the system easier to query, report on, and maintain.
4. Avoid Duplicate Data
Duplicate data creates confusion.
If the same information is stored in multiple places, it can become inconsistent.
For example, if a client email is stored separately in five different tables, one update may not reach every place.
Good database design reduces unnecessary duplication.
This helps keep data accurate and easier to maintain.
5. Use Clear Statuses
Business software often depends on statuses.
Statuses help users understand where something is in the workflow.
Examples:
- New
- In review
- In progress
- Waiting for client
- Approved
- Completed
- Cancelled
Statuses should be consistent and meaningful.
Too many statuses can confuse users. Too few can hide important workflow details.
6. Plan User Roles and Permissions
Database design must support access control.
Different users may need different access.
Examples:
- Admin can view and manage everything.
- Manager can view team reports.
- Staff can update assigned tasks.
- Client can view only their own requests.
- Viewer can read but not edit.
Permissions should be planned early because they affect the data model, API, and interface.
For client portals and SaaS products, permission design is especially important.
7. Plan for Reporting
Many businesses build custom software because they need better reporting.
Reports depend on good data structure.
Before building, define the questions the business needs to answer.
Examples:
- How many requests are open?
- Which projects are delayed?
- Which staff members are overloaded?
- What revenue came in this month?
- Which clients have pending approvals?
- How many tasks were completed last week?
If reporting needs are known early, the database can be designed to support them.
8. Use Audit History Where Needed
Some systems need to track changes over time.
Audit history may record:
- Who changed a record
- What changed
- When it changed
- Previous value
- New value
- Related action
This is useful for approvals, financial records, client requests, sensitive data, and admin activity.
Not every system needs detailed audit logs, but important workflows often do.
9. Plan Search and Filtering
Users often need to find records quickly.
Search and filtering may depend on:
- Client name
- Status
- Date range
- Assigned staff
- Project type
- Priority
- Payment status
- Category
- Region
If search and filters are important, the database should be structured and indexed properly.
A system that stores data but makes it hard to find is not useful enough.
10. Consider Performance Early
Performance problems often appear when data grows.
A dashboard may work fine with 100 records but become slow with 100,000 records.
Performance planning may include:
- Indexes
- Pagination
- Query optimization
- Caching
- Archive strategy
- Background jobs
- Reporting tables
- Efficient relationships
The goal is not to over-optimize early.
The goal is to avoid obvious future problems.
11. Think About Data Validation
Data should be clean.
Validation helps prevent incomplete, incorrect, or unsafe data from entering the system.
Examples:
- Email must be valid.
- Required fields cannot be empty.
- Date must be in a valid format.
- Status must match allowed values.
- File size must stay within limits.
- User cannot access another client’s data.
Validation should happen in the interface and backend.
The database should support data integrity as well.
12. Plan File Storage Separately
Files are often better stored outside the main database.
The database usually stores file information, while the actual file is stored in a file storage system.
File records may include:
- File name
- File type
- File size
- Upload date
- Uploaded by
- Related project or request
- Access permissions
- Storage URL
This keeps the system more manageable.
13. Data Migration
If the business already uses spreadsheets or old software, data may need to be imported.
Data migration should be planned early.
Consider:
- What data needs to move?
- Is the old data clean?
- Are fields consistent?
- Are duplicates present?
- What format is available?
- What should be archived?
- What should be ignored?
Data migration can become time-consuming if the source data is messy.
14. Backup and Recovery
Business software should have a backup plan.
A database may contain important operational, customer, or financial information.
Backup planning should include:
- Backup frequency
- Backup storage
- Restore process
- Access control
- Retention period
- Testing restore ability
A backup is only useful if it can be restored when needed.
15. Security and Privacy
Database security is essential.
Important areas include:
- Access control
- Secure credentials
- Encryption where needed
- Data minimization
- Backup security
- Audit logs
- Sensitive data handling
- GDPR-aware design for EU users
Security should be part of the database design, not added after launch.
Simple Database Design Example
For a client portal, the database may include:
- Users
- Clients
- Projects
- Requests
- Files
- Comments
- Status updates
- Notifications
Relationships may include:
- One client has many users.
- One client has many projects.
- One project has many requests.
- One request has many files.
- One request has many comments.
- One user can create many comments.
This structure supports client access, file sharing, project updates, and request tracking.
Custom Database Design: What It Costs, and Why It Is Priced Separately
Custom database design rarely appears as a line item, which makes it feel free. It is not. It is either done deliberately at the start, or absorbed into development later — when changing a structure means migrating live data.
Standalone database design work is usually priced in three bands:
| What you are getting | Typical cost | When it makes sense |
|---|---|---|
| Schema design for one application | $1,500 – $4,000 | New build, screens roughly known |
| Schema plus migration from spreadsheets or a legacy system | $3,000 – $8,000 | Replacing existing tooling, history to preserve |
| Multi-tenant or multi-system architecture with a reporting layer | $6,000 – $20,000+ | SaaS products, platforms, ERP replacements |
Two factors dominate the price:
- Migration. Moving a decade of spreadsheets into a normalised schema means deciding what to do with duplicates, missing references and inconsistent formatting — and then deciding again when you find the third date format.
- Reporting requirements. A structure that only has to store data is straightforward. One that has to answer "revenue by region by month for the last three years, live" needs a different shape, and usually an indexing strategy to go with it.
Be sceptical of any project where the data structure gets decided in week one by whoever happens to be free. That is how systems reach their third year with a table called data_old_final2.
Common Database Design Mistakes
Avoid these mistakes:
- Starting without understanding the workflow
- Storing duplicate data everywhere
- Ignoring user roles
- Not planning reports
- Using unclear statuses
- Forgetting audit history
- Not validating data
- Designing only for current record volume
- Ignoring search and filters
- Treating files like normal text records
- Not planning backups
These mistakes can make the software harder to maintain later.
Database Design Checklist
Before building custom software, ask:
- What are the main entities?
- How do records relate to each other?
- What fields are required?
- What statuses are needed?
- What user roles exist?
- What permissions are required?
- What reports are needed?
- What data needs search and filtering?
- Is audit history needed?
- Will files be uploaded?
- Is data migration required?
- What security rules apply?
- What backup plan is needed?
Clear answers create a stronger technical foundation.
How KEHEM IT Plans Database Design
KEHEM IT designs custom software around the business workflow first.
We look at users, data, permissions, reports, dashboards, files, integrations, and future growth before development begins. This helps create software that feels clear on the surface and stable underneath.
Good database design is invisible when it works well.
The system simply feels reliable.
Frequently Asked Questions
What is custom database design?
It is the process of defining how one specific business's information will be stored: the tables, the fields, how records relate, what rules are enforced, who can see what, and how it all performs as data grows. It is custom because the structure follows your workflow rather than a generic template's assumptions about it.
How much does custom database design cost?
For a single application, typically $1,500 to $4,000 as a standalone piece of work. Adding migration from spreadsheets or a legacy system usually doubles the range, because the work shifts from designing a clean structure to reconciling a messy one.
Can you redesign an existing database without losing data?
Yes, with a migration plan rather than one risky switch. The reliable pattern: build the new structure alongside the old, write a one-way transformation, verify counts and totals against the original, run both in parallel for a period, then cut over. It takes longer than a direct swap and it is the only version that survives contact with a finance team.
How many tables should a custom system have?
There is no target number, and anyone quoting one is guessing. A focused internal tool may need twelve; a multi-tenant platform may need a hundred. The measure is whether each table has one clear job and whether the relationships match how the business actually works.
Should we stay on spreadsheets instead?
Sometimes yes — if the data is small, edited by one person, and rarely shared, a spreadsheet is genuinely the right tool. The moment you need several people editing at once, real permissions, an audit trail, or reporting that behaves consistently, you have outgrown it. Our guide on when to replace spreadsheets with custom software covers where that line falls.
Final Thoughts
Database design shapes the long-term quality of custom software.
It affects reporting, permissions, performance, security, maintenance, and future development.
A polished interface may impress users at first, but a strong database keeps the system useful over time.
If your business is building custom software, do not treat the database as an afterthought.
It is the foundation the system will stand on.
Related reading: PostgreSQL vs MySQL is the engine decision that sits above this one; database indexing and query optimisation is how the design performs under load; and multi-tenant SaaS architecture covers the tenancy model if you are building a product. Build Reliable Custom Software
Have a project in mind?
KEHEM designs and builds thoughtful websites, SaaS products, and business systems.