Bonjour Ordigil,
Je vais m'en occuper, mais il faut que je commence par mettre à jour les structures des tables et que je crée un jeu d'essai pour vérifier.
Patience...
Bonjour Ordigil,
Je vais m'en occuper, mais il faut que je commence par mettre à jour les structures des tables et que je crée un jeu d'essai pour vérifier.
Patience...
(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.
On ne va pas peut-être pas tarder à mettre les mains dans le cambouis...
En attendant, pour reprendre le MLD du post #490, la structure de la table DIFFERENTIAL (cf. ci-dessous) est de type intemporel : si on modifie le ratio d’un différentiel, le nouveau ratio remplace purement et simplement l’ancien ratio, même chose pour les autres attributs.
Est-ce ainsi que vous comptez gérer les ratios, ou bien faut-il les historiser ?
Dans cette table, quels sont les attributs invariants et, outre le ratio, quels sont ceux pouvant être sujets à des modifications dans le temps et, dans ces conditions, que vous souhaitez historiser ?
A quoi correspond l'attribut Serie (DiffSerie) ?
(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.
Il n'y a que le ratio qui pourrait changer mais il est plus avantageux de changer le différentiel pour un autre qui a le ratio que l'on désire et si nous changeons le ratio du différentiel, le numéro de série ne voudra plus dire grand chose…..….… À la limite s'il n'est pas lock, on pourrait le rendre lock mais nous ne le ferons pas… Non pas besoin d'historiser les ratios…. Ce n'est pas le ratio du différentiel que nous changerons mais poserons un différentiel avec un ratio différent dans l'essieu…. Series c'est : hmmmmm…. Disons que je suis un manufacturier de différentiel… Je fabrique différentes séries, genre : SDFR123, RTU789 et BGY777 ce ne sont pas des numéros de séries. Disons SDFR123 pour camion forestiers, RTU789 avec planétaire et BGY777 pour camion highway…
D’accord, quel que soit l’attribut de la table DIFFERENTIAL, d’un point de vue fonctionnel, il n’y a aucune historisation : les modifications ne pourront donc correspondre qu’à la correction d’erreurs de saisie et autres besoins de ce genre.
En ce qui concerne la table AXLE ci-dessous, la liste des attributs est-elle complète ? D’un point de vue fonctionnel, y a-t-il des attributs sujets à historisation ?
(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.
Soit ! Le tableau du post #470 est donc à mettre à jour.
Cet ajout rend-il caduque l’attribut DiffTorque de la table DIFFERENTIAL ?
Par ailleurs, je répète, d’un point de vue fonctionnel, y a-t-il des attributs de la table AXLE sujets à historisation ? Ou bien les considère-t-on tous comme invariants ?
(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.
Je suppose que pour les différentiels il s’agit du forward et du rear.
On peut commencer par créer des vues pour chaque type de composant. Dans ces vues, on ne s’intéresse qu’aux composants les plus récents, d’où un GROUP BY LocalisationId et la fonction MAX associée : MAX(ComposantInstallationDate).
Pour les moteurs :
--------------------------------------------------------------- -- Les moteurs par camion --------------------------------------------------------------- go CREATE VIEW CAMION_MOTEUR_V (CamionVIN, CamionNumber, MoteurNumeroSerie, MoteurInstallationDate) AS SELECT CamionVIN, CamionNumber, MoteurNumeroSerie, MoteurInstallationDate FROM (SELECT LocalisationId, MAX(ComposantInstallationDate) AS MoteurInstallationDate FROM CAMION AS x JOIN COMPOSANT_AFFECTATION AS y ON x.CamionId = y.LocalisationId JOIN MOTEUR AS z ON y.ComposantId = z.ComposantId -- pour ne considérer que les moteurs GROUP BY LocalisationId ) AS x JOIN CAMION AS y ON x.LocalisationId = y.CamionId JOIN COMPOSANT_AFFECTATION AS z ON x.LocalisationId = z.LocalisationId AND MoteurInstallationDate = ComposantInstallationDate JOIN MOTEUR AS t ON z.ComposantId = t.ComposantId go SELECT '' AS CamionMoteur, * FROM CAMION_MOTEUR_V ;
Pour les transmissions :
--------------------------------------------------------------- -- Les transmissions par camion --------------------------------------------------------------- go CREATE VIEW CAMION_TRANSMISSION_V (CamionVIN, CamionNumber, TransmissionNumeroSerie, TransmissionInstallationDate) AS SELECT CamionVIN, CamionNumber, TransmissionNumeroSerie, TransmissionInstallationDate FROM (SELECT LocalisationId, MAX(ComposantInstallationDate) AS TransmissionInstallationDate FROM CAMION AS x JOIN COMPOSANT_AFFECTATION AS y ON x.CamionId = y.LocalisationId JOIN TRANSMISSION AS z ON y.ComposantId = z.ComposantId -- pour ne considérer que les transmissions GROUP BY LocalisationId ) AS x JOIN CAMION AS y ON x.LocalisationId = y.CamionId JOIN COMPOSANT_AFFECTATION AS z ON x.LocalisationId = z.LocalisationId AND TransmissionInstallationDate = ComposantInstallationDate JOIN TRANSMISSION AS t ON z.ComposantId = t.ComposantId go SELECT '' AS CamionTransmission, * FROM CAMION_TRANSMISSION_V ;
Pour les différentiels (type forward) :
---------------------------------------------------------------- -- Les différentiels forward par camion ---------------------------------------------------------------- go CREATE VIEW CAMION_FORWARD_V (CamionVIN, CamionNumber, ForwardNumeroSerie, ForwardInstallationDate) AS SELECT CamionVIN, CamionNumber, DiffSerialNumber AS ForwardNumeroSerie, DiffInstalDate AS ForwardInstallationDate FROM (SELECT LocalisationId, MAX(ComposantInstallationDate) AS AxleInstallationDate FROM CAMION AS x JOIN COMPOSANT_AFFECTATION AS y ON x.CamionId = y.LocalisationId JOIN AXLE AS z ON y.ComposantId = z.ComposantId -- pour ne considérer que les essieux GROUP BY LocalisationId ) AS x JOIN CAMION AS y ON x.LocalisationId = y.CamionId JOIN COMPOSANT_AFFECTATION AS z ON x.LocalisationId = z.LocalisationId AND AxleInstallationDate = ComposantInstallationDate JOIN AXLE AS t ON z.ComposantId = t.ComposantId JOIN DIFF_AXLE AS u ON t.ComposantId = u.AxleId JOIN DIFFERENTIAL AS v ON u.DiffId = v.DiffId WHERE DiffType = 'w' ; go SELECT '' AS CamionForward, * FROM CAMION_FORWARD_V ;
Pour les différentiels (type rear) :
---------------------------------------------------------------- -- Les différentiels rear par camion ---------------------------------------------------------------- go CREATE VIEW CAMION_REAR_V (CamionVIN, CamionNumber, RearNumeroSerie, RearInstallationDate) AS SELECT CamionVIN, CamionNumber, DiffSerialNumber AS ReardNumeroSerie, DiffInstalDate AS RearInstallationDate FROM (SELECT LocalisationId, MAX(ComposantInstallationDate) AS AxleInstallationDate FROM CAMION AS x JOIN COMPOSANT_AFFECTATION AS y ON x.CamionId = y.LocalisationId JOIN AXLE AS z ON y.ComposantId = z.ComposantId -- pour ne considérer que les essieux GROUP BY LocalisationId ) AS x JOIN CAMION AS y ON x.LocalisationId = y.CamionId JOIN COMPOSANT_AFFECTATION AS z ON x.LocalisationId = z.LocalisationId AND AxleInstallationDate = ComposantInstallationDate JOIN AXLE AS t ON z.ComposantId = t.ComposantId JOIN DIFF_AXLE AS u ON t.ComposantId = u.AxleId JOIN DIFFERENTIAL AS v ON u.DiffId = v.DiffId WHERE DiffType = 'r' ; go SELECT '' AS CamionRear, * FROM CAMION_REAR_V ;
Pour ce que vous recherchez, on crée la vue suivante, jointure des vues précédentes :
------------------------------------------------------------------------ -- Vue générale ------------------------------------------------------------------------ GO CREATE VIEW CAMION_COMPOSITION_V (CamionVIN, CamionNumber, MoteurNumeroSerie, TransmissionNumeroSerie , DifferentielNumeroSerie_F, DifferentielNumeroSerie_R) AS SELECT x.CamionVIN, x.CamionNumber , COALESCE(MoteurNumeroSerie, '??') AS MoteurNumeroSerie , COALESCE(TransmissionNumeroSerie, '??') AS TransmissionNumeroSerie , COALESCE(ForwardNumeroSerie, '??') AS ForwardNumeroSerie , COALESCE(RearNumeroSerie, '??') AS RearNumeroSerie FROM CAMION AS x FULL JOIN CAMION_MOTEUR_V AS y ON x.CamionVIN = y.CamionVIN FULL JOIN CAMION_TRANSMISSION_V AS z ON x.CamionVIN = z.CamionVIN FULL JOIN CAMION_FORWARD_V AS t ON x.CamionVIN = t.CamionVIN FULL JOIN CAMION_REAR_V AS u ON x.CamionVIN = u.CamionVIN ; GO SELECT '' AS CamionComposition, * FROM CAMION_COMPOSITION_V ;
Je compléterai les vues CAMION_FORWARD_V et CAMION_REAR_V, car si j’ai traité du moteur le plus récent pour chaque camion, ainsi que de la transmission et des essieux les plus récents, je ne l’ai pas encore fait pur les différentiels. Mais vous pouvez commencer à voir ce que cela donne de votre côté.
J'ai remis à plat les bases de données temp et DZINDZIO_TRUCKS_MANAGEMENT_TEMP.
(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.
Wowwww merci fsmrel….. Cette vue sera très appréciée par l'utilisateur.
Envoyé par fsmrel
Dans la table 'DIFFERENTIAL' à quoi associez-vous la colonne 'DiffType' avec les lettres a, w, r ?????
Dans la table DIFFERENTIAL, l’attribut DiffType a la valeur 'a' quand le différentiel est un front, 'w' quand c’est un forward et 'r' quand c’est un rear. On peut changer ça, bien qu’on affichera en clair pour l’utilisateur (grâce à un CASE).
Les vues son en cours de révision...
(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.
Bon, je remplacerai les lettres uniques par ce que vous avez sur le web (rappelez-le moi…)
Je suis en train d'essayer de compléter les vues pour les différentiels, mais j'ai une erreur avec les rears et j'ai du mal à voir pourquoi...
(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.
Bon, j'ai trouvé ce qui n'allait pas. Pour que vous puissiez monter ce genre de requêtes, je désosserai et vous expliquerai...
(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.
A 5000 on arrête ?
Comme annoncé, je détaille la façon de procéder pour retrouver les différentiels affectés le plus récemment aux camions.
Tout d’abord, on va mettre à profit l’algèbre relationnelle, ce qui permet de désosser les requêtes « gros pâtés » trop compliquées, pour passer par des requêtes de taille raisonnable et compréhensibles.
SQL permet d’employer l’algèbre relationnelle au moyen de la construction WITH, grâce à laquelle on peut déclarer des variables de type table (par exemple t1, t2, t3 ci-dessous) que l’on peut tricoter, avec en fin de parcours un dernier SELECT permettant de récupérer le résultat final.
Prenons le cas des différentiels de type 'forward'. Je pense que l’organisation de la vue est assez détaillée, mais vous me direz si des points vous paraissent obscurs...
---------------------------------------------------------------- -- Les différentiels 'forward' par camion ---------------------------------------------------------------- go CREATE VIEW CAMION_FORWARD_V (CamionVIN, CamionNumber, AxleSerialNumber, AxleInstallationDate, ForwardNumeroSerie, ForwardInstallationDate) AS --------------------------------------------------------------------------------------------- -- Pour chaque paire {camion, essieu} on récupère la date la plus récente d'installation. -- On pourra filtrer sur ComposantType = 'forward' quand on aura mis en place le contrôle -- selon lequel un essieu 'forward' héberge seulement un différentiel 'forward', -- et qu'un différentiel 'forward' est hébergé seulement par un essieu 'forward'. ----------------------------------------------------------------------------------------------- WITH t1 AS ( SELECT DISTINCT CamionVIN, CamionNumber, LocalisationId, MAX(ComposantInstallationDate) AS AxleInstallationDate, y.ComposantId FROM CAMION AS x JOIN COMPOSANT_AFFECTATION AS y ON x.CamionId = y.LocalisationId JOIN AXLE AS z ON y.ComposantId = z.ComposantId -- pour ne considérer que les essieux JOIN COMPOSANT AS t ON t.ComposantId = y.ComposantId GROUP BY LocalisationId, CamionVIN, CamionNumber, y.ComposantId ) ---------------------------------------------------------------------------------------------------------------- -- Pour chaque différentiel de type 'forward', -- on récupère la date la plus récente d'installation sur essieu. ---------------------------------------------------------------------------------------------------------------- , t2 AS ( SELECT y.AxleId, MAX(DiffInstalDate) AS theDiffInstalDate FROM DIFF_AXLE AS y JOIN DIFFERENTIAL AS z ON z.DiffId = y.DiffId WHERE DiffType = 'forward' GROUP BY y.AxleId ) --------------------------------------------------------------------------------------------------------------- -- Pour chaque différentiel 'forward' le plus récemment installé sur essieu, on récupère les informations -- obtenues via les variables t1, t2, à savoir le CamionVIN, le CamionNumber et, et tant qu'à faire, le -- numéro de série et la date d'installation de l'essieu hébergeant le différentiel. --------------------------------------------------------------------------------------------------------------- , t3 AS ( SELECT DISTINCT CamionVIN, CamionNumber, t2.Axleid, x.DiffId , AxleSerialNumber, AxleInstallationDate , DiffSerialNumber, theDiffInstalDate AS DiffInstallationDate FROM t2 JOIN DIFF_AXLE as x on t2.Axleid = x.Axleid AND DiffInstalDate = theDiffInstalDate JOIN t1 on t1.ComposantId = t2.AxleId JOIN DIFFERENTIAL as y on x.DiffId = y.DiffId JOIN AXLE AS z ON t2.AxleId = z.ComposantId ) --------------------------------------------- -- Production du résultat ! --------------------------------------------- SELECT CamionVIN, CamionNumber, AxleSerialNumber, AxleInstallationDate, DiffSerialNumber, DiffInstallationDate FROM t3 ; Go---------------------------------------- -- Affichage du résultat ---------------------------------------- SELECT '' AS CamionForward, * FROM CAMION_FORWARD_V ;
Résultat global :
Les vues concernant les différentiels 'front' et 'rear' sont les clones de celle concernant les différentiels 'forward', à ceci près que là où est présente la constante 'forward', on remplace par celle qui convient.
Merci de secouer la base de données, car on n’est jamais à l’abri d’un erreur...
N.B. Table DIFFERENTIAL, attribut DiffType : j’ai remplacé les lettres par des mots...
Je remets à plat les bases de données temp et DZINDZIO_TRUCKS_MANAGEMENT_TEMP.
Êtes-vous devenu adepte de l'abstention en matière de vote ?
(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.
Ça je trouve que c'est gentil, ça me laisse une petite marge…
Envoyé par fsmrel
Wowww, Maintenant cette base de données commence vraiment à être intéressante pour l'usage à laquelle elle est destiné!!!
1- Puisque les 'AXLE' et 'DIFFERENTIAL' sont des ensembles ayant comme résultante finale un Couple(Torque) = X, un GAWR = Y, un GVWR = Z ,,, nous devrions ajouter dans la table 'AXLE' le 'GVWR' et le 'AxleTorque' des 'AXLE'.
2- Dans la vue CAMION_FRONT_V, Nous obtenons comme résultat :
CamionVIN, CamionNumber, AxleSerialNumber, AxleInstallationDate, ForwardNumeroSerie, ForwardInstallationDate.
Est dire que vous considérez les différentiels 'Front' comme des 'Forward' ??? Ou est-ce une erreur ???
3- Dans la vue 'CAMION_COMPOSITION_V' , pouvons-nous aussi inclure 'AxleNumeroSerie_Front', 'AxleNumeroSerie_Forward', 'AxleNumeroSerie_Rear' et 'DifferentielNumeroSerie_Front' ???
De cette façon, cette vue serait complète et l'utilisateur n'aurait qu'à consulter cette vue pour avoir l'ensemble des numéros de série de ces composants advenant qu'il devrait en remplacer un ou trouver les pièces pour les réparer…
J'ai hâte de tout inclure ces nouvelles tables et ces nouvelles vues dans le site WEB
Je me suis amusé à créer un nouveau Camion sur le site WEB. C'est une étape assez longue à réaliser mais le résultat est concluant
Je vais maintenant pouvoir inclure les 'AXLE' sur le site WEB. Lorsque j'aurai terminer je vous donnerai un accès pour que vous me donniez votre opinion et vos idées… Dans la version finale du site WEB, seul le compte Administrateur aura accès aux 'Tables' pour la création des Nouveaux Camions. Le compte 'Utilisateur avec pouvoir' pourra apporter des corrections et le compte 'Utilisateur sans pouvoir' n'aura accès qu'aux Vues en mode 'Read Only'. Sur le site WEB, je peux décider qui a accès à quelles 'Tables' et à quelles 'Vues'. Donc je pourrais avoir un utilisateur ayant accès seulement à la vue 'CAMION_COMPOSITION_V' , un autre utilisateur ayant accès à la vue 'CAMION_COMPOSITION_V' et à la vue 'CAMION_HUILE_V', etc...
Il faudra essayer de rendre la gestion des changements d'huile un peu plus conviviale car les changements d'huiles devront inclure ceux du Moteur, de la Transmission et des AXLE… Pour les nouveaux changements d'huile, j'utiliserai le Camion Number et pour l'historique des changements d'huile j'utiliserai les numéros de série….
Le whiskey est partie prenante. En recopiant la ligne :Envoyé par ordigil
J’avais oublié de remplacer les termes "ForwardNumeroSerie" par "FrontNumeroSerie" et "ForwardInstallationDate" par "FrontInstallationDate".CREATE VIEW CAMION_FORWARD_V (CamionVIN, CamionNumber, AxleSerialNumber, AxleInstallationDate, ForwardNumeroSerie, ForwardInstallationDate)
Maintenant on lit :
Merci de vérifier.CREATE VIEW CAMION_FRONT_V (CamionVIN, CamionNumber, AxleSerialNumber, AxleInstallationDate, FrontNumeroSerie, FrontInstallationDate)
(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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager