# Comprendre la DB Typo3 Voici les principales tables sur lesquelles on est amené à intervenir. Toutes les autres tables sont soient rendues inutiles par le fonctionnement spécifiques de l'instance Opentalent (comme `sys_domain`), ou ne nécessitent quasiment jamais d'intervention manuelles. ## Règles générales Toutes les tables ont pour clé primaire un champs `uid`. La majorité des tables définissent un champ `pid`, pour "parent id". C'est l'uid de l'objet parent, par exemple la page qui le contient pour contenu. La majorité des tables définissent un champ `deleted`. Par défaut, le QueryBuilder typo3 ignorera de lui-même les champs dont ce champ est à 1. ## La table `pages` La table `pages` contient un enregistrement pour chaque page d'un site. Un champs spécifique Opentalent (`ot_website_uid`) permet de faire le lien entre une page et son site. Chaque site est constitué d'une page racine (`is_siteroot=1`). Ensuite l'arborescence des pages du site est définie par l'intermédiaire du champs pid, le pid d'une page étant l'uid de sa page parente. Le champs `dokType` définit le type d'une page (standard, raccourci, dossier...). Une page standard a pour dokType 1. Le champs `slug` est responsable du routing à l'intérieur du site. ## La table `ot_websites` > Voir [le chapitre dédié](ot_websites.md) ## La table `tt_content` La table `tt_content` contient un enregistrement pour chaque contenu d'une page. Le champs `pid` correspond à l'uid de la page qui le contient. Le type de contenu est défini par le champs `CType` Le corps du contenu est défini par le champs `bodytext` ## Les tables `fe_users` et `fe_groups` La table `fe_users` contient un enregistrement pour chaque frontend user. Ces enregistrements sont générés automatiquement via l'extension [OtConnect](/ot_connect). > Plus d'info [ici](auth.md) Chaque fe_user peut être affecté à un ou plusieurs fe_group par l'intermédiaire du champs `usergroup` (plusieurs valeurs possibles en séparant les uids avec une virgule) Les groupes sont lié à un site par l'intermédiaire du champs `pid`, qui contient l'uid de la page racine du site auquel le groupe est lié. ## La table `be_users` et `be_groups` La table `be_users` contient un enregistrement pour chaque backend user. Chaque be_user peut être affecté à un ou plusieurs be_group par l'intermédiaire du champs `usergroup` (plusieurs valeurs possibles en séparant les uids avec une virgule) > Plus d'infos [ici](be_users.md) ## Les tables `sys_file` et `sys_file_reference` Chaque fichier uploadé depuis le backend a un enregistrement correspondant dans la table `sys_file`. C'est ensuite la table `sys_file_reference` qui fait le lien entre cette table et la table étrangère qui référence ce fichier (pages, tt_content...) La table ciblée et la clé étrangère sont indiquées par les champs `tablenames` et `uid_foreign` de la table `sys_file_reference`, tandis que l'id du fichier dans `sys_file` est contenu dans le champs `uid_local` ## Les tables `sys_log` et `ot_log` Les tables `sys_log` et `ot_log` contiennent les logs typo3 pour la première, et spécifiques aux extensions Opentalent pour la seconde.