Fonctionnement de la BDD

ilune_fr > Contao - Typolight > Découverte de Contao > Fonctionnement de la BDD

Diagramme d'execution

Dans ce diagramme d'exécution, on voit que la classe Database_Statement est importante. Elle se charge d'executer les requètes.

La base de donnée est portée par la classe système. Database initialise Database_Statement qui retourne le résultat sous forme d'objet Database_Result.

Esquisse UML du système de BDD:

Executer des requêtes

Liaisons entre tables particulières

Dans contao les liaisons de la base de donnée sont faites grâce à des champs BLOB contenant des tableaux seriralisés (serialize($array) )

La logique est donc plus proche de l'uml, car merise cherche les résultats dans l'ordre inverse:

Dans merise, on cherche dans tout les enfants ceux qui possèdent une clé étrangère correspondant à la table porteuse, alors que dans le "système de contao", celui qui "porte" des enfants enregistre leurs valeurs dans son tableau sérialisé et sauvegardé dans un champ BLOB.

La syntaxe des requêtes est spéciale, et utilise des joker (wildcard).

Un exemple de requête donne donc:

foreach ((array) $this->groups as $id)
{
	$objGroup = $this->Database->prepare("SELECT * FROM tl_user_group WHERE id=? AND disable!=1 AND (start='' OR 	start<$time) AND (stop='' OR stop>$time)")
			->limit(1)
			->execute($id);
}

On constate que le point d'intérogation "?" sera remplacé par la valeur de $id lors de l'envoie à la base donnée. La méthode execute peut prendre un nombre variable de paramètres (grâce à func_get_args ), cela nous permettra de placer plusieurs wildcards ("?") dans une requète.

Par ailleurs, dans la requête on a limité la requête à un résultat (->limit(1)).

Les tables constituants la BDD de Contao

Voici un aperçu de la BDD, et des tables qui la composent.

Bien sûr, cet aperçu n'est pas absolu, car des modifications peuvent exister en fonction des modules installés, et des versions de Contao / typolight utilisées. L'objectif est juste de se faire une idée de l'existant.Sourire

Vous trouverez ici, un autre schéma de la bdd.


  Cet article est sous licence LGPL, vous pouvez le modifier, le copier et le publier, mais en signalant son auteur d'origine. ( http://www.ilune.fr )