Database Schema & Data Model
This document provides a comprehensive overview of DeelRxCRMβs database schema, including entity relationships, constraints, and data flow patterns.Architecture Overview
Database Technology
- ORM: Prisma 5.0 with PostgreSQL 16
- Provider: Neon serverless PostgreSQL (production) / Local PostgreSQL (development)
- Connection: Pooled connections via PgBouncer for optimal performance
- Schema: Multi-tenant design with team-based data isolation
Design Principles
- Multi-tenancy: All data scoped to teams/organizations
- Audit trails: Comprehensive logging of changes and access
- Referential integrity: Foreign key constraints and cascade rules
- Performance optimization: Strategic indexing and query optimization
- Data validation: Server-side validation with Zod schemas
Core Entities
Authentication & Multi-tenancy
User
Primary entity for authentication and user management- One-to-many with TeamMembership (user can be in multiple teams)
- One-to-many with Customer (users create customers)
- One-to-many with Order (users create orders)
- One-to-many with UserAlias (email aliases for privacy)
clerkId(unique) - Fast lookup from Clerk authenticationemail(unique) - Email-based user lookup- Composite index on
(firstName, lastName)- Name-based searches
Team
Organization/tenant entity for multi-tenancy- All business data (customers, products, orders) scoped to teams
- Team isolation enforced at database level with foreign keys
- Row-level security via application-level filtering
- Team ownership tracked for all entities
TeamMembership
User-to-team relationship with role-based access- OWNER: Full system access including team management
- ADMIN: Full operational access, read-only settings
- MANAGER: Customer/order/payment access, read-only reports
- MEMBER: Read-only access to assigned data
Core CRM Entities
Customer
Primary customer relationship management entity- Basic Info: Name, contact details, date of birth
- Address: JSON field with structured address data
- Lifecycle: Active/inactive status with audit trail
- Relationships: Orders, loyalty programs, referrals
Product
Product catalog with inventory management- Stock Tracking: Real-time quantity management
- Low Stock Alerts: Configurable thresholds
- Cost Management: Purchase cost for profit calculations
- Categorization: Product organization and reporting
Order
Order management with lifecycle tracking- PENDING: Order created, awaiting confirmation
- CONFIRMED: Customer confirmed order details
- PROCESSING: Order being prepared for shipment
- SHIPPED: Order sent to customer
- DELIVERED: Successful delivery confirmation
- CANCELLED: Order cancelled (refund if applicable)
Payment
Payment processing and reconciliation- Manual Reconciliation: Zero-fee processing for cash, checks, digital wallets
- Future Card Processing: Stripe integration planned
- Idempotency: Prevents duplicate payments
- Audit Trail: Complete transaction history
Extended Operations (Phase 2 Features)
Inventory Management
InventoryAdjustment
Stock level changes with audit trail- Automatic Calculations: New quantity computed from adjustments
- Reason Codes: Standardized reasons for adjustments
- Audit Trail: Complete history of stock changes
- Low Stock Alerts: Triggered when quantity falls below threshold
Customer Referrals
CustomerReferral
Referral program management- Reward Tracking: Points/rewards for successful referrals
- Conversion Tracking: Links referrals to actual customers
- Expiration: Time-limited referral validity
- Analytics: Referral performance metrics
Delivery Management
Delivery
Order delivery tracking- Multiple Methods: Pickup, local delivery, shipping
- Status Tracking: Complete delivery lifecycle
- Address Management: Structured address data
- Integration Ready: Prepared for shipping provider APIs
Loyalty Program System
LoyaltyProgram
Points-based customer retentionLoyaltyAccount
Customer loyalty program participationLoyaltyEvent
Individual loyalty point transactionsPrivacy & Security Systems
Email Alias Management (SimpleLogin)
UserAlias
Email alias system for privacy protection- Privacy Protection: Hide real email addresses
- Shadow Aliases: Pre-signup aliases for privacy
- Alias Management: Enable/disable/delete as needed
- Forwarding: All alias emails forwarded to real email
Email Event Tracking (Resend)
EmailEvent
Email delivery and engagement tracking- Delivery Events: Track email delivery status
- Engagement: Monitor opens, clicks, bounces
- Provider Integration: Works with Resend webhooks
- Privacy Compliant: No PII in event tracking
Database Relationships
Entity Relationship Diagram (ERD)
Relationship Cardinality
| Relationship | Type | Description |
|---|---|---|
| User β TeamMembership | 1:many | User can be in multiple teams |
| Team β TeamMembership | 1:many | Team has multiple members |
| Team β Customer | 1:many | Team has many customers |
| Customer β Order | 1:many | Customer has many orders |
| Order β OrderItem | 1:many | Order has many items |
| Product β OrderItem | 1:many | Product can be in many orders |
| Order β Payment | 1:many | Order can have multiple payments |
| Order β Delivery | 1:1 | Order has one delivery |
| Customer β LoyaltyAccount | 1:many | Customer can have multiple loyalty accounts |
| LoyaltyProgram β LoyaltyAccount | 1:many | Program has many accounts |
Performance Optimization
Indexing Strategy
Primary Indexes:- All
@idfields automatically indexed - All
@uniquefields automatically indexed - Foreign key fields automatically indexed
@@index([teamId])- Team-scoped queries@@index([createdById])- User activity queries@@index([email])- Customer lookup by email@@index([orderNumber])- Order lookup by number- Composite indexes for common query patterns
Query Optimization
Team Scoping:- Customer search by name/email/phone
- Order filtering by status and date range
- Product inventory level checks
- Payment reconciliation queries
- Loyalty program participation tracking
Data Validation & Constraints
Database-Level Constraints
- Foreign Key Constraints: Prevent orphaned records
- Unique Constraints: Prevent duplicate data
- Check Constraints: Enforce business rules
- Not Null Constraints: Required field validation
Application-Level Validation
- Zod Schemas: Runtime type validation
- Prisma Middleware: Cross-cutting concerns
- Business Logic: Complex validation rules
Data Integrity Checks
- Referential Integrity: All relationships validated
- Audit Trails: All changes logged and tracked
- Data Consistency: Regular integrity checks
- Backup Validation: Restore testing procedures
Migration Strategy
Schema Evolution
- Prisma Migrations: Version-controlled schema changes
- Backward Compatibility: Support for data migration
- Zero Downtime: Careful migration planning
- Rollback Support: Migration reversal capabilities
Data Migration Examples
Security Considerations
Data Access Patterns
- Row-Level Security: Team-based data isolation
- Role-Based Access: Permission-based data access
- Audit Logging: All data access tracked
- Encryption: Sensitive data encrypted at rest
Privacy Protection
- Email Aliases: Hide real email addresses
- Data Minimization: Only collect necessary data
- Consent Management: Track user consent
- Right to Erasure: Support for data deletion
Monitoring & Analytics
Performance Metrics
- Query execution times
- Connection pool utilization
- Index usage statistics
- Slow query identification
Business Metrics
- Customer acquisition rates
- Order conversion rates
- Payment reconciliation status
- Inventory turnover rates
System Health
- Database connection health
- Query performance trends
- Data consistency checks
- Backup verification status
This schema documentation is automatically updated with each database migration. Last updated: September 2025