# Struktur / Aufbau der Datenbanken

Grundsätzlich wird eine Datenbank durch ein Verzeichnis repräsentiert.
Die Datenbank hat den gleichen Namen wie das Verzeichnis.
Alle Datenbank-Verzeichnisse müssen sich im gleichen Verzeichnis befinden,
und dieses wird durch die Einstellung $DB_DIR in der Datei txt-db-api.php
festgelegt.

Kleines Beispiel:

Wurde $DB_DIR auf den Wert "/home/websites/myhome/Databases/" gesetzt
so können sich die Datenbanken bzw. Ordner nun unter /home/websites/myhome/Databases/
befinden.

Möchte man eine Datenbank mit dem Namen "MeineDB" haben so erstellt man den Ordner
/home/websites/myhome/Databases/MeineDB.
Damit die Datenbank-Dateien nicht mit dem Browser direkt angesehen werden können, ist es empfehlenswert die .htaccess Datei in diesem Ordner entsprechend zu verändern, dass mit GET und POST kein Zugriff auf die Txt-Dateien möglich ist.

Natürlich kann $DB_DIR zum lokalen testen auf einer Windows Maschine auf Laufwerke
enthalten, zB "C:\meineWebseiten\blabla\Datenbanken\".

Wenn man nun SQL-Statements auf die Datenbank MeineDB absetzen möchte so
muss man zuerst ein Datebase Objekt erzeugen, und im Konstruktor den Namen
der Datenbank (also den Namen des Verzeichnisses) angeben.
Für das Beispiel von oben sähe das folgendermassen aus:

    $db=new Database("MeineDB");

ACHTUNG: bei den Datenbank-Namen (also dem Verzeichniss) wird die GROSS-klein-Schreibung
BERÜCKSICHTIGT !! (case sensitive).

Nun kann man auf der Variable $db Sql Statements absetzten.
Als ersten Schritt könnte man zB eine Tabelle "Personen" erzeugen:

    $db->executeQuery("CREATE TABLE personen (nr inc, vorname str, nachname str, alter int)");

Tabellen können auch ohne SQL-Statement, manuell erstellt werden.

Tabellen werden als .txt Files im Ordner der Datenbank repräsentiert. Was aber weniger Wichtig ist, theoretisch lässt sich mehr oder weniger alles machen, ohne dass man die .txt Files je anfassen muss.

Wichtig ist nur: Alle Datenbanken sind eigentlich Verzeichnisse welche sich im Verzeichnis $DB_DIR
befinden müssen !!

WICHTIG: Dieses Verzeichnis muss auch von Hand (z.B. via FTP erzeugt werden)! NICHT vergessen die Berechtigungen
des Verzeichnisses via FTP zu ändern (chmod()), ansonsten können keine Tabellen (also Dateien) im entsprechenden
Ordner erzeugt werden und CREATE TABLE schläg fehl.

NOCH ein Beispiel:

Die Webseite (also die HTML Dateien) sind unter /home/website/myPage/

Die API Files sind unter /home/website/myPage/txt-db-api/

Der Ordner der die Datenbanken hält ist /home/website/myPage/Datanbanken

Es sind zwei Datenbanken installiert (TestDatenbank und ProdDatenbank), somit existieren
folgende Verzeichnisse:

/home/website/myPage/Datanbanken/TestDatenbank/
und
/home/website/myPage/Datanbanken/ProdDatenbank/

Bei diesen wurde mit chmod die entsprechende Berechtigungen gesetzt (zB 777).

Bei dem oben erwähnten Beispiel würden die Einstellungen in txt-db-api.php so aussehen:

    $API_HOME_DIR="/home/website/myPage/txt-db-api/";
    $DB_DIR="/home/website/myPage/Datanbanken/";

Ein PHP Script im Ordner /home/website/myPage/ würde dann so beginnen

    <? php

    include("txt-db-api/txt-db-api.php");
    .....