Base de données - Transports en commun

Présentation du projet

Contexte

Ce projet a pour objectif la création d'une base de données regroupant des informations sur les transports en commun tels que les tramways, les bus et les funiculaires, en s'appuyant sur le standard.

Objectifs

  • Modéliser une base de données relationnelle conforme au standard GTFS
  • Manipuler des données réelles issues de fichiers CSV
  • Utiliser SQL pour créer des vues, fonctions et requêtes complexes
  • Déployer une base de données sur un serveur personnel
  • Visualiser et interpréter la structure des données de transport

Outils utilisés

  • PostgreSQL — base de données relationnelle
  • Serveur personnel — hébergement local
  • DataGrip — environnement de développement (IDE)

Modèle relationnel de la base

Voici un aperçu textuel des relations entre les différentes tables utilisées.

agency (PK: agency_id)
    └── routes (PK: route_id)

routes (PK: route_id)
    └── trips (PK: trip_id, FK: route_id, FK: service_id)

trips (PK: trip_id)
    ├── calendar (PK: service_id)
    ├── calendar_dates (PK: service_id + date)
    └── shapes (PK: shape_id + shape_pt_sequence)

stops (PK: stop_id)
    └── peut contenir un parent_station (FK sur stop_id)

(stop_times est exclue ici à cause d’un problème d’import)
      

Description des tables

  • agency : informations sur l’opérateur (nom, site web, fuseau horaire, etc.)
  • routes : lignes du réseau (noms, couleurs, type de transport)
  • trips : trajets individuels effectués par une ligne, associés à un itinéraire et un horaire
  • calendar : jours d’exploitation récurrents d’un service
  • calendar_dates : exceptions à la règle (ex. jours fériés)
  • shapes : coordonnées GPS représentant le tracé d’un trajet
  • stops : points d’arrêt, avec coordonnées, accessibilité et hiérarchie parent/enfant

Ce modèle m’a permis de mieux comprendre la structure d’une base de données relationnelle complexe, en pratiquant la modélisation de données, l’utilisation de clés primaires/étrangères, et le respect d’un standard réel.

Création

Création de la base

Création de la table routes avec Datagrip

Insertion des données

Insertion des données

Insertion des donnée pour la table route

Méthode

Méthode 1

Voir les services actifs le lundi

Méthode 2

Résultat de la requête affichant les services actifs

Vues SQL

Vue SQL 1

Vue combinant les tables routes, trips et calendar

Vue SQL 2

Résultat de la vue SQL

Fonctions SQL

Fonction 1

Afficher tous les voyages (trip_id) d’un route_id

Fonction 2

Résultat de la fonction