# Paradox (Datenbank)

Paradox ist eine Datenbank-Entwicklungsumgebung bzw. ein dateibasiertes Datenbankformat der Firma Borland bzw. Corel, welches dBASE III, dBASE 3+ und dBASE IV sehr ähnlich und seit den 1980er Jahren auf dem Markt erhältlich ist.

## Aufbau
### Datenbank

Paradox ist für den Betrieb mit der Borland Database Engine (BDE) vorgesehen. Diese ist selbst nicht Teil von Paradox, sondern eine eigenständige Bibliothek und wird in vielen anderen Softwareprodukten eingesetzt.
Die BDE stellt den Zugriff auf eine relationale Datenbank als Datenbankschnittstelle bereit. Im Falle von Paradox als Datenbankformat belegt dabei jede Tabelle (*.DB) und jeder Index eine (Primärindex *.PX) bzw. zwei (pro Sekundärindex jeweils *.XG? und *.YG?) eigene Datei(en). Enthält eine Tabelle Memo-Felder, Gültigkeitsprüfungen oder Formatierungsinformationen, werden diese ebenfalls in speziellen Files (*.MB, *.VAL, *.TV) abgelegt. Beim Mehrbenutzerbetrieb liegen diese Dateien auf einem Netzlaufwerk, während die BDE-Instanzen der teilnehmenden Rechner den gemeinsamen Zugriff miteinander durch eine Netzsteuerdatei („PDOXUSRS.NET“) und Sperrdateien (*.LCK) koordinieren. Paradox bzw. die DB-Engine beherrscht sogenanntes „Record-Locking“ (Sperren einzelner Datensätze) und ist daher – im Gegensatz zu Mitbewerbern wie etwa Microsoft Access – besser für Mehrbenutzerbetrieb geeignet.

### Benutzerschnittstelle

Kernfunktionalität von Paradox sind die Formulare. Das sind Windows-Fenster, die man mit Hilfe der (kostenpflichtigen) Entwicklerversion durch Platzieren von vorgefertigten Eingabe- und Bedienelementen entwirft. Hierdurch entstehen Bildschirmmasken zum Betrachten und Eingeben von Daten.
Eine Programmierung im Sinne von Programmcode-Zeilen ist hierbei nicht erforderlich. Das Laden, Sperren und Speichern von Datensätzen besorgt die Paradox-Laufzeitumgebung automatisch.
Eine weitere Benutzerschnittstelle sind die sogenannten Reports. Sie werden in ähnlicher Weise konstruiert wie die Formulare, dienen aber nicht der Bildschirmdarstellung, sondern zum formatierten Ausdrucken.
Ein Formular belegt je eine Datei, ebenso ein Report.

### Scriptsprache

Zu fast allen Ereignissen (etwa Eingaben, Blättern oder Mausklicks) kann Programmcode hinterlegt werden, der die Paradox-eigene Abarbeitung des Ereignisses in beliebiger Weise verändert. Beispielsweise kann man beim Ereignis „Speichern“ unstimmige Daten erkennen, eine Meldung ausgeben und die Speicherung abbrechen. In modernen Begriffen kann man dies als Scriptsprache bezeichnen.
In Paradox steht als Scriptsprache die Paradox Application Language (PAL) bzw. ObjectPAL (in den Windows-Versionen) zur Verfügung. ObjectPAL ist die objektbasierte Variante von PAL (es wird hier bei Paradox korrekt zwischen objektbasiert und objektorientiert unterschieden). Beide sind von Pascal abgeleitet.
Oft wird die Scriptsprache unscharf ebenfalls als „Paradox“ bezeichnet.

### Anwendungsprogrammierung

Paradox-Anwendungen werden in einen Zwischencode kompiliert. Zum Ablauf dieser Programme ist weiterhin ein Paradox-System oder eine (kostenfreie) Paradox-Runtime notwendig. Im Gegensatz zu etwa Access muss durch die Teilkompilierung der Quellcode nicht weitergegeben werden.

## Versionsgeschichte

Paradox für Windows 1.0 erschien Anfang 1993. Aus Marketinggründen wurde die Version 1.1 im Jahre 1994 als Version 4.5 auf den Markt gebracht – da Paradox für DOS bei diesem Versionsstand war. Das Paradox-Tabellenformat wird daher bei Paradox für Windows 1.0 und 4.5 auch bis Level 4 unterstützt. Paradox für Windows 5.0 war dann die eigentliche zweite Generation (Paradox Table Level 5). Danach kam Paradox 7 in einer Version für Windows 16-Bit und Windows 32-Bit („Table Level 7“ – der letzte Formatstand). Das Produkt Paradox wurde nach Version 7 für Windows an Corel abgegeben (erste Version von Corel ist Corel Paradox 8). Corel integrierte das Programm in die Professional-Versionen seiner WordPerfect Office Suite. Es wurde in den Versionen 9, 10, 11, 12, X3, X4, X5, X6, X7, X8 und X9 der Office-Suite veröffentlicht. Die aktuell von Corel herausgegebene Paradox-Version gibt es nur in Verbindung von Word Perfect Professional X9. Die letzte deutsche Version ist Paradox 9.

## Sicherheit

Der Inhalt von unverschlüsselten Paradox-Tabellen ist mit paradoxfremden Mitteln, auch mit einfachen Textverarbeitungsprogrammen, zu lesen. Das Paradox-Programm bietet die Möglichkeit, Tabellen zu verschlüsseln, sodass beim Zugriff über Paradox ein Passwort verlangt wird. Zur Entschlüsselung solcher Tabellen braucht man aber nicht unbedingt das Kennwort: Die Regeln der Verschlüsselung sind fest und der Schlüssel zum Lesen ist in der Datenbank mit gespeichert, sodass keine Brute-Force-Passwortsuche nötig ist. Verschiedene Hilfsprogramme wie decryptpdxtable, pxunsec (bis Version 4) und pxdazz (bis Version 7) können zum Speichern einer unverschlüsselten Kopie bzw. zum Ermitteln des Passwortes einer Paradoxtabelle verwendet werden. Weiterhin existieren einige Universalpasswörter, mit denen jede verschlüsselte Paradoxtabelle geöffnet werden kann.