Database Schema

Overview

This document provides comprehensive details about the database schema design for the Product Management module. The schema is implemented using MongoDB with Mongoose ODM, following document-oriented design principles with embedded sub-documents and strategic referencing for optimal performance.

Table of Contents

Schema Architecture

Document-Oriented Design

The product management schema leverages MongoDB's document-oriented nature for efficient data storage and retrieval:

  • Embedded Documents: Language versions and pricing information are embedded for atomic operations

  • Reference Strategy: Media files and large collections use references for flexibility

  • Denormalization: Strategic denormalization for performance optimization

  • Schema Validation: Mongoose schema validation ensures data integrity

Collections Overview

Product Schema

Main Product Document

File: common/module/product/product/repos/product.scheme.ts

Field Specifications

SKU (Stock Keeping Unit)

Business Rules:

  • Must be unique across all products within the tenant

  • Cannot be modified after product creation

  • Used for external system integration

  • Format: Uppercase letters, numbers, hyphens, underscores only

Language Versions

Structure:

Business Rules:

  • At least one language version is mandatory

  • Language codes must be valid ISO codes

  • Titles are required for each language version

  • Descriptions are optional but recommended

  • Maximum 10 language versions per product

Pricing Information

Tags Array

Tag Constraints:

  • Maximum 20 tags per product

  • Each tag must exist in the product-tag collection

  • Tags are case-insensitive for matching

  • Indexed for efficient filtering operations

Images Array

Image Constraints:

  • Maximum 10 images per product

  • References stored as ObjectIds to Media collection

  • Images are populated on query when needed

  • Automatic cleanup when images are deleted

Display Order

State History

Audit Trail Features:

  • Tracks all changes to product data

  • Includes user information and timestamps

  • Stores previous values for rollback capability

  • Used for compliance and debugging

Product Tag Schema

Tag Document Structure

File: common/module/product/tag/repos/product-tag.scheme.ts

Tag Validation Rules

Name Constraints

Business Rules:

  • Tag names must be unique within the tenant

  • Automatically converted to lowercase for consistency

  • Only alphanumeric characters, hyphens, underscores, and spaces allowed

  • Minimum 1 character, maximum 50 characters

  • Leading and trailing whitespace automatically trimmed

Tag Usage Tracking

Price Sub-Schema

Price Document Structure

File: common/module/product/product/repos/sub/product-price.scheme.ts

Currency Support

Price Validation

  • Value Range: 0 to 999,999.99 (adjustable based on business needs)

  • Precision: Two decimal places for monetary values

  • Currency Validation: Must be from supported currency enum

  • Change Tracking: Timestamps track when prices are modified

Indexing Strategy

Product Collection Indexes

Primary Indexes

Compound Indexes

Tag Collection Indexes

Index Performance Considerations

Query Patterns Optimized

  1. Product Lookup by SKU: O(1) lookup with unique index

  2. Tag Filtering: Efficient array index scanning

  3. Text Search: Full-text search across multiple language versions

  4. Sorting: Pre-sorted indexes for order and date fields

  5. Pagination: Efficient skip/limit operations

Index Maintenance

  • Selective Indexing: Only indexes that support actual query patterns

  • Index Monitoring: Regular analysis of index usage and performance

  • Compound Index Optimization: Left-prefix rule consideration

  • Memory Usage: Balance between query performance and memory consumption

Relationships and References

Product-Media Relationship

Reference Strategy

Media Document Structure

Product-Tag Relationship

Embedding Strategy

Benefits of This Approach

  • Performance: Fast filtering without joins

  • Simplicity: Direct array operations for tag management

  • Consistency: Tag names are normalized in Tag collection

  • Flexibility: Easy to add/remove tags from products

Multi-Tenant Relationships

Tenant Isolation

Data Validation

Schema-Level Validation

Built-in Validators

Custom Validators

Application-Level Validation

Business Rule Validation

Performance Optimization

Query Optimization Patterns

Efficient Product Queries

Pagination Optimization

Aggregation Pipelines

Product Statistics

Memory and Storage Optimization

Document Size Management

  • Embedded vs Referenced: Strategic choice based on access patterns

  • Field Selection: Use projection to limit transferred data

  • Archive Strategy: Move old products to archive collection

  • Image Optimization: Store only references, actual files in CDN

Connection Pooling

Multi-Tenancy Implementation

Tenant Isolation Strategy

Document-Level Isolation

Query Middleware

Tenant-Specific Indexes

Data Security

Access Control

  • Tenant Validation: Every operation validates tenant access

  • Data Isolation: Queries automatically scoped to tenant

  • Audit Logging: All operations logged with tenant context

  • Permission Checking: User permissions validated within tenant scope

Audit and State Management

State History Schema

StateHistory Sub-Document

Change Tracking Implementation

Automatic Change Detection

Compliance Features

Data Retention

  • Audit Trail: Complete history of all changes maintained

  • User Tracking: All modifications linked to specific users

  • Timestamp Accuracy: Precise timestamps for all operations

  • Reason Codes: Optional reason codes for changes

Privacy Compliance

  • Data Anonymization: Support for anonymizing user references

  • Right to Deletion: Compliance with data deletion requirements

  • Data Export: Support for exporting user-related data

  • Consent Tracking: Track consent for data processing

Backup and Recovery

Backup Strategy

Regular Backups

Point-in-Time Recovery

  • Oplog Archival: MongoDB oplog archival for point-in-time recovery

  • Snapshot Backups: Regular collection snapshots

  • Cross-Region Replication: Geographic distribution for disaster recovery

  • Testing: Regular backup restoration testing

Data Migration

Schema Evolution

This database schema documentation provides a complete reference for the data structure, relationships, and optimization strategies used in the Product Management module, ensuring efficient and scalable data management for the application.

Last updated

Was this helpful?