For the complete documentation index, see llms.txt. This page is also available as Markdown.

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?