Le catalogue SQL de 4D comporte plusieurs tables système, accessible à tout utilisateur SQL disposant des droits d’accès en lecture : _USER_TABLES, _USER_COLUMNS, _USER_INDEXES, _USER_CONSTRAINTS, _USER_IND_ COLUMNS, _USER _CONS_ COLUMNS, _USER_SCHEMAS, _USER_VIEWS et _USER_VIEW_COLUMNS.
Conformément aux usages dans le monde SQL, les tables système décrivent la structure de la base de données. Voici le descriptif de ces tables et de leurs champs :  
| _USER_TABLES |  | Décrit les tables utilisateurs de la base | 
| TABLE_NAME | VARCHAR | Nom de table | 
| TEMPORARY | BOOLEAN | Vrai si la table est temporaire, faux sinon | 
| TABLE_ID | INT64 | Numéro de table | 
| SCHEMA_ID | INT32 | Numéro de schéma | 
| REST_AVAILABLE | BOOLEAN | Vrai si la table est exposée avec le service REST, Faux sinon | 
| LOGGED | BOOLEAN | Vrai si les opérations de la table sont incluses dans le fichier d'historique, Faux sinon | 
| _USER_COLUMNS |  | Décrit les colonnes des tables utilisateurs de la base | 
| TABLE_NAME | VARCHAR | Nom de table | 
| COLUMN_NAME | VARCHAR | Nom de colonne | 
| DATA_TYPE | INT32 | Type de colonne | 
| DATA_LENGTH | INT32 | Longueur de colonne | 
| NULLABLE | BOOLEAN | Vrai si la colonne accepte des valeurs NULL, faux sinon | 
| TABLE_ID | INT64 | Numéro de table | 
| COLUMN_ID | INT64 | Numéro de colonne | 
| UNIQUENESS | BOOLEAN | Vrai si la colonne est déclarée Unique, Faux sinon | 
| AUTOGENERATE | BOOLEAN | Vrai si la valeur de la colonne est automatiquement générée pour chaque nouvel enregistrement, Faux sinon | 
| AUTOINCREMENT | BOOLEAN | Vrai si la valeur de la colonne est automatiquement incrémentée, Faux sinon | 
| REST_AVAILABLE | BOOLEAN | Vrai si la colonne est exposée avec le service REST, Faux sinon | 
| _USER_INDEXES |  | Décrit les index utilisateurs de la base | 
| INDEX_ID | VARCHAR | Numéro d’index | 
| INDEX_NAME | VARCHAR | Nom d’index | 
| INDEX_TYPE | INT32 | Type d’index (1=BTree / Composite, 3=Cluster / Mots-clés, 7=Auto, 8=Auto pour champ Objet) | 
| KEYWORD | BOOLEAN | Vrai si l'index est un index de mots-clés, faux sinon | 
| TABLE_NAME | VARCHAR | Nom de table avec index | 
| UNIQUENESS | BOOLEAN | Vrai si l’index impose une contrainte d’unicité, faux sinon | 
| TABLE_ID | INT64 | Numéro de table avec index | 
| _USER_IND_COLUMNS |  | Décrit les colonnes des index utilisateurs de la base | 
| INDEX_ID | VARCHAR | Numéro d’index | 
| INDEX_NAME | VARCHAR | Nom d’index | 
| TABLE_NAME | VARCHAR | Nom de table avec index | 
| COLUMN_NAME | VARCHAR | Nom de colonne avec index | 
| COLUMN_POSITION | INT32 | Position de colonne dans l’index | 
| TABLE_ID | INT64 | Numéro de table avec index | 
| COLUMN_ID | INT64 | Numéro de colonne | 
| _USER_CONSTRAINTS |  | Décrit les contraintes d'intégrité de la base | 
| CONSTRAINT_ID | VARCHAR | Numéro de contrainte | 
| CONSTRAINT_NAME | VARCHAR | Nom de la définition de contrainte | 
| CONSTRAINT_TYPE | VARCHAR | Type de contrainte (P=clé primaire, R=intégrité référentielle - clé étrangère, 4DR=relation 4D) | 
| TABLE_NAME | VARCHAR | Nom de table avec contrainte | 
| TABLE_ID | INT64 | Numéro de table avec contrainte | 
| DELETE_RULE | VARCHAR | Règle de suppression de la contrainte – CASCADE ou RESTRICT | 
| RELATED_TABLE_NAME | VARCHAR | Nom de table liée | 
| RELATED_TABLE_ID | INT64 | Numéro de table liée | 
| _USER_CONS_COLUMNS |  | Décrit les colonnes des contraintes utilisateurs de la base | 
| CONSTRAINT_ID | VARCHAR | Numéro de contrainte | 
| CONSTRAINT_NAME | VARCHAR | Nom de contrainte | 
| TABLE_NAME | VARCHAR | Nom de table avec contrainte | 
| TABLE_ID | INT64 | Numéro de table avec contrainte | 
| COLUMN_NAME | VARCHAR | Nom de colonne avec contrainte | 
| COLUMN_ID | INT64 | Numéro de colonne avec contrainte | 
| COLUMN_POSITION | INT32 | Position de colonne dans une contrainte | 
| RELATED_COLUMN_NAME | VARCHAR | Nom de colonne liée dans une contrainte | 
| RELATED_COLUMN_ID | INT32 | Numéro de colonne liée dans une contrainte | 
| _USER_SCHEMAS |  | Décrit les schémas de la base | 
| SCHEMA_ID | INT32 | Numéro de schéma | 
| SCHEMA_NAME | VARCHAR | Nom de schéma | 
| READ_GROUP_ID | INT32 | Numéro du groupe ayant accès en lecture | 
| READ_GROUP_NAME | VARCHAR | Nom du groupe ayant accès en lecture | 
| READ_WRITE_GROUP_ID | INT32 | Numéro du groupe ayant accès en lecture-écriture | 
| READ_WRITE_GROUP_NAME | VARCHAR | Nom du groupe ayant accès en lecture-écriture | 
| ALL_GROUP_ID | INT32 | Numéro du groupe ayant un accès complet | 
| ALL_GROUP_NAME | VARCHAR | Nom du groupe ayant un accès complet | 
| _USER_VIEWS |  | Décrit les vues des utilisateurs de la base | 
| VIEW_NAME | VARCHAR | Nom de vue | 
| SCHEMA_ID | INT32 | ID du nom_schéma auquel appartient la vue | 
 | _USER_VIEW_COLUMNS |  | Décrit les colonnes des vues des utilisateurs de la base | 
| VIEW_NAME | VARCHAR | Nom de vue | 
| COLUMN_NAME | VARCHAR | Nom de colonne | 
| DATA_TYPE | INT32 | Type de colonne | 
| DATA_LENGTH | INT32 | Taille de colonne | 
| NULLABLE | BOOLEAN | True si la colonne accepte des valeurs NULL, sinon False | 
  Note : Les tables système sont affectées à un schéma particulier nommé SYSTEM_SCHEMA. Ce schéma ne peut être ni modifié ni supprimé. Il n’apparaît pas dans la liste des schémas affichée dans l’Inspecteur de tables. Il est accessible en mode Lecture seulement à tout utilisateur.