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

Bases de données Delphi Discussion :

Débutant, aide sur création table


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2014
    Messages : 21
    Points : 19
    Points
    19
    Par défaut Débutant, aide sur création table
    Voilà, je suis débutante en base de données Delphi et j'ai un problème avec une table. Je ne sais pas si je suis sur la bonne voie, c'est pour ça que je veux bien un aide de votre part.
    J'ai une liste de 10 produits (par exemple : café, riz, tomates...) dont je dois entrer la valeur moyenne mensuelle (janvier, février , mars, avril...) pour l'année 2016 et 2017, 2015 par zone ( zone 1 , zone 2 … zone 5).
    Alors mon application doit afficher un histogramme des prisx par zone et par produit durant toute l'année. Je veux dire que j'entre le produit et la zone, et qu'alors il me donne un diagramme (prix, mois).
    J'ai constitué une seule table produit (id , nom produit, prix, mois, année, zone ) mais dans la table il y a beaucoup de redondances. ALors, que dois-je faire ?

    Exemple :
    riz janvier 100 zone 1 2017
    riz février 150 zone 1 2017
    riz mars 150 zone 1 2017
    .....
    riz janvier 100 zone 2 2017
    riz février 150 zone 2 2017
    riz mars 150 zone 2 2017
    ...
    café janvier 100 zone 1 2017
    café février 150 zone 1 2017
    café mars 150 zone 1 2017

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Delphi peut gérer des données contenues dans des base de données mais il ne faut pas mélanger Delphi : Pascal et BDD architecture de base de données.
    Autre point indiquer le type de SGBD est important certaines ne sont pas aussi performantes que d'autres, s'agit-il d'un SGBDR ou pas ?

    Une seule table, c'est non, il faut une table PRODUITS(ID_PRODUIT,NOM_PRODUIT) peut être une Table ZONES (ID_ZONE,NOM_ZONE)
    et une table PRIXMOYENS(ID_PRODUIT,ID_ZONE,AAAA,MM,PRIX) (bien sûr sans intitulé du mois).
    Contraintes
    les ID_ sont des entiers pour chaque table UNIQUE NOT NULL (PRIMARY KEY), il y a bien sur des dépendances (FOREIGN KEY) entre la table PRIXMOYENS et les 2 tables produit et ZONES. Le fait de rajouter la contrainte de dépendance permet aussi d'indiquer comment sera géré une suppression dans les tables PRODUITS ou ZONES
    Les NOM_ sont des chaines de caractères à l'occasion pouvant être indexées de façon unique également

    C'est la plus "atomique" façon de faire !


    Maintenant, si vous trouvez que cela fait encore beaucoup trop d'enregistrements pour prix moyens, si il n'y aura jamais plus de 5 zones alors (là les architectes de bases de données vont me maudire et dire que c'est une hérésie) vous pouvez établir une table ainsi PRIXMOYENS(ID_PRODUIT,AAAA,MM,PZONE1,PZONE2,PZONE3,PZONE4,PZONE5)
    mais du fait de la non "atomicité" il sera beaucoup plus difficile de coder l'exploitation des données. Comme on n'est plus au temps où chaque octet comptait pour le stockage je déconseille fortement cette approche.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Maudit soit-tu !
    C'est une hérésie !

    Plus sérieusement...
    Comme le fait remarquer SergioMaster à juste titre, passer par la table ZONES fait 5 fois plus s'enregistrements dans PrixMoyens
    En revanche ça t'ouvre d'autre possibilités que tu n'aurais pas autrement :
    - permet d'être plus souple (si un jour le nombre de zones évolue)
    - offre une possibilité d'extension du modèle (si un jour on te demande de stocker des infos sur ces zones).
    - permet une meilleure indexation

Discussions similaires

  1. [AC-2007] [Débutant] Avis sur création de tables
    Par crismans dans le forum Modélisation
    Réponses: 13
    Dernier message: 11/01/2011, 12h32
  2. Aide sur création de requete arborescente
    Par in dans le forum Oracle
    Réponses: 3
    Dernier message: 26/01/2007, 14h29
  3. [struts] liste dynamique, aide sur création Form
    Par chouchou93 dans le forum Struts 1
    Réponses: 3
    Dernier message: 01/12/2006, 16h45
  4. [Débutant] Aide sur la conception
    Par E2EK1EL dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 08h38
  5. aide sur création d'un composant
    Par laetus dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/07/2004, 10h45

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