dbXapp 2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
Loading...
Searching...
No Matches
dbxDB, DD und FD Leitfaden

dbxDB, DD und FD bilden die Daten- und Strukturgrundlage von dbXapp.

Aufgaben

Baustein Aufgabe
dbxDB Datenzugriff, Rechte, Trace, Performance, Backup/Restore/Transfer
DD Tabellen, Felder, Indizes, Rechte, Cache, Trace, DB-Sync
FD Formularsicht, Labels, Templates, Regeln, Optionen

DD-Dateien

DD-Dateien liegen unter:

dbx/modules/{modul}/dd/{name}.dd.php

Beispiel:

$table['name'] = 'contact_request';
$table['server'] = 'dbXsystem';
$table['read'] = 'admin';
$table['create'] = 'guest';
$table['update'] = 'admin';
$table['delete'] = 'admin';
$field['id'] = array(
'name' => 'id',
'type' => 'int',
'key' => 'PRI',
);
$field['subject'] = array(
'name' => 'subject',
'type' => 'varchar',
'label' => 'Betreff',
'rules' => 'varchar',
);
$table['server']
Definition .dd.php:6
$field
Definition config.dd.php:4

FD-Dateien

FD-Dateien liegen unter:

dbx/modules/{modul}/fd/{name}.fd.php

FD beschreibt, wie Felder im Formular erscheinen:

$field['subject'] = array(
'name' => 'subject',
'tpl' => 'input',
'label' => 'Betreff',
'rules' => 'required',
'placeholder' => 'Kurzer Betreff',
);

dbxDB verwenden

Lesen:

$db = dbx()->get_system_obj('dbxDB');
$ticket = $db->select1('dbxContact|contactRequest', 'id=' . (int)$id);
DBX schema administration.

Speichern:

$db->update('dbxContact|contactRequest', array(
'status' => 'closed',
), (int)$id);

Einfuegen:

$id = $db->insert('dbxContact|contactRequest', array(
'subject' => 'Neue Anfrage',
'status' => 'open',
));

Unterstuetzte Datenbanken

dbXapp kapselt Datenbanken ueber PDO und die Serverkonfiguration. Die Klasse kennt unter anderem folgende Typen:

  • SQLite
  • MySQL/MariaDB
  • PostgreSQL
  • SQL Server
  • Oracle/OCI
  • Firebird
  • ODBC/DBLIB/IBM/Informix je nach PHP/PDO-Installation

In der aktuellen Standardauslieferung wird haeufig SQLite verwendet, weil SQLite ohne separaten SQL-Server auskommt und sich Datenbanken einfach pro Modul oder Funktionsbereich aufteilen lassen. dbXapp ist dadurch aber nicht auf SQLite beschraenkt. Wenn die Serverkonfiguration und die benoetigten PHP/PDO- Treiber vorhanden sind, koennen auch andere Datenbanksysteme genutzt werden.

Modulcode darf deshalb nie hart auf SQLite verdrahtet werden. Er arbeitet gegen DD-Namen, Servernamen und dbxDB; die konkrete Datenbank wird ueber die dbXapp-Konfiguration entschieden.

DD-Synchronisation

DD- und DB-Synchronisation

DD -> DB:

$state = dbx()->get_system_obj('dbxDD')->sync_dd_to_db(
'dbxContact',
'contactRequest',
'apply'
);

DB -> DD:

$state = dbx()->get_system_obj('dbxDD')->sync_db_to_dd(
'dbxContact',
'contactRequest',
'merge',
'dbXsystem',
'contact_request'
);

Ergebnisform:

[
'status' => 'running',
'phase' => 'write_dd',
'percent' => 70,
]

Backup, Restore und Transfer

dbxDB und Admin-Werkzeuge stellen Datenbankpflege bereit:

  • Backup einzelner Tabellen oder Datenbankbereiche.
  • Restore aus vorhandenen Backups.
  • Transfer zwischen Tabellen oder Servern.
  • CSV/SQL-Import und Export, soweit vom Modul vorgesehen.

Diese Aufgaben gehoeren in DB-/DD-Infrastruktur, nicht in Fachmodule.

Regeln

  • Fachmodule nutzen dbxDB, nicht direkt PDO.
  • DD ist die Wahrheit fuer Struktur.
  • FD ist die Wahrheit fuer Formularsicht.
  • Manuelle DB-Aenderungen muessen in DD nachgezogen werden.
  • Infrastruktur-Ausnahmen ohne Rechtepruefung muessen eng begrenzt sein, z.B. Session-DB am Request-Ende.