IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Structure BDD, tables et lien.


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Educateur sportif
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Educateur sportif

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Par défaut Structure BDD, tables et lien.
    Bonjour à toutes et tous,

    Premier élément, j'espère ne pas me tromper d'emplacement pour poser ma question. Je vous présente mes excuses si c'est le cas.

    J'aimerais faire apparaitre sur openstreetmap des marqueurs correspondant à l'emplacement de communes (d'un département en particulier).

    J'ai donc créé une table dans laquelle apparait 5 champs/colonnes.

    - id
    - Nom_Commune
    - Code_Postal
    - Latitude
    - Longitude

    Jusque-là, tout est fonctionnel.

    J'aimerais maintenant faire apparaitre sur un marqueur (popup), le nom de la commune (déjà fonctionnel) mais également un nouvel élément. A savoir si un ou plusieurs fournisseur(s) d'accès internet propose(nt) une offre fibre optique (et donc son nom/marque).
    A cet effet, est-ce que je vais devoir créer une seconde table avec un 'id' commun et plusieurs colonnes avec par exemple : fai1, fai2, date, ou bien est-ce que je peux d'ores et déjà créer plusieurs colonnes supplémentaires dans ma première table ?
    Si j'aspire à faire participer des internautes à cette application, la première solution me semble obligatoire car ils rempliraient la seconde table. La question peut paraitre évidente mais je n'ai pas encore cette logique qui aide à bien comprendre.

    Bonne journée.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 578
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 578
    Par défaut
    Bonjour,
    Si tu ajoutes comme tu le souhaite une colonne par fournisseur, tu vas avoir un gros problème le jour où tu voudras toutes les communes desservies par un fournisseur particulier.
    Et si tu as 50 fournisseurs, tu vas avoir 50 colonnes, dont la grande majorité sera nulle ?

    Donc il ne te faut pas une table supplémentaire, mais 2: une table fournisseur, et une table (fournisseur_commune ?) qui fait le lien entre la table commune et la table fournisseur, et qui indique le lien fourni.
    D'ailleurs j'ajouterai une dernière table: le type de lien fourni. Là tu ne gères que la fibre, mais peut-être que demain un nouveau type de connexion va être proposé, ou que tu voudras ajouter la couverture 4G/5G, l'ADSL, le SDSL…

    Tatayo.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Educateur sportif
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Educateur sportif

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Par défaut
    Merci beaucoup pour cette réponse tatayo .
    N'étant pas issu de milieu, il va me falloir un peu de temps pour tout déchiffrer ! Ca parait tellement simple quand tu l'expliques, et pourtant !

    L'idéal serait qu'une seule et même requête me retourne toutes les informations d'une commune (le nom, le code postal, la latitude, la longitude, les opérateurs présents).
    Et dans un second temps, que la possibilité soit offerte aux utilisateurs d'alimenter cette base de données (quel opérateur propose une offre fibre optique fonctionnelle).

    Il faut que je structure au mieux les tables de la base de données, mais que cela est difficile !

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 578
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 578
    Par défaut
    En fait tu tentes de construire tes tables en fonction de l'affichage désiré.
    Ce n'est pas une solution, sinon tu vas rapidement te retrouver coincé si tu veux un affichage différent (ce qui arrive plus vite que prévu), si tu veux faire des recherches "complexes", comme dans mon exemple…
    Avec ta structure tu peux facilement afficher les communes en ligne et les fournisseurs en colonne. Mais comment faire l'inverse ?
    Tu as des cours sur la modélisation dans ce forum (là par exemple), tu peux y jeter un œil.

    Pour obtenir la liste des communes et pour chaque la liste des fournisseurs, une simple jointure suffit:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Select c.id,c.nom,f.id,f.nom
    from commne as c
    inner join lien as l on l.idcommune = c.id
    inner join fournisseur as f on f.id = l.idfournisseur
    En ajoutant une jointure avec le type de lien, tu peux ajouter cette information et/ou filtrer le résultat.
    Charge à l'application de mettre en forme le résultat à l'écran.

    En ce qui concerne l'ajout de lien, c'est tout simple:
    • Tu proposes dans ton interface la liste des colonnes (avec l'Id, quitte à le masquer)
    • Tu proposes la liste des fournisseur, avec l'Id quitte à le cacher
    • Tu proposes le type de lien, avec l'Id quitte à le cacher


    L'utilisateur choisi la commune, le fournisseur, le type de lien. Lors de la validation, tu vérifies si le lien existe déjà. Si oui tu avertis l'utilisateur, sinon tu l'ajoutes (un simple insert).
    Tu peux aussi faire "un peu" mieux: lorsque l'utilisateur choisi un fournisseur et une commune, tu affiches les types de lien qu'il propose. S'il veut en ajouter, tu ne lui proposes que les liens "manquants".
    Il y a certainement d'autres solution (je ne suis pas un spécialiste de l'UI), mais ce sont déjà des pistes.

    Tatayo.

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/06/2018, 18h57
  2. [Conception] Confirmation sur la structure des tables de ma bdd
    Par Strauss dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/07/2007, 13h54
  3. Avantage Désavantage structuration de Table SQL
    Par jflebegue dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 01/12/2004, 18h40
  4. Dupliquer une structure de table
    Par deviltaz dans le forum Access
    Réponses: 4
    Dernier message: 13/10/2004, 13h41
  5. [DB2]Structure de table
    Par Morphee dans le forum DB2
    Réponses: 12
    Dernier message: 23/10/2003, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo