Database Schema
Complete database structure documentation for developers and DBAs
Database Overview
MaxChurches uses MySQL 8.0+ with utf8mb4 character set for full Unicode support. The database is designed with proper normalization and relationships to ensure data integrity and performance.
Database Engine
MySQL 8.0+Character Set
utf8mb4Storage Engine
InnoDBTables
50+
Database Design: The database follows Laravel conventions with proper foreign key relationships, indexes for performance, and soft deletes for data integrity.
Core Tables
The main database tables that power MaxChurches functionality.
Table Name | Purpose | Relationships |
---|---|---|
churches |
Church organization data | One-to-many with users, members |
users |
System user accounts | Belongs to church |
members |
Church member profiles | Belongs to church, has many attendance |
services |
Church service scheduling | Belongs to church, has many attendance |
attendance |
Attendance tracking | Belongs to member and service |
church_transactions |
Financial transactions | Belongs to member and money_type |
church_events |
Church events and activities | Belongs to church, has many registrations |
Database Relationships
Understanding the relationships between tables is crucial for effective querying and data integrity.
Primary Relationships
- Churches → Users: One church has many users
- Churches → Members: One church has many members
- Members → Attendance: One member has many attendance records
- Services → Attendance: One service has many attendance records
Foreign Key Constraints
- CASCADE on church deletion
- SET NULL on user deletion
- RESTRICT on referenced records
- Automatic cleanup of orphaned data
Performance Optimization
Database indexes and optimization techniques for better performance.
Note: All indexes are automatically created during migration. Manual optimization may be needed for large datasets.
Primary Indexes
idx_members_search
- Member name and email searchidx_attendance_date
- Attendance by dateidx_church_transactions_date
- Financial transactions by dateidx_church_events_date
- Events by date and status
Query Optimization
- Use proper WHERE clauses with indexed columns
- Limit result sets with LIMIT and pagination
- Avoid SELECT * in production queries
- Use JOINs instead of subqueries when possible
Download Database Schema
Download this database schema documentation as a PDF for offline reference.
Database Support
Need help with database optimization or custom queries? Our DBA team can assist you.