[Résolu] Relations entre tables pour calcul de trajets

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
nflqt
Fraîchement OOthentifié
Messages : 3
Inscription : 16 oct. 2020 15:03

[Résolu] Relations entre tables pour calcul de trajets

Message par nflqt »

Salut à tous.

Je débute sous LibreOffice Base (et en bases de données en général aussi) et je bloque notamment sur les relations entre tables.

Mon projet est de faciliter la saisie et le suivi des reçus pour une association d’entraide au transport automobile en campagne. Le principe : des conducteurs bénévoles transportent sur des trajets relativement courts, des personnes qui ne peuvent pas conduire.

Sur le reçu rempli à chaque trajet, on trouve :
  • un numéro de reçu,
  • le nom (et prénom) du conducteur,
  • le nom (et prénom) de l’usager,
  • la ville de départ,
  • la ville d’arrivée,
  • et une estimation de la distance parcourue grâce à un relevé du compteur de l’automobile.
Depuis quelques années, la saisie informatique des reçus s’effectue sous le module Calc, mais je souhaite la rendre un peu plus rapide et moins sujette aux erreurs grâce au module Base.

J’essaie de faire :
  • une table pour les personnes (conducteur comme usager) avec, en tant que champs, un identifiant/clé primaire [INTEGER] et un nom [VARCHAR] (la table est intitulée "personnes")
;
  • une table pour les villes : "villes", presque identique à la première
;
  • et une tables pour les reçus "trajets". avec des champs NumRecu [INTEGER] (c’est la clé primaire), Depart [INTEGER]. Arrivee [INTEGER], Distance [Small Integer] Conducteur [INTEGER] et Passager [INTEGER].
Quand je lie (avec ma souris via l’outil « ébauche de relation ») les champs "trajets.Depart" à "villes.ID" et "trajets.Conducteur" à "personnes.ID" ça a l’air de fonctionner. Mais si je veux encore ajouter des liens pour "trajet.Arrivee" à "villes.ID" et "trajets.Passager" à "personnes.ID", LibreOffice m’affiche une petite fenêtre « Cette relation existe déjà. Souhaitez-vous l’éditer ou en créer une nouvelle ? » Et si je veux « créer » ma nouvelle relation dans le tableau que ça m’affiche, j’obtiens une vilaine :
firebird_sdbc error:
* unsuccessful metadata update
*ALTER TABLE Trajets failed
*could not find UNIQUE or PRIMARY KEY
constraint in table Usagers with specified columns
caused by
'ALTER TABLE "Trajets" ADD FOREIGN KEY
("Passager","Conducteur") REFERENCES
"Usagers" ("ID","ID")'
J’imagine qu’il y a certainement un concept dans les bases de données, que j’ai saisi de travers. Mais je ne trouve pas mon problème après plusieurs semaines de recherches.

Merci d’avance pour votre aide !
Libreoffice 6.4
(paquet libreoffice-still 6.4.6-2 sous Manjaro GNU/Linux)
Avatar de l’utilisateur
tintin
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 10181
Inscription : 18 juil. 2008 15:29
Localisation : F-Oise

Re: Relations entre tables

Message par tintin »

Bonjour et bienvenue,

En joignant une copie anonymisée de votre fichier avec ses tables, vous permettrez aux bénévoles qui vont vous répondre de présenter les solutions les mieux adaptées.
Comment joindre un fichier

Cordialement
AOO 4.1.16 et LibO 25.8.5 / macOS M4 Silicon 26.4 Tahoe
Adoptium-temurinJDK-1.8.0.482 / Firefox/Safari/Thunderbird /Time Machine + clone
Tutoriels du forum pour macOS
Pour sauvegarder vos documents c'est ceinture ET bretelles
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Relations entre tables

Message par jeanmimi »

Bonjour,
Je suggère de faire une Table pour les usagers et une autre Table pour les conducteurs. De cette façon, il y aura bien deux relations différentes.
La Base pourrait ressembler à celle-ci.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
nflqt
Fraîchement OOthentifié
Messages : 3
Inscription : 16 oct. 2020 15:03

Re: Relations entre tables

Message par nflqt »

Merci @tintin. Voici une copie anonymisée de mon dernier test.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libreoffice 6.4
(paquet libreoffice-still 6.4.6-2 sous Manjaro GNU/Linux)
nflqt
Fraîchement OOthentifié
Messages : 3
Inscription : 16 oct. 2020 15:03

Re: Relations entre tables

Message par nflqt »

jeanmimi a écrit :Je suggère de faire une Table pour les usagers et une autre Table pour les conducteurs. De cette façon, il y aura bien deux relations différentes.
La Base pourrait ressembler à celle-ci.
Merci @jeanmimi. Mais du coup :
  • 1. Si j’ai un jour une personne qui était conductrice devient usagère, il faudra que je rentre son nom dans la table des usagers ?
    2. Est-ce que je dois également faire deux tables pour les villes ? T_ville_depart et T_ville_arrivee ?

La modération vous a écrit: Évitez de poster plusieurs messages à la suite.
Vous pouvez répondre à une ou plusieurs personnes dans le même message.

Libreoffice 6.4
(paquet libreoffice-still 6.4.6-2 sous Manjaro GNU/Linux)
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Relations entre tables

Message par jeanmimi »

nflqt a écrit : 1. Si j’ai un jour une personne qui était conductrice devient usagère, il faudra que je rentre son nom dans la table des usagers ?
2. Est-ce que je dois également faire deux tables pour les villes ? T_ville_depart et T_ville_arrivee ?
Dans cette version, il n'y a qu'une Table T_usagers et qu'une Table T_villes avec les 4 requêtes qui permettent la mise en évidence des conducteurs et des passagers, ainsi que des villes de départ et d'arrivée.
A tester avec des données réelles.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
HRk2o
Membre cOOnverti
Membre cOOnverti
Messages : 366
Inscription : 29 mai 2009 08:51
Localisation : Guyane

Re: Relations entre tables

Message par HRk2o »

Bonjour,

une proposition qui pourrait répondre à votre demande !
Transcampagne_v3.odb
@+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Windows 10 sous AOO 4.1.16 et LibO 24.8.5.2