Aller au contenu principal

Base de données

Malgré la présence de deux API, ce qui serait normalement accompagné de deux bases de données, nous avons choisi de n'utiliser qu'une seule base de données pour les deux API. En effet, cela rend le développement plus simple dans un premier temps, car les informations ne transitent pas directement entre les deux API. De plus, les deux API n'écrivent pas des données sur les mêmes tables, il n'y a donc pas de risque d'écrasement de données de l'autre API.

Cependant, il est possible que dans le futur, l'architecture du projet change et que les deux API aient chacune leur base de données associée.

La base de données utilisée est une PostgreSQL. Nous avons choisi cette technologie car nous l'avions déjà utilisé précédemment.

Voici le schéma de la base de données actuel :

database-diagram

L'organisation des tables fonctionne ainsi :

  • Les tables events, areas, stands et cameras représentent chacune des entités (respectivement des évènements, des zones d'un évènement, des stands et des caméras), reliées par appartenance
  • A ces entités sont liées des statistiques, données par les tables *_statistics
  • La table point_clouds contient les noms des fichiers de nuages de points et de prévisualisation liés aux zones (si un nuage de points à été défini pour une zone)
  • La table cameras_configurations contient les valeurs de configuration de base des caméras. Selon le mode de fonctionnement souhaité, les tables global_cameras_configurations et local_cameras_configurations viennent compléter ces valeurs pour préciser la configuration
  • La table cameras_keys contient les clés d'API chiffrées des caméras. Les clés ne sont jamais supprimées, mais peuvent être en revanche invalidées. Une caméra possède au maximum une clé valide à tout instant
  • La table users contient les identifiants et mots de passe des utilisateurs enregistrés sur l'API. Il n'y a pas de système de permissions, tous les utilisateurs sont donc administrateurs. Il existe aussi un compte super-administrateur, non présent dans la base de données, dont les identifiants sont définis via des variables d'environnement