# Datenbank

# SQL-Abfragen für PostgreSQL

Mit dem SQL-Tool der Wahl lassen sich gemäß [Moodle Datenbankschema](https://kb.moodle-an-hochschulen.de//books/datenbank/page/moodle-datenbankschema "Moodle Datenbankschema") Abfragen gestalten.

## Konfiguration abfragen per SQL-Befehl

<div id="bkmrk-show-all%3B">`show all;`</div>## PGSQL-Version

<div id="bkmrk-select-version%28%29%3B">`SELECT version();`</div><div id="bkmrk--1"></div><div id="bkmrk--2"></div>## Datenbank-Größen abfragen

Gesamtgröße DB inkl. Index in Byte und GB:

```sql
SELECT 
  pg_size_pretty( pg_database_size( 'moodle-dbname' ) ) As human_size, 
  pg_database_size( 'moodle-dbname' ) As byte_size;
```

## Tabellengrößen aller Tabellen

\- aufgeschlüsselt nach verschiedenen Werten wie Gesamtgröße und Index:

```sql
SELECT *, pg_size_pretty(total_bytes) AS total,
    pg_size_pretty(index_bytes) AS INDEX,
    pg_size_pretty(toast_bytes) AS toast,
    pg_size_pretty(table_bytes) AS TABLE
  FROM (
  SELECT *, total_bytes-index_bytes-COALESCE(toast_bytes,0) AS table_bytes FROM (
      SELECT c.oid,nspname AS table_schema, relname AS TABLE_NAME,
              c.reltuples AS row_estimate,
              pg_total_relation_size(c.oid) AS total_bytes,
              pg_indexes_size(c.oid) AS index_bytes,
              pg_total_relation_size(reltoastrelid) AS toast_bytes,
          FROM pg_class c
          LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
          WHERE relkind = 'r'
  ) a
) a;
```

## Die 20 größten Tabellen anzeigen, inkl. Indexes und toasted data

```sql
SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
 FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
  ORDER BY pg_total_relation_size(C.oid) DESC
  LIMIT 20;
```

## Tabellengrößen Übersicht

```sql
SELECT pg_size_pretty( pg_total_relation_size('tablename') );
```

**HeidiSQL** (in GB inkl. Index): Tabellenübericht

**Pgadmin** (in MB, Tabelle / Index separat): links in Navigation unter "tables" die Tabelle auswählen, dann oben Tab "Statistics"

## Weiterführende Links

[https://docs.moodle.org/en/Custom\_SQL\_queries\_report](https://docs.moodle.org/en/Custom_SQL_queries_report)

[https://docs.moodle.org/en/ad-hoc\_contributed\_reports](https://docs.moodle.org/en/ad-hoc_contributed_reports)

[https://moodle.org/plugins/block\_configurable\_reports](https://moodle.org/plugins/block_configurable_reports)

[https://docs.moodle.org/en/Report\_builder](https://docs.moodle.org/en/Report_builder)

---

Autor: [Klaus Steitz](https://forum.moodle-an-hochschulen.de/user/view.php?id=44 "Profil von Klaus Steitz"), Technische Universität Darmstadt

# Moodle Datenbankschema

Die Relationen (Entity Relationship Model, kurz: ER bzw. ERD für Entity Relationship Diagram) der Moodle-DB   
gibt es unter [https://moodledev.io/docs/5.1/apis/core/dml/database-schema.](https://moodledev.io/docs/5.1/apis/core/dml/database-schema)

Dort wird auf eine generierte Ansicht der Datenbanktabellen mit ihren Eigenschaften und Beziehungen verlinkt.

<p class="callout info">Datenbankschema für Moodle 4.5: [https://www.examulator.com/er/4.5](https://www.examulator.com/er/4.5/)  
</p>

## Datenbank-Relationen für Tabelle "assign\_submission"

Exemplarisch für die Darstellung aus obigem Datenbank-Tool die Darstellung der Relationen für die Tabelle "assign\_submission":

[![Moodle-DB-Schema-assign_submission](https://kb.moodle-an-hochschulen.de//uploads/images/gallery/2025-09/scaled-1680-/moodle-db-schema-assign-submission.png)](https://kb.moodle-an-hochschulen.de//uploads/images/gallery/2025-09/moodle-db-schema-assign-submission.png)

---

Autor: Klaus Steitz, Technische Universität Darmstadt

# Aufräumskripte

## Tests mit fehlenden Fragen-Referenzen (Fragen / Zufallsfragen)

- Tests mit fehlenden Fragen-Referenzen (Fragen / Zufallsfragen) aus der Datenbank filtern
- Prüft ob Sections (= Überschriften im Test) vorliegen
- Fehlerhafte Referenzen löschen
- Sortierung der Fragen innerhalb des Tests anpassen

Skript verfügbar unter: [https://github.com/artcodix/Moodle-QuizSlot-Cleaner](https://github.com/artcodix/Moodle-QuizSlot-Cleaner)

Quelle: [https://moodle.hu-berlin.de/mod/forum/discuss.php?d=1123735](https://moodle.hu-berlin.de/mod/forum/discuss.php?d=1123735)

---

Autor: [Julien Breunig (Universität Hamburg)](https://forum.moodle-an-hochschulen.de/user/view.php?id=47&course=28)