# Allgemeine Konventionen für zukünftige Datenbankstrukturen

Wenn Sie ein neues Plugin oder eine Funktion starten, die Änderungen an der Datenbank erfordert, und obwohl Sie die meisten dieser Informationen in den Codierungskonventionen finden (nächster Abschnitt), beachten Sie bitte die folgenden Regeln:

* Alle Tabellen MÜSSEN eine eindeutige Kennung haben, die auf einer einzelnen Spalte basiert. Wenn die Tabelle bereits ein `id` enthält, das von einer `c_id` -Spalte abhängig ist, MUSS die neue Spalte den Namen `iid`
* Alle Tabellen, die sich auf Kurse beziehen, MÜSSEN die ganzzahlige ID des Kurses verwenden und die entsprechende Spalte aufrufen `c_id`
* Alle Tabellen, die sich auf Sitzungen beziehen, MÜSSEN die ganzzahlige ID der Sitzung verwenden und die entsprechende Spalte `session_id` (und NICHT `id_session`) aufrufen
* Alle Tabellen, die die Beziehung zwischen anderen Tabellen darstellen (nämlich eine n-m- oder 1-n-Beziehung), SOLLTEN einen Namen mit einem zentralen « rel » -Begriff tragen, in dem die beiden Tabellennamen in alphabetischer Reihenfolge ausgedrückt werden, es sei denn, dies ist kontraintuitiv. Zum Beispiel trägt das Verknüpfen von Benutzern mit Kursen den Tabellennamen `course_rel_user`.
* Wenn Sie speziell einen Tabellenindex definieren, um die Dinge zu beschleunigen, SOLLTE dieser Index der Reihenfolge der Felder folgen, die in den entsprechenden Abfragen verwendet werden. Beispielsweise sollte für eine Tabelle, die mindestens die drei Felder `user_id`, `c_id` und `session_id` enthält, ein Index für diese drei Felder auf den Abfragen basieren, die an diese Tabelle gestellt werden. Wenn eine Abfrage wie folgt funktioniert: `SELECT id FROM table WHERE c_id = 3 AND user_id = 872 AND session_id = 32` dann sollte der Index in dieser Reihenfolge erstellt werden: `ALTER TABLE table ADD INDEX idx_tcus (c_id, user_id, session_id)`
* Übersetzungen von Begriffen werden außerhalb der Datenbank verwaltet. Alle Tabellen-, Spalten- und Indexnamen MÜSSEN in ENGLISCHER SPRACHE KORREKT geschrieben sein, um die Verständlichkeit anderer Entwickler auf der ganzen Welt zu verbessern.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://chamilo-docs.stoneageit.ch/entwicklerhandbuch/the_chamilo_files_and_database_structure/general_conventions_for_future_database_structure.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
