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

Schéma Discussion :

Maintenance de camions


Sujet :

Schéma

  1. #1001
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil Voir le message
    Le problème c'est que la vue MANUFACTURER_V ne contient pas seulement des Manufacturiers.
    La vue MANUFACTURER_V ne concerne que les manufacturiers, c’est pour cela qu’elle a été créée.


    Citation Envoyé par ordigil Voir le message
    Donc, je peux créer un combo pour des choix soft qui se remplit automatiquement d'après la vue MANUFACTURER_V mais là il se retrouvera avec des choix qui n'ONT rien à voir avec des manufacturiers de camions, ils aura dans le combo tout ce que contient la vue MANUFACTURER_V.
    Là, je suis d’accord, la vue MANUFACTURER_V concerne aussi bien les manufacturiers de camions que les manufacturiers de pièces.


    Citation Envoyé par ordigil Voir le message
    Je ne veux pas que dans le combo Manufacturier d'un camion que le client choisisse Timken, Timken n'est pas un manufacturier de camion, il est un manufacturier de pièces de camions. Donc si je laisse le combo Manufacturer se remplir automatiquement, je dois lui indiquer comment se remplir automatiquement d'après la vue MANUFACTURER_V.
    Le plus simple est de mettre en oeuvre une table TRUCK_MANUFACTURER dédiée aux manufacturiers de camions :



    Partant de là, on crée une vue TRUCK_MANUFACTURER_V dédiée aux manufacturiers de camions, et au besoin une vue COMPONENT_MANUFACTURER_V, permettant de connaître les manufacturiers qui ne fabriquent pas de camions, tel Timken par exemple.

    Votre avis ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      0  0

  2. #1002
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Bonjour fsmrel :-)

    Ok pour la création de la table TRUCK_MANUFACTURER et de sa vue…

    Par contre si on regarde la vue CAMION_LOCALISATION_V. Vous voyez dans le script UPDATE que j'ai utilisé que vos triggers fonctionne à poil, c'est à dire que pour changer un Modèle de Camion, le modèle dot être un modèle fabriqué par le Manufacturier ou vice versa. C'est parfait, c'est ce qu'on veut. Par contre si on s'est tromper à la fois de manufacturier et de modèle et qu'on veut changer l'un ou l'autre, on doit impérativement changer le Manufacturier et le Modèle dans un seule passe comme dans mon script UPDATE. Mais mon site WEB ça ne permet pas de le faire à la volée comme avant, c'est impossible dans la vue Modal". Mais Si vous allez sur le site web, complètement à gauche, il y a un petit crayon qui ouvrira une vue édit, et BINGO mon problème est réglé. Là je peux changer autant de colonnes que je veux avant d'appuyer sur SAVE et là ça passe. Donc sur le site web je vais simplement enlever la possibilité de mettre les colonnes à jour dans la vue ''Modal'' et forcer l'utilisateur à utiliser la vue Édit. C'est triste car c'était pratique de pouvoir utiliser la vue "Modal" pour les Édit mais pour être logique et pour ne pas que l'utilisateur soit mélangé, les Édits se feront dorénavent uniquement que dans une fenêtre Édit et interdits dans la fenêtre "Modal"... Et là je me sauve beaucoup de travail.

    Citation Envoyé par fsmrel Voir le message
    La vue MANUFACTURER_V ne concerne que les manufacturiers, c’est pour cela qu’elle a été créée.



    Là, je suis d’accord, la vue MANUFACTURER_V concerne aussi bien les manufacturiers de camions que les manufacturiers de pièces.



    Le plus simple est de mettre en oeuvre une table TRUCK_MANUFACTURER dédiée aux manufacturiers de camions :



    Partant de là, on crée une vue TRUCK_MANUFACTURER_V dédiée aux manufacturiers de camions, et au besoin une vue COMPONENT_MANUFACTURER_V, permettant de connaître les manufacturiers qui ne fabriquent pas de camions, tel Timken par exemple.

    Votre avis ?
      0  0

  3. #1003
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Je vais donc attendre que vous ayez mis à jour votre base de données avec la nouvelle table et la nouvelle vue pour créer les combo box et ça devrait en principe fonctionner puisqu'ils n'apparaîtront plus dans les vues "Modal" sur le site WEB" mais uniquement dans les vues "Édit"
      0  0

  4. #1004
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Bonjour fsmrel

    Vous avez défini comme convention de rajouter un " _V" au nom des Vues. Par contre ce ne sont pas toutes les vues qui ont un "_V" dans leur nom… Et ce ne seront surement pas toutes les vues qui seront utiles sur le site WEB. Par contre ça devient difficile pour moi de déterminer quelles vues inclure sur le site WEB et quelles vues ne pas inclure… Nous ne pourrions pas ajouter un "_W" au lieu d'un " _V" aux vues que vous voulez que j'inclus dans le site WEB ? Ça me simplifierait beaucoup la tâche et je n'aurais pas besoin de toujours vous le demander. Je me perds
      0  0

  5. #1005
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil
    Je vais donc attendre que vous ayez mis à jour votre base de données avec la nouvelle table et la nouvelle vue pour créer les combo box et ça devrait en principe fonctionner puisqu'ils n'apparaîtront plus
    Bien. DZINDZIO_TRUCKS_MANAGEMENT_TEMP est maintenant à niveau par rapport à ce qui suit.


    (1) On crée la table TRUCK_MANUFACTURER :

    CREATE TABLE TRUCK_MANUFACTURER 
    (
            ManufacturerId   INT             NOT NULL
        , CONSTRAINT TRUCK_MANUFACTURER_PK PRIMARY KEY (ManufacturerId)
        , CONSTRAINT TRUCK_MANUFACTURER_CONTACT_FK FOREIGN KEY (ManufacturerId) 
              REFERENCES  MANUFACTURER (ManufacturerId) ON DELETE CASCADE
    ) 
    ;
    

    (2) On charge cette table à partir de la table TRUCK_MODEL :

    INSERT INTO TRUCK_MANUFACTURER
        SELECT DISTINCT TruckManufacturerId FROM TRUCK_MODEL 
    ;
    

    (3) On remplace la clé étrangère dans TRUCK_MODEL :

    ALTER TABLE TRUCK_MODEL DROP CONSTRAINT TRUCK_MODEL_MANUFACTURER_FK
    ;
    ALTER TABLE TRUCK_MODEL ADD CONSTRAINT TRUCK_MODEL_MANUFACTURER_FK FOREIGN KEY (TruckManufacturerId)
        REFERENCES TRUCK_MANUFACTURER (ManufacturerId)  
    ;  
    

    (4) On crée la vue TRUCK_MANUFACTURER_V :

    
    CREATE VIEW TRUCK_MANUFACTURER_V 
    (
       HeadQuartersName, ContactName
     , CivicNumber, StreetName, City, Province, PostalCode
     , PhoneNumber, WattLine, FaxNumber, CellNumber
     , WebSite, FirstContactName
    )
    AS
     SELECT t.ContactName, x.ContactName
          , x.CivicNumber, x.StreetName, x.City, x.Province, x.PostalCode
          , x.PhoneNumber, x.WattLine, x.FaxNumber, x.CellNumber
          , x.WebSite, x.FirstContactName  
     FROM   CONTACT as x    
       JOIN MANUFACTURER AS y ON x.ContactId = y.ManufacturerId
       JOIN HEADQUARTERS as z ON z.HeadquartersId = y.HeadquartersId
       JOIN CONTACT AS t ON t.ContactId = z.HeadquartersId
       JOIN TRUCK_MANUFACTURER AS u ON u.ManufacturerId = y.ManufacturerId
     ;
    

    (5) On recrée la vue MANUFACTURER_V qui subit une légère mordication pour la prise en compte d’une nouvelle colonne ManufacturerCategory, prenant soit la valeur 'Truck' pour les manufacturiers fournissant des camions (et des composants), soit la valeur 'Component' (valeur par défaut) pour les manufacturiers ne fournissant que des composants.

    CREATE VIEW MANUFACTURER_V 
    (
       HeadQuartersName, ContactName
     , ManufacturerCategory
     , CivicNumber, StreetName, City, Province, PostalCode
     , PhoneNumber, WattLine, FaxNumber, CellNumber
     , WebSite, FirstContactName
    )
    AS
     SELECT t.ContactName, x.ContactName
          , "ManufacturerCategory" =
             CASE 
                 WHEN  x.ContactName IN (SELECT ContactName 
                                         FROM   TRUCK_MANUFACTURER_V)
                     THEN 'Truck'                                                      
                 ELSE 'Component'
             END
          , x.CivicNumber, x.StreetName, x.City, x.Province, x.PostalCode
          , x.PhoneNumber, x.WattLine, x.FaxNumber, x.CellNumber
          , x.WebSite, x.FirstContactName
     FROM   CONTACT AS x JOIN MANUFACTURER AS y ON x.ContactId  = y.ManufacturerId
                         JOIN HEADQUARTERS as z ON z.HeadquartersId = y.HeadquartersId
                         JOIN CONTACT AS t ON t.ContactId = z.HeadquartersId
     ;
    

    (6) On aménage le trigger MANUFACTURER_INSERT_TR en conséquence. Ce trigger met à jour non seulement les tables CONTACT et MANUFACTURER, mais aussi la table TRUCK_MANUFACTURER quand la colonne ManufaturerCategory prend la valeur 'Truck'.


    (7) Un début de jeu d’essai :

    -----------------------------------------------------------
    -- Timkem-Detroit ne fournit que des composants
    -- Si la colonne ManufacturerCategory n’est pas renseignée,
    -- par défaut elle prend la valeur 'Component'.
    -----------------------------------------------------------
    INSERT INTO MANUFACTURER_V (ContactName, HeadQuartersName)
        VALUES ('Timkem-Detroit', 'Timkem')
    ;
    -------------------------------------------------------
    -- Detroit Diesel fournit en plus des camions : 
    -------------------------------------------------------
    INSERT INTO MANUFACTURER_V (ContactName, HeadQuartersName, ManufacturerCategory)
        VALUES ('Detroit Diesel', 'Daimler', 'Truck')
    ;
    
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      2  0

  6. #1006
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Detroit ne fournit pas de camions, Detroit fournit des composants de camions…et des pièces...



    Citation Envoyé par fsmrel
    Detroit Diesel fournit en plus des camions :
      0  0

  7. #1007
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil
    Nous ne pourrions pas ajouter un "_W" au lieu d'un " _V" aux vues que vous voulez que j'inclus dans le site WEB ?
    Je ne sais pas quelles sont les vues que utilisez pour le WEB ! Il n’y a que vous pour savoir ça de façon précise...

    Par ailleurs, certaines vues sont utilisées par d’autres vues/triggers/procédures, difficile donc de repérer ça. On utiliserait DB2 for z/OS, je pourrais m’appuyer sur ses propres tables, mais avec SQL Server c’est râpé...


    Citation Envoyé par ordigil
    Detroit ne fournit pas de camions, Detroit fournit des composants de camions…et des pièces...
    C’est bien possible, mais il s’agit ici d’un jeu d’essai pour tester les vues et les triggers, les vraies valeurs peuvent évidemment être totalement différentes.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

  8. #1008
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Quel immense travail vous faites fsmrel et avec autant de rigueur qu'au début. Je suis gêné. Bravo à vous, je suis bouche bé
      1  0

  9. #1009
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Si je regarde la vues COMPONENT MODEL V....En quoi serait elle nécessaire sur le site web puisque les vues MOTEUR_COMPOSANT_V, TRANSMISSION_COMPOSANT_V, AXLE_COMPOSANT_V ET DIFFERENTIAL_COMPOSANT_V gère cette vue ? Je dois enlever le maximum de vues qui ne seront pas utilisées car il ne sert à rien que je crée un formulaire pour des vues que l'utilisateur n'utilisera pas.... Peut-être même que je devrai créer une vue à partir d'autres vues. Disons que l'utilisateur achète un nouveau camion.... Il serait plus facile d'avoir un formulaire dans lequel il entrera le Vendeur, bon si le venmdeur n'exite pas dans la table CONTACT, il faudra que je lui donne une façon de le créer sans interrompre son processus de création du nouveau camion. Ensuite viendront le minimum... Soit la date d'achat, le moteur, la transmission, les essieux, les différentiels, le manufacturier du camion, le modèle, la couleur, le VIN. Je ne pourrai pas lui demander de créer tous les composants avant la création du camion mais pendant la création du camion. Et là, ça fait beaucoup de chose à penser pour la création de ce formulaire et assez compliqué à réaliser aussi.... Presque la totalité des vues seront impliquées.... mais je dois aussi les imbriquer dans un seul formulaire et donner la possibilité de corriger les erreurs lors de la créations si l'utilisateur réalise qu'il en a fait une.... Et là, je ne suis pas un expert....il y a beaucoup de vues en jeu. C'est pour ça que les vues non nécessaires pour la création d'un nouveau camion ne doivent pas être inclusent sur le site WEB dans un premier temps, du moins pas avant que je puisse réaliser une façon de créer un camion en entier à l'aide d'un seule formulaire. Ne pas oublier que même si des vues ne font pas parti du site web, PHP peut s'adresser quand même à ces vues. PHP peut s'adresser sur des tables et des vues qui sont sur d'autres serveurs aussi de la même façon que vous et moi et de façon transparente pour l'utilisateur... L'usager lui ne voudra pas utiliser plusieurs vues pour créer un camion, il voudra créer un camion à l'aide d'un seul formulaire....


    Citation Envoyé par fsmrel Voir le message
    Je ne sais pas quelles sont les vues que utilisez pour le WEB ! Il n’y a que vous pour savoir ça de façon précise...

    Par ailleurs, certaines vues sont utilisées par d’autres vues/triggers/procédures, difficile donc de repérer ça. On utiliserait DB2 for z/OS, je pourrais m’appuyer sur ses propres tables, mais avec SQL Server c’est râpé...




    C’est bien possible, mais il s’agit ici d’un jeu d’essai pour tester les vues et les triggers, les vraies valeurs peuvent évidemment être totalement différentes.
      0  0

  10. #1010
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil Voir le message
    Si je regarde la vues COMPONENT MODEL V....En quoi serait elle nécessaire sur le site web puisque les vues MOTEUR_COMPOSANT_V, TRANSMISSION_COMPOSANT_V, AXLE_COMPOSANT_V ET DIFFERENTIAL_COMPOSANT_V gère cette vue ?
    Les 4 vues MOTEUR_COMPOSANT_V, TRANSMISSION_COMPOSANT_V, AXLE_COMPOSANT_V et DIFFERENTIAL_COMPOSANT_V ne gèrent pas la vue COMPONENT_MODEL_V. Elles font seulement référence (en consultation) à la table COMPONENT_MODEL, elles ne la mettent pas à jour, contrairement à COMPONENT_MODEL_V.


    Prenons par exemple le cas du moteur. La vue pour créer, modifier, supprimer un moteur fait l’objet de l’instruction suivante :

    CREATE VIEW MOTEUR_COMPOSANT_V (SerialNumber, MfgDate, PurchaseDate, SaleDate
                                  , Manufacturer, Model
                                  , MaxHorsePower, EngineMaxRPM, EngineMaxTorque) 
    AS
    SELECT MoteurNumeroSerie, ComposantDateMfg, ComposantDateAchat, ComposantDateVente
         , ContactName, ComponentModelName
         , MaxHorsePower, MoteurMaxRPM, MoteurMaxTorque 
    FROM   COMPOSANT AS x JOIN MOTEUR AS y ON x.ComposantId = y.ComposantId
                          JOIN COMPONENT_MODEL AS z ON x.ComponentManufacturerId = z.ComponentManufacturerId
                                                   AND x.ComponentModelId = z.ComponentModelId
                          JOIN CONTACT AS t ON x.ComponentManufacturerId = t.ContactId   
    ;
    
    La création d’un moteur est effectuée au moyen du trigger MOTEUR_COMPOSANT_INSERT_TR, lequel effectue deux opérations :

    (1) INSERT dans la table MOTEUR avec le numéro de série du moteur, le Max Horse Power, le Max RPM et Max Torque. L’utilisateur fournit obligatoirement le numéro de série du moteur, pour le reste c’est facultatif.

    (2) INSERT dans la table COMPOSANT avec la date de fabrication du composant (le moteur), sa date d’achat et sa date de vente, ainsi que le modèle de référence et son manufacturier. Les dates sont facultatives, mais le modèle et le manufacturier sont obligatoires. En cas de nécessité, on pourrait les rendre facultatifs avec une valeur par défaut du genre « inconnu » « en attente »ou autre.

    Ainsi, il n’y a pas ici de gestion de la vue COMPONENT_MODEL_V.


    Citation Envoyé par ordigil Voir le message
    Je dois enlever le maximum de vues qui ne seront pas utilisées car il ne sert à rien que je crée un formulaire pour des vues que l'utilisateur n'utilisera pas.
    Pour reprendre l’exemple précédent, l’utilisateur en cause ne gère pas des modèles de composants et il n’a pas besoin de la vue COMPONENT_MODEL_V, c’est d’accord. En revanche, pour l’aider, il a besoin d’une combo des modèles, et on peut mettre en ouvre une vue ad-hoc. Par contre il est une catégorie d’utilisateurs, chargés de créer les modèles : ces utilisateurs particuliers ont besoin de la vue COMPONENT_MODEL_V. Se servent-ils en l’occurrence du WEB ? Si oui, se pose à vous un problème de présentation des formulaires (impliquant les vues) en fonction de la typologie des utilisateurs.


    Citation Envoyé par ordigil Voir le message
    Je ne pourrai pas lui demander de créer tous les composants avant la création du camion mais pendant la création du camion.
    Ça n’est plus un problème de base de données, mais d’organisation de l’enchaînement des tâches. Par exemple mettre en oeuvre une procédure assistant l’utilisateur, le pilotant pour créer les composants, puis les affecter au camion.


    Citation Envoyé par ordigil Voir le message
    je dois aussi les imbriquer dans un seul formulaire et donner la possibilité de corriger les erreurs lors de la créations si l'utilisateur réalise qu'il en a fait une....
    Pourquoi un seul formulaire si on part sur une procédure du genre de ce que je viens d’évoquer ? C’est comme pour boire un bon alcool : mieux vaut plusieurs petits coups qu’un seul grand coup...


    Citation Envoyé par ordigil Voir le message
    C'est pour ça que les vues non nécessaires pour la création d'un nouveau camion ne doivent pas être incluses sur le site WEB
    On en revient à l’organisation du web en fonction de la typologie des utilisateurs.


    Citation Envoyé par ordigil Voir le message
    L'usager lui ne voudra pas utiliser plusieurs vues pour créer un camion, il voudra créer un camion à l'aide d'un seul formulaire....
    Fonctionnellement sans doute, mais concrètement on en revient au problème du pilotage de l’utilisateur. Supposons par exemple qu’il faille à la fois affecter le moteur, la transmission, tous les essieux sans oublier d’affecter les différentiels à ces essieux, ça devient un peu compliqué, vu le nombre d’attributs dont il faut saisir les valeurs.

    Pour y voir plus clair voici la partie essentielle, les vues impliquées, auxquelles il faudrait ajouter des vues « combos » pour que l’utilisateur puisse par exemple choisir les modèles de camions, de composants.



    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      3  0

  11. #1011
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Il y a encore plus que votre schéma qui est impliqué dans la création d'un nouveau camion. Si je ne demande pas à l'utilisateur d'entrer le vendeur du camion lors de la création d'un nouveau camion, ce camion ne sera jamais référencé par un vendeur. Il n'y a rien qui m'interdit dans le formulaire de création d'un nouveau camion d'ouvrir un sous formulaire pour la création du moteur, transmission, etc mais c'est vraiment compliqué à mettre en oeuvre justement à cause de toutes les vues impliquées. Et là, SQL Server me joue la comédie du Insert impossible car il y a plus qu'une table d'impliquée. Ça prendrait un méchant trigger pour régler tout ça. Donc je vais devoir utiliser intensivement du JScript pour automatiser tout ça et rendre le tout transparent à l'utilisateur final. Donc pour la création d'un nouveau camion, il faudra entrer la "Date de fabrication du Camion, Date d'achat du Camion, Vendeur, VIN, Moteur, Transmission, Essieux, Différentiels. Je demanderai au JScript de mettre automatiquement la date de fabrication et d'installation des Moteurs, Transmissions, etc à la date de fabrication du Camion et à la date d'achat du Camion entrer par l'utilisateur. Arrivée aux Composants sur le formulaire il faudra un sous formulaire pour créer le moteur, un sous formulaire pour la transmission, etc. Le but c'est qu'à la création d'un nouveau camion que le minimum d'informations soit crée, d'avoir un camion complet dans une seule passe. Mais c'est énorme…..
      0  0

  12. #1012
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Si je fais ça :

    
    USE [DZINDZIO_TRUCKS_MANAGEMENT_GILLES]
    GO
    
    INSERT INTO [dbo].[MOTEUR_COMPOSANT_V]
               ([SerialNumber]
               ,[MfgDate]
               ,[PurchaseDate]
               ,[Manufacturer]
               ,[Model]
               ,[MaxHorsePower]
               ,[EngineMaxRPM]
               ,[EngineMaxTorque])
         VALUES
               ('ALLOTOI'
               ,'2018-12-31'
               ,'2019-01-09'
               ,'Madeleine'
               ,'Vampirella'
               ,650
               ,2100
               ,1850)
    GO
    
    
    Là c'est impossible puisque le Manufacturier n'existe pas dans la vue MANUFACTURER_V. Il faut donc dans le combobox de Manufacturer que l'utilisateur puisse créer 'Madeleine' dans MANUFACTURER_V mais aussi le Headquarters… Ce sera la même chose avec le combobox Model 'Vampirella'... Beaucoup de nuits blanches en perspective pour la création du site WEB. Là je vais devoir créer des Combobox Cascade Dynamique… Ça ne se règle pas uniquement à l'aide de combox cascade dynamique :-( :-( :-( Le combobox devra ouvrir un formulaire pour la création des headquarters, manufacturer, model. Ça fait beaucoup à gérer. Et il faut que le site WEB soit à la hauteur de la Base de Données, vous y êtes allé à fond alors le site web doit vous faire honneur hahaha
      0  0

  13. #1013
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil Voir le message
    Il y a encore plus que votre schéma qui est impliqué dans la création d'un nouveau camion. Si je ne demande pas à l'utilisateur d'entrer le vendeur du camion lors de la création d'un nouveau camion, ce camion ne sera jamais référencé par un vendeur.
    Autrement dit, la règle de gestion est la suivante :

    « Quel que soit le camion, on doit savoir à qui il a été acheté ».

    Dans ces conditions, je modifie la vue CAMION_LOCALISATION_V en sorte qu’y figure le nom du vendeur (colonne Seller). Si l’utilisateur fournit ce nom, alors le trigger CAMION_LOCALISATION_INSERT_TR mettra à jour la table CONTACT (colonne ContactName := nom du vendeur, type de contact = 'Anonymous') :

    CREATE VIEW CAMION_LOCALISATION_V
        (
           VIN, Number, Immat
         , DateMfg, DateAchat, DateSold
         , Manufacturer, Model
         , Seller
         , ContactType
         , WheelBase, Color
         , USDOT, ICCMC, GVWR
         , Note
        )
    AS
        SELECT CamionVIN, CamionNumber, CamionImmat
             , CamionDateMfg, CamionDateAchat, CamionDateVente
             , t.ContactName, TruckModelName
             , COALESCE(v.ContactName, '-')
             , COALESCE(ContactTypeName, '-')
             , CamionWheelBase, CamionColor        
             , USDOT, ICCMC, GVWR
             , LocalisationNote
        FROM   CAMION AS x JOIN LOCALISATION AS y ON x.CamionId = y.LocalisationId
                           JOIN TRUCK_MODEL AS z ON x.TruckManufacturerId = z.TruckManufacturerId 
                                                AND x.TruckModelId = z.TruckModelId
                           JOIN CONTACT AS t ON z.TruckManufacturerId = t.ContactId
                           LEFT JOIN TRUCK_PURCHASE As u ON u.truckid = x.CamionId
                           LEFT JOIN CONTACT AS v ON v.ContactId = u.ContactId
                           LEFT JOIN CONTACT_TYPE as w ON w.ContactTypeId = v.ContactTypeId
    ;
    
    Aménagement du trigger CAMION_LOCALISATION_INSERT_TR :

    Si le nom du vendeur est fourni dans l’INSERT portant sur la vue CAMION_LOCALISATION_V et si ce nom n'existe pas dans la table CONTACT (colonne ContactName), on l'insère dans la table CONTACT avec le type 'Anonymous'. Dans tous les cas, si le nom du vendeur est fourni on met à jour la table TRUCK_PURCHASE. Si le nom du vendeur n’est pas fourni dans l’INSERT portant sur la vue CAMION_LOCALISATION_V, on ne met à jour ni la table CONTACT ni la table TRUCK_PURCHASE (dans ce dernier cas, on met quand même à jour la table CAMION, mais peut-être préféreriez-vous qu’on ne le fasse pas et qu’à la place on se contente d’afficher un message d’erreur ?)


    Exemple :

    L’utilisateur crée le camion de VIN 'vin01' et propose 'Dubicobit' en tant que vendeur. Celui-ci n’existe pas en tant que contact, on le crée dans la table CONTACT et on met à jour la table TRUCK_PURCHASE.

    L’utilisateur crée le camion de VIN 'vin02' et propose 'Dubicobit' en tant que vendeur. Celui-ci existe déjà en tant que contact, on se limite à la mise à jour de la table TRUCK_PURCHASE.

    L’utilisateur crée le camion de VIN 'vin03' et ne propose pas de vendeur. On ne touche ni à la table CONTACT ni à la table TRUCK_PURCHASE.

    Jeu d’essai :

    INSERT INTO CAMION_LOCALISATION_V (VIN, Immat, DateAchat
                                     , Manufacturer, Model, Number
                                     , Seller)
        SELECT 'vin01', 'immat01', '2012-07-01'
             , 'Leclerc Manufacturier', 'Modèle Bozo',  '314' 
             , 'Dubicobit'
    ;
    
    INSERT INTO CAMION_LOCALISATION_V (VIN, Immat, DateAchat
                                     , Manufacturer, Model, Number
                                     , Seller
                                     , Color, Note)
        SELECT 'vin02', 'immat02', '2015-07-05'
             , 'Leclerc Manufacturier', 'Modèle Mac Pherson',  '324'
             , 'Dubicobit'
             , 'fraise', 'Mon beau camion à moi'
    ;
    
    INSERT INTO CAMION_LOCALISATION_V (VIN, Immat, DateAchat
                                     , Manufacturer, Model, Number
                                     , Color, Note)
        SELECT 'vin03', 'immat03', '2016-04-01'
             , 'Leclerc Manufacturier', 'Modèle Petit Pierre',  '330' 
             , 'jaune', 'dur à vendre !'
    ;
    ;
    
    =>

    Table CAMION

    CamionId    CamionVIN    ...
    --------    ---------    ---
    1910        vin01        ...
    1911        vin02        ...
    1912        vin03        ...
    
    Vue CAMION_LOCALISATION_V

    VIN      Number    Seller      SellerType    ...
    ---      -----     -----       ----------    ---
    vin01    314       Dubicobit   Anonymous     ...
    vin02    324       Dubicobit   Anonymous     ...
    vin03    330       –           –
    
    Table CONTACT

    ContactId    ContactName    ContactTypeId    ...
    ---------    -----------    -------------    ---
    1347         Dubicobit      4                ...
    
    Table TRUCK_PURCHASE

    TruckId    ContactId
    -------    ---------
    1910       1347
    1911       1347
    
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      2  0

  14. #1014
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil Voir le message
    Si je fais ça :

    INSERT INTO [dbo].[MOTEUR_COMPOSANT_V]
               ([SerialNumber]
               ,[MfgDate]
               ,[PurchaseDate]
               ,[Manufacturer]
               ,[Model]
               ,[MaxHorsePower]
               ,[EngineMaxRPM]
               ,[EngineMaxTorque])
         VALUES
               ('ALLOTOI'
               ,'2018-12-31'
               ,'2019-01-09'
               ,'Madeleine'
               ,'Vampirella'
               ,650
               ,2100
               ,1850)
    
    Là c'est impossible puisque le Manufacturier n'existe pas dans la vue MANUFACTURER_V.
    En toute logique, le manufacturier et le modèle doivent déjà exister : au moment de l’INSERT, le trigger affiche donc un message d’erreur.

    Comme dans l’exemple du vendeur Dubicobit, cette fois-ci avec le trigger MOTEUR_COMPOSANT_INSERT_TR, au lieu de signaler une erreur, en modifiant ce trigger on pourrait créer Madeleine et Vampirella. Je trouve ça dangereux car en fait le manufacturier et le modèle peuvent peut-être déjà exister, à une faute d’orthographe près. Mais si c’est votre choix, je procéderai en conséquence à l’aménagement du trigger...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      2  0

  15. #1015
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Bonjour fsmrel, je vais être silencieux quelques jours. Je vais refaire la façon dont on crée un nouveau camion sur le site web...
      1  0

  16. #1016
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Non, je vais trouver une autre solution pour le site WEB Pour l'instant on a pas de Vue pour créer de nouveaux Contacts.


    Citation Envoyé par fsmrel Voir le message
    En toute logique, le manufacturier et le modèle doivent déjà exister : au moment de l’INSERT, le trigger affiche donc un message d’erreur.

    Comme dans l’exemple du vendeur Dubicobit, cette fois-ci avec le trigger MOTEUR_COMPOSANT_INSERT_TR, au lieu de signaler une erreur, en modifiant ce trigger on pourrait créer Madeleine et Vampirella. Je trouve ça dangereux car en fait le manufacturier et le modèle peuvent peut-être déjà exister, à une faute d’orthographe près. Mais si c’est votre choix, je procéderai en conséquence à l’aménagement du trigger...
      0  0

  17. #1017
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil Voir le message
    Pour l'instant on n’a pas de Vue pour créer de nouveaux Contacts.
    Pour les headquarters, manufacturiers et shops, on utilise les vues HEADQUARTERS_V, MANUFACTURER_V, SHOP_V. Pour les autres contacts (le tout-venant en quelque sorte), j’ai ajouté la vue CONTACT_QUELCONQUE_V :

    CREATE VIEW CONTACT_QUELCONQUE_V 
    (
       ContactName
     , ContactType
     , CivicNumber, StreetName, City, Province, PostalCode
     , PhoneNumber, WattLine, FaxNumber, CellNumber
     , WebSite, FirstContactName
    )
    AS
     SELECT x.ContactName
          , y.ContactTypeName
          , x.CivicNumber, x.StreetName, x.City, x.Province, x.PostalCode
          , x.PhoneNumber, x.WattLine, x.FaxNumber, x.CellNumber
          , x.WebSite, x.FirstContactName
     FROM   CONTACT AS x 
       JOIN CONTACT_TYPE AS y ON x.ContactTypeId = y.ContactTypeId ;
     GO
    
    Ses triggers :

    – CONTACT_QUELCONQUE_INSERT_TR
    – CONTACT_QUELCONQUE_UPDATE_TR
    – CONTACT_QUELCONQUE_DELETE_TR

    Un début de jeu d’essai :

    BEGIN TRANSACTION ;
    INSERT INTO CONTACT_QUELCONQUE_V (ContactName)
        SELECT 'Amédée Delafoy'
    ;
    INSERT INTO CONTACT_QUELCONQUE_V (ContactName)
        SELECT 'Patricia'
    ;
    INSERT INTO CONTACT_QUELCONQUE_V (ContactName)
        SELECT 'Antoine Delafoy'
    ; 
    UPDATE CONTACT_QUELCONQUE_V
        SET ContactName = 'Adolphe Amédée Delafoy' 
          , ContactType = 'manufACturer'
          , City = 'Marseille'
        WHERE ContactName = 'Amédée Delafoy'
    ;
    SELECT * FROM CONTACT_QUELCONQUE_V ORDER BY ContactName
    
    DELETE FROM CONTACT_QUELCONQUE_V WHERE ContactType = 'Anonymous'
    
    SELECT * FROM CONTACT_QUELCONQUE_V ORDER BY ContactName
    
    ROLLBACK ;
    
    J’ai mis à jour DZINDZIO_TRUCKS_MANAGEMENT_TEMP en conséquence.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      2  0

  18. #1018
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    Merci fsmrel

    C'est très difficile pour moi de concevoir le site web maintenant. Mais j'essaie toute sorte de choses hahaha. Il y a plusieurs façons de faire mais je n'ai pas encore trouvé la solution idéale :-(:-(:-(



    Citation Envoyé par fsmrel Voir le message
    Pour les headquarters, manufacturiers et shops, on utilise les vues HEADQUARTERS_V, MANUFACTURER_V, SHOP_V. Pour les autres contacts (le tout-venant en quelque sorte), j’ai ajouté la vue CONTACT_QUELCONQUE_V :

    CREATE VIEW CONTACT_QUELCONQUE_V 
    (
       ContactName
     , ContactType
     , CivicNumber, StreetName, City, Province, PostalCode
     , PhoneNumber, WattLine, FaxNumber, CellNumber
     , WebSite, FirstContactName
    )
    AS
     SELECT x.ContactName
          , y.ContactTypeName
          , x.CivicNumber, x.StreetName, x.City, x.Province, x.PostalCode
          , x.PhoneNumber, x.WattLine, x.FaxNumber, x.CellNumber
          , x.WebSite, x.FirstContactName
     FROM   CONTACT AS x 
       JOIN CONTACT_TYPE AS y ON x.ContactTypeId = y.ContactTypeId ;
     GO
    
    Ses triggers :

    – CONTACT_QUELCONQUE_INSERT_TR
    – CONTACT_QUELCONQUE_UPDATE_TR
    – CONTACT_QUELCONQUE_DELETE_TR

    Un début de jeu d’essai :

    BEGIN TRANSACTION ;
    INSERT INTO CONTACT_QUELCONQUE_V (ContactName)
        SELECT 'Amédée Delafoy'
    ;
    INSERT INTO CONTACT_QUELCONQUE_V (ContactName)
        SELECT 'Patricia'
    ;
    INSERT INTO CONTACT_QUELCONQUE_V (ContactName)
        SELECT 'Antoine Delafoy'
    ; 
    UPDATE CONTACT_QUELCONQUE_V
        SET ContactName = 'Adolphe Amédée Delafoy' 
          , ContactType = 'manufACturer'
          , City = 'Marseille'
        WHERE ContactName = 'Amédée Delafoy'
    ;
    SELECT * FROM CONTACT_QUELCONQUE_V ORDER BY ContactName
    
    DELETE FROM CONTACT_QUELCONQUE_V WHERE ContactType = 'Anonymous'
    
    SELECT * FROM CONTACT_QUELCONQUE_V ORDER BY ContactName
    
    ROLLBACK ;
    
    J’ai mis à jour DZINDZIO_TRUCKS_MANAGEMENT_TEMP en conséquence.
      0  0

  19. #1019
    Membre averti Avatar de ordigil
    Homme Profil pro
    Recherche et développement sur la protection de la vie privée.
    Inscrit en
    Juillet 2018
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Recherche et développement sur la protection de la vie privée.
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 695
    Points : 379
    Points
    379
    Par défaut
    C'est pas mon fort coder. Bravo à tous ceux qui en font un métier.



    <?php
    
        echo "<p>On Start le Chrono</p>\n";
        $start = microtime(true);
    
        $serverName = "192.168.2.10,1433";
        $database = "DZINDZIO_TRUCKS_MANAGEMENT_GILLES";
        $table = 'CONTACT_QUELCONQUE_V';
        $Col = 'ContactName';
        $ContactName = 'Dzindzio Shop';
    
        try {
            
            $conn = new PDO(
                "sqlsrv:server=$serverName;Database=$database",
                '',
                '',
                array(
                    //PDO::ATTR_PERSISTENT => true,
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
                )
            );
        }
        catch(PDOException $e) {
            die("Error connecting to SQL Server: " . $e->getMessage());
        }
    
        echo "<p>Connected to SQL Server</p>\n";
    
        echo "<p>PDO::ATTR_PERSISTENT value:</p>\n";
    
        echo "<pre>";
        echo var_export($conn->getAttribute(PDO::ATTR_PERSISTENT), true);
        echo "</pre>";
    
        echo "<p>PDO::ATTR_DRIVER_NAME value:</p>\n";
    
        echo "<pre>";
        echo var_export($conn->getAttribute(PDO::ATTR_DRIVER_NAME), true);
        echo "</pre>";
    
        echo "<p>PDO::ATTR_CLIENT_VERSION value:</p>\n";
    
        echo "<pre>";
        echo var_export($conn->getAttribute(PDO::ATTR_CLIENT_VERSION), true);
        echo "</pre>";
    
        echo "<p>Résultat de la requête de : $table</p>\n";
    
        $query = "SELECT * FROM $table WHERE $Col = '$ContactName'";
        $stmt = $conn->query( $query );
    
        echo "<pre>";
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
        {
            print_r($row);
        }
        echo "</pre>";
    
      
        echo "J'veux voir le Chrono, J'veux voir le Chrono, J'veux voir le Chrono <br/>";
        echo "Hé ben c'est le temps que prend cette requête = " . (microtime(true) - $start).' seconds.' . " C'est pas si mal pour mon vieux dinausore Toshina. <br>";
    
    
        // On fait sûr qu'on s'déplug.
        $stmt = null;
        $conn = null;
    ?>
    Pièce jointe 463082
      0  0

  20. #1020
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par ordigil
    C'est pas mon fort coder
    Comme je ne connais strictement rien à PHP, je ne suis pas en mesure de juger du code, mais en tout cas le résultat pour « Dzindzio Shop » est conforme.


    Citation Envoyé par ordigil
    Pour l'instant je me frappe souvent le nez sur des "Impossible de mettre à jour car votre requête comporte plusieurs tables."
    Comme je l’ai déjà dit, tous les triggers ne sont pas en place : précisez ceux qui doivent l’être en priorité, je m’en « occupationnerai » comme disait Clémenceau à quelqu’un qui l’interpellait ainsi : « Il faudrait solutionner ce problème ».
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
      1  0

Discussions similaires

  1. Ajout dans une table et relation avec d'autres
    Par climz dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 15h32
  2. Création table et relations
    Par ptitdragon_eric dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/09/2005, 13h37
  3. table de relation
    Par tanjonaravelson dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/06/2005, 18h20
  4. Table de relation et sélection via jointure
    Par 73672 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 09/11/2004, 09h33
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

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