Skip to content

Example 22 aql diagram tool

github-actions[bot] edited this page Aug 31, 2026 · 2 revisions

Build: cmake --preset linux-ninja-release && cmake --build --preset linux-ninja-release

ThemisDB AQL Diagram Tool

πŸ“ Übersicht

Ein leistungsstarkes C# .NET-Tool zur Generierung von Entity-Relationship-Diagrammen (ERD), Datenflussdiagrammen (DFD) und AQL-Query-Vorlagen fΓΌr ThemisDB. Dieses Tool erleichtert das VerstΓ€ndnis von Datenbankstrukturen und hilft bei der Erstellung komplexer AQL-Abfragen.

✨ Features

  • βœ… ERD-Generierung - Entity-Relationship-Diagramme aus JSON-Schemas
  • βœ… DFD-Generierung - Datenflussdiagramme fΓΌr AQL-Queries
  • βœ… AQL-Query-Vorlagen - Automatische Generierung von CRUD-, Join- und Aggregations-Queries
  • βœ… Mermaid-Format - Ausgabe in Mermaid-Syntax fΓΌr einfache Visualisierung
  • βœ… Beispiel-Schemas - Vordefinierte Beispiele (Todo, Blog, E-Commerce)
  • βœ… CLI-Interface - Einfache Kommandozeilen-Bedienung
  • βœ… JSON-Schema-Parser - Flexible Schema-Definition ΓΌber JSON

πŸš€ Schnellstart

Voraussetzungen

  • .NET 8.0 SDK oder hΓΆher
  • Optional: Mermaid-Viewer (z.B. VS Code Plugin, GitHub, etc.)

Installation

cd examples/22_aql_diagram_tool/ThemisDB.AqlDiagramTool
dotnet build

Beispiel-Nutzung

1. Beispiel-Schema generieren

dotnet run example todo

Dies erstellt example_todo_schema.json mit einer Todo-App-Schema.

2. ERD generieren

dotnet run erd example_todo_schema.json todo_erd.md

3. AQL-Queries generieren

dotnet run aql example_todo_schema.json todo_queries.md

4. DFD generieren

dotnet run dfd example_todo_schema.json todo_dfd.md

πŸ“Š Ausgabeformate

Entity-Relationship Diagram (ERD)

Generiert ein ERD in Mermaid-Syntax, das EntitΓ€ten, Attribute und Beziehungen visualisiert:

erDiagram
    users {
        string _key PK NOT NULL
        string username NOT NULL
        string email NOT NULL
    }
    posts {
        string _key PK NOT NULL
        string title NOT NULL
        string author_id NOT NULL
    }
    users ||--o{ posts : "writes"
Loading

Data Flow Diagram (DFD)

Zeigt den Datenfluss zwischen Collections und AQL-Queries:

flowchart TD
    DS_users[("users")]
    DS_posts[("posts")]
    P1("Query 1")
    DS_users --> P1
    DS_posts --> P1
Loading

AQL Query Templates

Generiert vollstΓ€ndige, einsatzbereite AQL-Queries:

// Get all users
FOR doc IN users
    RETURN doc

// Join users with posts
FOR user IN users
    FOR post IN posts
        FILTER post.author_id == user._key
        RETURN { user, post }

πŸ“– Kommandos

example [type]

Generiert vordefinierte Beispiel-Schemas:

  • todo - Einfache Todo-Anwendung
  • blog - Blog-System mit Posts und Kommentaren
  • ecommerce - E-Commerce-Produktkatalog
dotnet run example blog

erd <schema-file> [output-file]

Generiert Entity-Relationship-Diagramm:

dotnet run erd my_schema.json my_erd.md

dfd <schema-file> [output-file]

Generiert Data Flow Diagram:

dotnet run dfd my_schema.json my_dfd.md

aql <schema-file> [output-file]

Generiert AQL Query Templates:

dotnet run aql my_schema.json my_queries.md

πŸ“ JSON-Schema-Format

Das Tool verwendet ein einfaches JSON-Format fΓΌr Schema-Definitionen:

{
  "name": "MyDatabase",
  "description": "My database schema",
  "entities": [
    {
      "name": "users",
      "description": "User accounts",
      "type": "collection",
      "attributes": [
        {
          "name": "_key",
          "type": "string",
          "isKey": true,
          "required": true
        },
        {
          "name": "username",
          "type": "string",
          "required": true,
          "unique": true
        },
        {
          "name": "email",
          "type": "string",
          "required": true
        }
      ]
    }
  ],
  "relationships": [
    {
      "name": "writes",
      "from": "users",
      "to": "posts",
      "type": "one-to-many",
      "foreignKey": "author_id"
    }
  ]
}

Entity-Typen

  • collection - Standard-Collection
  • edgecollection - Edge-Collection fΓΌr Graphen
  • view - View
  • index - Index

Relationship-Typen

  • one-to-one oder 1:1
  • one-to-many oder 1:n
  • many-to-one oder n:1
  • many-to-many oder n:m

🎯 AnwendungsfÀlle

1. Datenbankdesign

Visualisiere dein Schema vor der Implementierung:

# Erstelle Schema-JSON
dotnet run example ecommerce

# Generiere ERD
dotnet run erd example_ecommerce_schema.json

# Überprüfe Beziehungen

2. AQL-Query-Entwicklung

Generiere Basis-Queries als Ausgangspunkt:

# Generiere Query-Templates
dotnet run aql my_schema.json queries.md

# Passe generierte Queries an deine BedΓΌrfnisse an

3. Dokumentation

Erstelle automatisch Diagramme fΓΌr deine Dokumentation:

# Generiere alle Diagramme
dotnet run erd schema.json docs/erd.md
dotnet run dfd schema.json docs/dfd.md
dotnet run aql schema.json docs/queries.md

4. Code-Review

Visualisiere Schema-Γ„nderungen fΓΌr Pull Requests:

# Vor der Γ„nderung
dotnet run erd old_schema.json old_erd.md

# Nach der Γ„nderung
dotnet run erd new_schema.json new_erd.md

# Vergleiche die Diagramme

πŸ“š Weitere Dokumentation

πŸ”— Verwandte Beispiele

πŸ› οΈ Entwicklung

Projektstruktur

ThemisDB.AqlDiagramTool/
β”œβ”€β”€ Models/              # Datenmodelle (Entity, Relationship, etc.)
β”œβ”€β”€ Generators/          # Diagramm-Generatoren (Mermaid)
β”œβ”€β”€ Parsers/            # JSON-Schema-Parser
└── Program.cs          # CLI-Interface

Erweiterungen

Das Tool ist erweiterbar fΓΌr:

  • Weitere Ausgabeformate (PlantUML, GraphViz)
  • Direkte Verbindung zu ThemisDB
  • Schema-Inferenz aus existierenden Collections
  • Interaktive Schema-Editoren

πŸ“„ Lizenz

Copyright (c) 2025 ThemisDB. Alle Rechte vorbehalten.

πŸ™‹ Hilfe

Bei Problemen oder Fragen:

dotnet run help

Oder siehe die vollstΓ€ndige Dokumentation.


ThemisDB 1.9.0-beta Β· Home Β· Module-Index Β· GitHub Β· Issues

ThemisDB Wiki

🏠 Overview

πŸš€ Getting Started

πŸ“– Tutorials

πŸ“— User Guide

βš™οΈ Operations & Security

πŸ“Ÿ Ops Runbooks

πŸ—οΈ Architecture

πŸ“ ADRs

πŸ”§ Contributing

πŸ“‹ Governance

πŸ” Audit

🧩 Plugins

πŸ”Œ Adapters

πŸ’‘ Examples

πŸ“¦ Client SDKs

πŸŽ“ Training

πŸ› οΈ Tools

πŸ€– Developer LLM Wiki

Clone this wiki locally