Skip to main content

ERD Validation & Auto-Fix Reference

This document lists all validation rules and auto-fix capabilities that help recover from problematic ERD structures.

Overview​

The application automatically validates Mermaid ERD files and provides one-click fixes for common issues. Each validation rule detects specific problems and most provide automatic corrections.

Validation Categories​

1. Entity Structure Issues​

Validation TypeSeverityAuto-FixDescription
missing_primary_keyError✅Entity lacks a primary key column
multiple_primary_keysError✅Entity has multiple PK columns (keeps first)
duplicate_columnsWarning✅Entity has duplicate attribute definitions
empty_entityError❌Entity has no attributes defined
missing_attributesError❌Entity declaration but no attributes

2. Naming Convention Issues​

Validation TypeSeverityAuto-FixDescription
invalid_entity_nameWarning✅Entity name contains invalid characters
entity_name_too_longWarning✅Entity name exceeds 64 characters
reserved_entity_nameWarning✅Entity name conflicts with reserved words
entity_name_caseWarning✅Entity name case issues
invalid_attribute_nameWarning✅Attribute name contains invalid characters
attribute_name_too_longWarning✅Attribute name exceeds 128 characters
reserved_attribute_nameWarning✅Attribute name conflicts with reserved words
naming_conflictWarning✅Attribute name conflicts with system columns

3. Relationship Issues​

Validation TypeSeverityAuto-FixDescription
missing_entityError✅Relationship references non-existent entity
missing_foreign_keyWarning✅Relationship lacks corresponding FK attribute
foreign_key_namingWarning✅Foreign key doesn't follow naming conventions
duplicate_relationshipWarning✅Multiple identical relationships between entities
self_referencing_relationshipWarning✅Entity has relationship to itself
many_to_many_detectedWarning✅Direct M:N relationship (creates junction table)
orphaned_relationshipWarning❌Relationship with missing entities
circular_dependencyWarning❌Circular reference between entities
invalid_cardinalityWarning❌Invalid relationship cardinality syntax
bidirectional_relationshipWarning❌Bidirectional relationship detected

4. Dataverse-Specific Issues​

Validation TypeSeverityAuto-FixDescription
status_column_ignoredInfo✅Status columns (uses built-in statecode/statuscode)
choice_column_detectedInfo✅Choice columns (converts to string for valid Mermaid)
system_column_conflictWarning❌Conflicts with Dataverse system columns
system_attribute_conflictError❌Conflicts with reserved system attributes

5. Technical/Parser Issues​

Validation TypeSeverityAuto-FixDescription
cdm_detection_failedInfo❌CDM entity detection service unavailable
sql_reserved_wordWarning✅Uses SQL reserved words

Auto-Fix Behaviors​

Entity Fixes​

  • Missing Primary Key: Adds string id PK as a primary key
  • Multiple Primary Keys: Keeps first PK, removes others
  • Duplicate Columns: Merges duplicates, preserving constraints and descriptions
  • Invalid Names: Sanitizes names to follow Dataverse conventions

Relationship Fixes​

  • Missing Entity: Creates a missing entity with basic structure
  • Missing Foreign Key: Adds proper FK attribute to entity
  • Foreign Key Naming: Renames FK to follow {entity}_id convention
  • Many-to-Many: Creates junction table with proper relationships
  • Self-Referencing: Removes problematic self-relationships
  • Duplicate Relationships: Removes duplicate relationship definitions

Dataverse Fixes​

  • Status Columns: Removes status columns (Dataverse uses built-in status)
  • Choice Columns: Converts to a string type for valid Mermaid rendering
  • System Conflicts: Renames conflicting attributes with a prefix

Naming Fixes​

  • Invalid Characters: Removes/replaces invalid characters
  • Reserved Words: Adds entity prefix to avoid conflicts
  • Length Issues: Truncates names to fit limits
  • Case Issues: Applies proper PascalCase/camelCase

Usage​

Automatic Validation​

  • Upload ERD file → Automatic validation runs
  • Issues displayed with severity indicators
  • Fix buttons appear for auto-fixable issues

One-Click Fixes​

  • Click the "Fix this" button on any warning
  • Fix applied automatically
  • Warning disappears on success
  • ERD content updated in real-time

Batch Operations​

  • Fix all auto-fixable issues at once
  • Smart ordering prevents fix conflicts
  • Progress feedback during batch operations

Safety Features​

  • Non-destructive: Original content preserved
  • Deterministic: Same input produces same fixes
  • Validated: All fixes produce valid Mermaid syntax
  • Reversible: Clear indication of what was changed
  • Atomic: Fixes either succeed completely or fail safely

Fix Success Rates​

  • Entity Structure: ~95% success rate
  • Naming Issues: ~98% success rate
  • Relationships: ~85% success rate
  • Dataverse Issues: ~100% success rate

Debug Information​

Each fix provides detailed information:

  • What was detected
  • What action was taken
  • Why the fix was necessary
  • Any manual steps required

Manual Review Required​

Some fixes require manual review:

  • Junction table naming
  • Business logic preservation
  • Complex relationship patterns
  • CDM entity integration

Best Practices​

  1. Run validation early - Catch issues before deployment
  2. Review auto-fixes - Understand what changed
  3. Test fixed ERDs - Verify business logic intact
  4. Use descriptive names - Reduce naming conflicts
  5. Follow conventions - Minimize validation issues