Je n'ai pas accès au serveur (SQL Server)...
Je n'ai pas accès au serveur (SQL Server)...
Bonsoir Ordigil et les courageux qui suivent :-)
Petit supplément à ce que j’ai proposé le 20 février (post #946) :
Pour bétonner un peu plus la base de données et nous simplifier la vie dans le codage des requêtes SQL relatives aux transmissions, j’ai ajouté la colonne TransmissionTypeShort à la table COMPONENT_MODEL_TRANSMISSION.
(1) Si vous n’avez pas encore créé la table COMPONENT_MODEL_TRANSMISSION (ou si elle est vide), vous pouvez le faire ainsi :
Où vous noterez que pour une transmission principale (primary), le type court est nécessairement 't', et 'x' pour une transmission auxiliaire.-------------------------------------------------------------------------- -- Les modèles de transmissions des manufacturiers de composants -------------------------------------------------------------------------- DROP TABLE IF EXISTS COMPONENT_MODEL_TRANSMISSION ; CREATE TABLE COMPONENT_MODEL_TRANSMISSION ( ComponentManufacturerId INT NOT NULL , ComponentModelId INT NOT NULL , TransmissionSpeed INT NOT NULL DEFAULT 0 , TransmissionTorque INT NOT NULL DEFAULT 0 , TransmissionType VARCHAR(16) NOT NULL DEFAULT 'Primary' , TransmissionTypeShort CHAR(1) NOT NULL DEFAULT 't' , CONSTRAINT COMPONENT_MODEL_TRANSMISSION_PK PRIMARY KEY (ComponentManufacturerId, ComponentModelId) , CONSTRAINT COMPONENT_MODEL_TRANSMISSION_FK FOREIGN KEY (ComponentManufacturerId, ComponentModelId) REFERENCES COMPONENT_MODEL (ComponentManufacturerId, ComponentModelId) ON DELETE CASCADE , CONSTRAINT COMPONENT_MODEL_TRANSMISSION_TYPE_CHK CHECK (LOWER(TransmissionType) = 'primary' AND LOWER(TransmissionTypeShort) = 't' OR LOWER(TransmissionType) = 'auxiliary' AND LOWER(TransmissionTypeShort) = 'x') ) ;
Si vous avez déjà créé la table COMPONENT_MODEL_TRANSMISSION et qu’elle contient des lignes, vous pouvez procéder comme ci-dessus puis recharger les lignes, ou bien vous pouvez procéder ainsi :
– Ajouter la colonne TransmissionTypeShort :
– Ajouter la contrainte :ALTER TABLE COMPONENT_MODEL_TRANSMISSION ADD TransmissionTypeShort CHAR(1) NOT NULL DEFAULT 't' ;
Au cas où la colonne TransmissionTorque serait absente de votre table COMPONENT_MODEL_TRANSMISSION :ALTER TABLE COMPONENT_MODEL_TRANSMISSION ADD CONSTRAINT COMPONENT_MODEL_TRANSMISSION_TYPE_CHK CHECK (LOWER(TransmissionType) = 'primary' AND LOWER(TransmissionTypeShort) = 't' OR LOWER(TransmissionType) = 'auxiliary' AND LOWER(TransmissionTypeShort) = 'x')
(2) Dans un deuxième temps, on crée la vue COMPONENT_MODEL_TRANSMISSION_V :ALTER TABLE COMPONENT_MODEL_TRANSMISSION ADD TransmissionTorque INT NOT NULL DEFAULT 0 ;
(3) On crée dans la foulée les triggers permettant de mettre à jour la vue :---------------------------------------------------------- -- Les modèles de transmissions des manufacturiers ---------------------------------------------------------- CREATE VIEW COMPONENT_MODEL_TRANSMISSION_V (ManufacturerName, ModelName , TransmissionSpeed, TransmissionTorque , TransmissionType, TransmissionTypeShort) AS SELECT ContactName, ComponentModelName, TransmissionSpeed, TransmissionTorque , TransmissionType, TransmissionTypeShort FROM COMPONENT_MODEL AS x JOIN MANUFACTURER AS y ON x.ComponentManufacturerId = y.ManufacturerId JOIN CONTACT AS z ON z.ContactId = y.ManufacturerId JOIN COMPONENT_MODEL_TRANSMISSION AS t ON t.ComponentManufacturerId = x.ComponentManufacturerId AND t.ComponentModelId = x.ComponentModelId ;
– COMPONENT_MODEL_TRANSMISSION_INSERT_TR
– COMPONENT_MODEL_TRANSMISSION_UPDATE_TR
– COMPONENT_MODEL_TRANSMISSION_DELETE_TR
(4) Un jeu d’essai, avec BEGIN TRANSACTION / ROLLBACK pour ne pas perturber l’existant :
Noter que par défaut, les modèles de transmission sont du type 'Primary'.------------------------------------------------------ -- Tests modèles de transmissions (insert, update) ------------------------------------------------------ BEGIN TRANSACTION ; DELETE FROM COMPOSANT WHERE ComposantType IN ('t', 'x') ; DELETE FROM COMPONENT_MODEL_TRANSMISSION_V ; DELETE FROM COMPONENT_MODEL_V WHERE ModelName IN ( 'RTLO-16913A', 'RTLO-16913B', 'RTLO-16913A-1', 'RTLO-16913B-2' , 'Trans Modèle 1', 'Trans Modèle 2', 'Modèle Trans bis' ) INSERT INTO COMPONENT_MODEL_TRANSMISSION_V (ManufacturerName, ModelName, TransmissionSpeed) SELECT 'Eaton Fuller', 'RTLO-16913A test', 13 INSERT INTO COMPONENT_MODEL_TRANSMISSION_V (ManufacturerName, ModelName, TransmissionSpeed) SELECT 'Eaton Fuller', 'RTLO-16913B test', 13 INSERT INTO COMPONENT_MODEL_TRANSMISSION_V (ManufacturerName, ModelName, TransmissionSpeed) SELECT 'Eaton Fuller 1', 'RTLO-16913A-1 test', 13 INSERT INTO COMPONENT_MODEL_TRANSMISSION_V (ManufacturerName, ModelName, TransmissionSpeed) SELECT 'Eaton Minimum 2', 'RTLO-16913B-2 test', 13 INSERT INTO COMPONENT_MODEL_TRANSMISSION_V (ManufacturerName, ModelName, TransmissionSpeed) SELECT 'Leclerc Manufacturier', 'Trans Modèle 1 test', 13 INSERT INTO COMPONENT_MODEL_TRANSMISSION_V (ManufacturerName, ModelName, TransmissionSpeed) SELECT 'Leclerc Manufacturier', 'Trans Modèle 2 test', 16 INSERT INTO COMPONENT_MODEL_TRANSMISSION_V (ManufacturerName, ModelName, TransmissionSpeed , TransmissionType) SELECT 'Brassens Manufacturier', 'Modèle Trans bis test', 18, 'Auxiliary' UPDATE COMPONENT_MODEL_TRANSMISSION_V SET ModelName = 'RTLO-16913A updated' , TransmissionSpeed = 24, TransmissionTorque = 2400, TransmissionType = 'auxiliary' WHERE ManufacturerName = 'Eaton Fuller' AND ModelName = 'RTLO-16913A test' ; ROLLBACK ;
Le modèle 'Modèle Trans bis test' est du type 'Auxiliary'.
Il est inutile de préciser la valeur pour la colonne TransmissionTypeShort, le trigger la force systématiquement, quoi qu’on code.
Dès que possible, je vais mettre à jour la partie Transmissions (composants) proprement dite.
Je ne comprend plus rien....
Mais je peux déboguer SQL Server lorsque vous n'avez pas d'accès
Et je peux faire le sîte WEB aussi LoL
Envoyé par fsmrel
Transmissions, suite.
(1) Comme elles ont migré vers la table COMPONENT_MODEL_TRANSMISSION, on supprime les colonnes TransmissionVitesses, TransmissionType de la table TRANSMISSION. SQL Server a généré des noms à la noix pour certaines contraintes portant sur ces colonnes : on supprime les contraintes manuellement.
-------------------------------------------------------------------------- -- Les transmissions - mise à niveau de la table TRANSMISSION -- -- Les colonnes TransmissionVitesses et TransmissionType font désormais -- partie de la table COMPONENT_MODEL_TRANSMISSION et doivent donc -- être supprimées. Pour y parvenir, if faut d'abord supprimer -- (manuellement) les contraintes qu'elles possèdent. -- -------------------------------------------------------------------------- -- une fois les contraintes supprimées : ALTER TABLE TRANSMISSION DROP COLUMN TransmissionVitesses, TransmissionType
(2) On crée la vue TRANSMISSION_COMPOSANT_V :
DROP VIEW IF EXISTS TRANSMISSION_COMPOSANT_V ; GO CREATE VIEW TRANSMISSION_COMPOSANT_V (SerialNumber, MfgDate, PurchaseDate, SaleDate , Manufacturer, Model , TransmissionSpeed , TransmissionTorque , TransmissionType) AS SELECT TransmissionNumeroSerie , ComposantDateMfg, ComposantDateAchat, ComposantDateVente , ContactName, ComponentModelName , TransmissionSpeed , TransmissionTorque , TransmissionType FROM COMPOSANT AS x JOIN TRANSMISSION 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 JOIN COMPONENT_MODEL_TRANSMISSION AS u ON x.ComponentManufacturerId = u.ComponentManufacturerId AND x.ComponentModelId = u.ComponentModelId ; GO
(3) On crée les triggers attachés à la vue TRANSMISSION_COMPOSANT_V :
TRANSMISSION_COMPOSANT_INSERT_TR
TRANSMISSION_COMPOSANT_UPDATE_TR
TRANSMISSION_COMPOSANT_DELETE_TR
(4) Un jeu d’essai, avec BEGIN TRANSACTION / ROLLBACK pour ne pas perturber l’existant :
INSERT INTO TRANSMISSION_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model, TransmissionSpeed) SELECT 'T76785', '2016-07-01', 'Eaton Fuller', 'RTLO-16913A', 13 ; INSERT INTO TRANSMISSION_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model, TransmissionSpeed) SELECT 'TRANS01', '2012-07-01', 'Eaton Fuller 1', 'RTLO-16913A-1', 13 ; INSERT INTO TRANSMISSION_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model, TransmissionSpeed, TransmissionType) SELECT 'TRANS02', '2012-07-22', 'Eaton Minimum 2', 'RTLO-16913B-2', 13, 'AUXILIARY' ; INSERT INTO TRANSMISSION_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model, TransmissionSpeed) SELECT 'Trans156', '2018-11-05', 'Leclerc Manufacturier', 'Trans Modèle 1', 16 ; INSERT INTO TRANSMISSION_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model, TransmissionSpeed, TransmissionType) SELECT 'Trans423', '2018-11-05', 'Leclerc Manufacturier', 'Trans Modèle 2', 16, 'auxiliary' ; INSERT INTO TRANSMISSION_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model, TransmissionSpeed) SELECT 'Trans423bis', '2012-01-01', 'Brassens Manufacturier', 'Modèle Trans bis', 12 ; UPDATE TRANSMISSION_COMPOSANT_V SET SerialNumber = 'TRANS01 ;-)' , MfgDate = '2012-01-12' , PurchaseDate = '2013-01-13' , SaleDate = '2014-01-14' , Manufacturer = 'Brassens Manufacturier', Model = 'Modèle Trans bis' WHERE SerialNumber = 'TRANS01' ;
Ça fonctionne alors je ne me pose pas trop de questions
Mais j'ai juste peur qu'on est des Tables ou des Vues corrompues, juste un pressentiment. Il y a eu un glitch mais je ne trouve pas d'où il provient...
J'espère que tout est correcte.
Envoyé par fsmrel
Transmissions, suite.
(1) Affectation des transmissions aux camions :
Vue TRANSMISSION_AFFECTATION_CAMION
Les triggers affectés à la vue TRANSMISSION_AFFECTATION_CAMION :---------------------------------------------------- -- Affectation des transmissions aux camions ---------------------------------------------------- -- BEGIN TRANSACTION ; DROP VIEW IF EXISTS TRANSMISSION_AFFECTATION_CAMION ; GO CREATE VIEW TRANSMISSION_AFFECTATION_CAMION (CamionVIN, SerialNumber , InstallationDate, DesInstallationDate) AS SELECT z.CamionVIN, x.TransmissionNumeroSerie AS NumeroSerie , y.ComposantInstallationDate, y.ComposantDesInstallationDate FROM TRANSMISSION AS x JOIN COMPOSANT_AFFECTATION AS y ON x.ComposantId = y.ComposantId JOIN CAMION AS z ON y.LocalisationId = z.CamionId GO
TRANSMISSION_AFFECTATION_CAMION_INSERT_TR
TRANSMISSION_AFFECTATION_CAMION_UPDATE_TR
TRANSMISSION_AFFECTATION_CAMION_DELETE_TR
(2) Affectation des transmissions aux locaux :
Vue TRANSMISSION_AFFECTATION_LOCAL
Les triggers affectés à la vue TRANSMISSION_AFFECTATION_CAMION :----------------------------------------------------------------------------------- -- Affectation des transmissions aux locaux : Vue TRANSMISSION_AFFECTATION_LOCAL ----------------------------------------------------------------------------------- GO CREATE VIEW TRANSMISSION_AFFECTATION_LOCAL (LocalCode, SerialNumber, InstallationDate, DesInstallationDate) AS SELECT LocalCode, TransmissionNumeroSerie , ComposantInstallationDate, ComposantDesInstallationDate FROM TRANSMISSION AS x JOIN COMPOSANT_AFFECTATION AS y ON x.ComposantId = y.ComposantId JOIN LOCAL AS z ON y.LocalisationId = z.LocalisationId ; GO
TRANSMISSION_AFFECTATION_LOCAL_INSERT_TR
TRANSMISSION_AFFECTATION_LOCAL_UPDATE_TR
TRANSMISSION_AFFECTATION_LOCAL_DELETE_TR
Passons à la mise à niveau de la partie traitant des essieux.
Je rappelle la vue où les essieux sont des composants spécialisés :
Les triggers associés :----------------------------------------------------------------------------- -- Axles (essieux) ------------------------------------------------------------------------------ CREATE VIEW AXLE_COMPOSANT_V (SerialNumber, MfgDate, PurchaseDate, SaleDate , Manufacturer, Model , AxleType , GAWR, AxleGVWR, AxleTorque) AS SELECT AxleSerialNumber , ComposantDateMfg, ComposantDateAchat, ComposantDateVente , ContactName, ComponentModelName , AxleType , GAWR, AxleGVWR, AxleTorque FROM COMPOSANT AS x JOIN AXLE 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 JOIN AXLE_TYPE AS u ON y.AxleTypeId = u.AxleTypeId ; GO
AXLE_COMPOSANT_INSERT_TR
AXLE_COMPOSANT_UPDATE_TR
AXLE_COMPOSANT_DELETE_TR
La vue pour affecter les essieux aux camions :
CREATE VIEW AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber , InstallationDate, DesInstallationDate , Position) AS SELECT CamionVIN, AxleSerialNumber , ComposantInstallationDate, ComposantDesInstallationDate , PositionCode FROM AXLE AS x JOIN COMPOSANT_AFFECTATION AS y ON x.ComposantId = y.ComposantId JOIN CAMION AS z ON y.LocalisationId = z.CamionId JOIN AXLE_POSITION AS t ON y.PositionId = t.PositionId ; GO
Les triggers associés :
AXLE_AFFECTATION_CAMION_INSERT_TR
AXLE_AFFECTATION_CAMION_UPDATE_TR
AXLE_AFFECTATION_CAMION_DELETE_TR
En cours de mise à niveau : les triggers d’affectation des essieux aux locaux.
J'ai oublié de fournir un jeu d'essai pour l'affectation des essieux aux camions.
En voici un, avec BEGIN TRANSATION / ROLLBACK pour ne pas perturber l'existant :
BEGIN TRANSACTION ; ---------------------------------------------------------- -- Création d'essieux et affectation aux camions ---------------------------------------------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, Manufacturer, Model , AxleType, GAWR, PurchaseDate) SELECT 'FRONT16156', 'Brassens Manufacturier', 'Axle Model FR16' , 'FRONT', 16000 , '2018-11-16' ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#156', 'FRONT16156', 'FRGAWR' -- provoque doublon + loin ; --*/ --2---------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, Manufacturer, Model , AxleType, GAWR, PurchaseDate) SELECT 'FORWARD23156', 'Brassens Manufacturier', 'Axle Model FWD23' , 'Forward', 23000 , '2018-11-23' ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#156', 'FORWARD23156', '1INTGAWR' ; ----------------------------------------------------- -- Un axle à deux positions à la fois : refuser ----------------------------------------------------- INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#156', 'FORWARD23156', 'FRGAWR' ; ---------------------------------- -- Correct --------------------------------- --3----------------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'REAR23156', '2018-11-20', 'Brassens Manufacturier', 'Axle Model REAR23' , 'rear', 23000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#156', 'REAR23156', 'REARGAWR' ; --4----------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'PUSHER8156_1', '2018-11-21', 'Brassens Manufacturier', 'Axle Model PUSHER8' , 'pusher', 8000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#156', 'PUSHER8156_1', '2INTGAWR' ; --5----------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'PUSHER8156_2', '2018-11-22', 'Brassens Manufacturier', 'Axle Model PUSHER8' , 'pusher', 8000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#156', 'PUSHER8156_2', '3INTGAWR' ; --6---------------------------------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'PUSHER8156_3', '2018-11-23', 'Brassens Manufacturier', 'Axle Model PUSHER8' , 'pusher', 8000 ; --/* INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#156', 'PUSHER8156_3', '4INTGAWR' ; --7--------------------------------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'PUSHER8156_4', '2018-11-24', 'Brassens Manufacturier', 'Axle Model PUSHER8' , 'pusher', 8000 ; --/* INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#156', 'PUSHER8156_4', '5INTGAWR' ; --8--post#426---------------------------------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'FRONT14426', '2018-11-26', 'Brassens Manufacturier', 'Axle Model FR14' , 'FRONT', 14000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#426', 'FRONT14426', 'FRGAWR' ; INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT '2NDFORWARD22426', '2018-11-27', 'Brassens Manufacturier', 'Axle Model 2FW22' , 'Forward', 22000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#426', '2NDFORWARD22426', '1INTGAWR' ; INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT '3RDFORWARD22426', '2018-11-27', 'Brassens Manufacturier', 'Axle Model 3FW22' , 'Forward', 22000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#426', '3RDFORWARD22426', '2INTGAWR' ; INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'REAR22426', '2018-11-28', 'Brassens Manufacturier', 'Axle Model REAR22' , 'REAR', 22000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#426', 'REAR22426', 'REARGAWR' ; ---441--------------------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'FRONT14441', '2018-11-14', 'Brassens Manufacturier', 'Axle Model FR14' , 'front', 14000 ; --/* INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#441', 'FRONT14441', 'FRGAWR' ; --*/ --------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT '2NDFRONT14441', '2018-12-14', 'Brassens Manufacturier', 'Axle Model 2NDFR14' , '2ndFront', 14000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#441', '2NDFRONT14441', '6INTGAWR' ; ------------------------------ INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT '2NDFORWARD22441', '2018-11-24', 'Brassens Manufacturier', 'Axle Model 2FW22' , 'Forward', 22000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#441', '2NDFORWARD22441', '1INTGAWR' ; INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'REAR22441', '2018-11-24', 'Brassens Manufacturier', 'Axle Model REAR22' , 'rear', 22000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#441', 'REAR22441', 'REARGAWR' ; INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'PUSH12441_1', (SELECT CamionDateAchat FROM CAMION WHERE CamionVIN = 'post#441') , 'Brassens Manufacturier', 'Axle Model PUSH12' , 'pusher', 12000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#441', 'PUSH12441_1', '2INTGAWR' ; ----------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'PUSH12441_2', (SELECT CamionDateAchat FROM CAMION WHERE CamionVIN = 'post#441') , 'Brassens Manufacturier', 'Axle Model PUSH12' , 'pusher', 12000 ; --/* INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#441', 'PUSH12441_2', '3INTGAWR' ; -----423--------------------------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model, AxleType, GAWR) SELECT 'FRONT14423', (SELECT CamionDateAchat FROM CAMION WHERE CamionVIN = 'post#423') , 'Brassens Manufacturier', 'Axle Model FR14' , 'front', 14000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#423', 'FRONT14423', 'FRGAWR' ; ---------------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT '2NDFORWARD22423', (SELECT CamionDateAchat FROM CAMION WHERE CamionVIN = 'post#423') , 'Brassens Manufacturier', 'Axle Model 2FW22' , 'Forward', 22000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#423', '2NDFORWARD22423', '1INTGAWR' ; ------------------------------------------------ INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'REAR22423', (SELECT CamionDateAchat FROM CAMION WHERE CamionVIN = 'post#423') , 'Brassens Manufacturier', 'Axle Model REAR22' , 'Rear', 22000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#423', 'REAR22423', 'REARGAWR' ; -------------------------------------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'PUSH12423', (SELECT CamionDateAchat FROM CAMION WHERE CamionVIN = 'post#423') , 'Brassens Manufacturier', 'Axle Model PUSH12' , 'pusher', 12000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#423', 'PUSH12423', '2INTGAWR' ; -------------------------------------- INSERT INTO AXLE_COMPOSANT_V (SerialNumber, PurchaseDate, Manufacturer, Model , AxleType, GAWR) SELECT 'TAG12423', (SELECT CamionDateAchat FROM CAMION WHERE CamionVIN = 'post#423') , 'Brassens Manufacturier', 'Axle Model TAG12' , 'tag', 12000 ; INSERT INTO AXLE_AFFECTATION_CAMION (CamionVIN, SerialNumber, Position) SELECT 'post#423', 'TAG12423', 'TAG' ; ------------------------------------------------------------------------------------------ SELECT '' AS AXLE_CAMION_INSTALL, CamionVIN, CamionNumber, AxleSerialNumber , ContactName as Manufacturer , AxleType , PositionCode, GAWR , ComposantInstallationDate as InstallDate , ComposantDesInstallationDate as DesinstallDate FROM COMPOSANT_AFFECTATION AS x JOIN COMPOSANT AS y on x.ComposantId = y.ComposantId JOIN AXLE AS z on x.ComposantId = z.ComposantId JOIN AXLE_POSITION AS t on x.PositionId = t.PositionId JOIN CAMION AS u on x.LocalisationId = u.CamionId JOIN CONTACT as v on v.ContactId = y.ComponentManufacturerId JOIN AXLE_TYPE AS w on w.AxleTypeId = z.AxleTypeId ORDER BY CamionVIN ,CASE PositionCode WHEN 'FRGAWR' THEN 1 WHEN '1INTGAWR' THEN 2 WHEN '2INTGAWR' THEN 3 WHEN '3INTGAWR' THEN 4 WHEN '4INTGAWR' THEN 5 WHEN '5INTGAWR' THEN 6 WHEN '6INTGAWR' THEN 7 WHEN 'REARGAWR' THEN 8 WHEN 'TAG' THEN 9 END ROLLBACK ;
Pour compléter, un petit jeu d'essai concernant les updates des affectations des essieux :
BEGIN TRANSACTION -- Changement de position d'un axle /* UPDATE AXLE_AFFECTATION_CAMION SET Position = '6INTGAWR' WHERE CamionVIN = 'post#156' and SerialNumber = 'FORWARD23156' */ ----------------------------------------------------------- -- pour traiter du cas d'un axle affecté légalement plus -- d'une fois dans le temps au même camion. ---------------------------------------------------------- ---------étape 1 : on désinstalle l'axle à d1 UPDATE AXLE_AFFECTATION_CAMION -- correct SET DesInstallationDate = '2018-11-23' WHERE CamionVIN = 'post#156' AND SerialNumber = 'FRONT16156' SELECT * FROM AXLE_AFFECTATION_CAMION WHERE CamionVIN = 'post#156' ------étape 2, on en installe un autre (disponible !) à d1 et désinstallé à d2 UPDATE AXLE_AFFECTATION_CAMION SET Position = '6INTGAWR' , InstallationDate = '2018-11-24' , DesInstallationDate = '2018-11-27' WHERE CamionVIN = 'post#156' AND SerialNumber = 'FRONT16156' AND DesInstallationDate = '2018-11-23' SELECT * FROM AXLE_AFFECTATION_CAMION WHERE CamionVIN = 'post#156' ----étape3 : on réinstalle le 1er axle, à d2 [+ ] UPDATE AXLE_AFFECTATION_CAMION SET Position = 'FRGAWR' , InstallationDate = '2018-11-29' , DesInstallationDate = '9999-12-31' WHERE CamionVIN = 'post#156' AND SerialNumber = 'FRONT16156' AND DesInstallationDate = '2018-11-27' SELECT * FROM AXLE_AFFECTATION_CAMION WHERE CamionVIN = 'post#156' ROLLBACK ;
Affectation des essieux aux locaux :
La vue à cet effet, AXLE_AFFECTATION_LOCAL :
Les triggers accrochés à la vue :DROP VIEW IF EXISTS AXLE_AFFECTATION_LOCAL ; GO ----------------------------------------------------------------------------------- -- Affectation des essieux aux locaux : Vue AXLE_AFFECTATION_LOCAL ----------------------------------------------------------------------------------- GO CREATE VIEW AXLE_AFFECTATION_LOCAL (LocalCode, SerialNumber, InstallationDate, DesInstallationDate) AS SELECT LocalCode, AxleSerialNumber, ComposantInstallationDate, ComposantDesInstallationDate FROM AXLE AS x JOIN COMPOSANT_AFFECTATION AS y ON x.ComposantId = y.ComposantId JOIN LOCAL AS z ON y.LocalisationId = z.LocalisationId ; GO
AXLE_AFFECTATION_LOCAL_INSERT_TR
AXLE_AFFECTATION_LOCAL_UPDATE_TR
AXLE_AFFECTATION_LOCAL_DELETE_TR
Bonjour fsmrel :-)
Vous êtes devenu un expert en camions :-)
Je vais refaire des tests avec les essieux demain. ;-)
Hello Ordigil,
Actuellement, on peut prendre une vessie pour une lanterne, c’est-à-dire pour modèle de différentiel un modèle de moteur ou de transmission ou d’essieu...
On peut aussi prendre pour modèle d’essieu un modèle de moteur ou de transmission ou de différentiel...
On peut aussi prendre pour modèle de moteur un modèle de différentiel ou de transmission ou d’essieu...
En ce qui concerne les transmissions, grâce à l’existence de la table COMPONENT_MODEL_TRANSMISSION, on sait empêcher ce genre de confusion.
En conséquence, au fur et à mesure, je mettrai en oeuvre des tables COMPONENT_MODEL_DIFFERENTIAL, COMPONENT_MODEL_AXLE, COMPONENT_MODEL_ENGINE.
Je commencerai par la table COMPONENT_MODEL_DIFFERENTIAL.
Actuellement, la table DIFFERENTIAL comporte les colonnes suivantes (je ne considère que les propriétés naturelles, donc pas les clés primaires et étrangères qui du reste ne figurent pas dans la vue DIFFERENTIAL_COMPOSANT_V) :
DiffSerialNumber
DiffRatio
DiffGVWR
DiffTorque
DiffLock
DiffPowerDivideLock
En fait, les propriétés Ratio, GVWR, Torque, Lock, PowerDividerLock sont normalement des propriétés du modèle de différentiel : autant les dégager de la table DIFFERENTIAL et les installer dans la table COMPONENT_MODEL_DIFFERENTIAL.
D’où l’évolution du diagramme :
Je ne vais effectuer maintenant cette migration de colonnes, car vous avez peut-être des contre-indications, et puis il faut avancer sur la mise à niveau du reste...
En fait, Ratio, GVWR, Torque, Lock, PowerDividerLock ne sont pas des propriétés uniques à un modèle de différentiel mais des propriétés (valeurs ajoutées ou fonctionnalités ajoutées) de n'importe quel modèle de différentiel. Ce qui veut dire qu'un même modèle de différentiel peu disons être Full Lock ou non. Pour différencier deux différentiels de modèle identique qui un serait ''non full lock'' et l'autre ''full lock'', il n'y a qu'un seul caractère qui change dans le numéro d'identification. Ça ne changera probablement rien dans la conception de la base de données mais il y a une différence dans la façon de le dire…
Numéro d'identification d'un différentiel Dyna Spicer de Eaton
Pièce jointe 458472
Envoyé par fsmrel
D‘accord. Je propose donc que Ratio, GVWR, Torque, Lock, PowerDividerLock, fassent l’objet non seulement de colonnes de la table COMPONENT_MODEL_DIFFERENTIAL, mais aussi de colonnes de la table DIFFERENTIAL. Lors de la création d’un différentiel, on proposerait à l’utilisateur les valeurs « par défaut », présentes dans COMPONENT_MODEL_DIFFERENTIAL, en lui laissant la possibilité de les remplacer avant stockage dans DIFFERENTIAL.Envoyé par ordigil
Votre avis ?
Le diagramme deviendrait :
Muy bien, on veillera avec les triggers DIFFERENTIAL_COMPOSANT_INSERT_TR et DIFFERENTIAL_COMPOSANT_UPDATE_TR que dans le cas des REAR, la colonne PowerDividerLock de la table DIFFERENTIAL ne prenne jamais la valeur 'Y', même principe pour la table COMPONENT_MODEL_DIFFERENTIAL. Au besoin, on pourra afficher '0' ou '-', etc. pour les REAR.Envoyé par ordigil
Bonsoir Ordigil,
Les triggers ont été aménagés, merci de les secouer...
Voici la liste des tables et des vues, des triggers, avec leurs dates de création (aux tables près).
Si vous avez besoin de jeux d’essai, dites-le moi, j’en ai quelques uns.
Séquence des opérations Contacts CREATE TABLE CONTACT 2019_03_14 Sièges CREATE TABLE HEADQUARTERS 2019_03_15 CREATE VIEW HEADQUARTERS_V 2019_03_15 CREATE HEADQUARTERS_INSERT_TR 2019_03_15 CREATE HEADQUARTERS_UPDATE_TR pas fait CREATE SHEADQUARTERS_DELETE_TR pas fait Manufacturiers CREATE TABLE MANUFACTURER 2019_03_15 CREATE VIEW MANUFACTURER_V 2019_03_15 CREATE MANUFACTURER_INSERT_TR 2019_03_15 CREATE MANUFACTURER_UPDATE_TR pas fait CREATE MANUFACTURER_DELETE_TR pas fait Modèles de camions CREATE TABLE TRUCK_MODEL 2019_03_15 CREATE VIEW TRUCK_MODEL_V 2019_03_15 CREATE TRUCK_MODEL_INSERT_TR 2019_03_15 CREATE TRUCK_MODEL_UPDATE_TR pas fait CREATE TRUCK_MODEL_DELETE_TR pas fait Modèles de composants CREATE TABLE COMPONENT_MODEL CREATE VIEW COMPONENT_MODEL_V 2019_03_15 CREATE TRIGGER COMPONENT_MODEL_INSERT_TR 2019_03_15 CREATE TRIGGER COMPONENT_MODEL_UPDATE_TR (sans objet !) / CREATE TRIGGER COMPONENT_MODEL_DELETE_TR 2019_03_15 Modèles de composants : transmissions CREATE TABLE COMPONENT_MODEL_TRANSMISSION 2019_03_15 CREATE VIEW COMPONENT_MODEL_TRANSMISSION_V 2019_03_15 CREATE TRIGGER COMPONENT_MODEL_TRANSMISSION_INSERT_TR 2019_03_15 CREATE TRIGGER COMPONENT_MODEL_TRANSMISSION_UPDATE_TR 2019_03_15 CREATE TRIGGER COMPONENT_MODEL_TRANSMISSION_DELETE_TR 2019_03_15 Garages, ateliers, locaux CREATE TABLE SHOP 2019_03_15 CREATE VIEW SHOP_V 2019_03_15 CREATE TRIGGER SHOP_INSERT_TR 2019_03_15 CREATE TRIGGER SHOP_UPDATE_TR pas fait CREATE TRIGGER SHOP_DELETE_TR pas fait Localisations (locaux, camions) CREATE TABLE LOCALISATION Locaux CREATE TABLE LOCAL CREATE VIEW LOCAL_LOCALISATION_V 2019_03_15 CREATE TRIGGER LOCAL_LOCALISATION_INSERT_TR 2019_03_15 CREATE TRIGGER LOCAL_LOCALISATION_UPDATE_TR pas fait CREATE TRIGGER LOCAL_LOCALISATION_DELETE_TR pas fait Camions CREATE TABLE CAMION CREATE VIEW CAMION_LOCALISATION_V 2019_03_15 CREATE TRIGGER CAMION_LOCALISATION_INSERT_TR 2019_03_15 CREATE TRIGGER CAMION_LOCALISATION_UPDATE_TR 2019_03_15 CREATE TRIGGER CAMION_LOCALISATION_DELETE_TR 2019_03_15 Composants CREATE TABLE COMPOSANT Affectation des composants CREATE TABLE COMPOSANT_AFFECTATION CREATE FUNCTION NOM_COMPOSANT_A_PARTIR_DE_SON_ID_FN 2019_03_15 CREATE PROCEDURE BILOCATION_CONTROLE_PROC 2019_03_20 appel par COMPOSANT_RECOUVREMENT_TR et COMPOSANT_RECOUVREMENT_UPDATE_TR CREATE PROCEDURE MAX_COMPOSANTS_PAR_CAMION_PROC 2019_03_15 appel par COMPOSANT_RECOUVREMENT_TR Triggers sur la table COMPOSANT_AFFECTATION : CREATE TRIGGER COMPOSANT_RECOUVREMENT_TR 2019_03_20 CREATE TRIGGER COMPOSANT_RECOUVREMENT_UPDATE_TR 2019_03_15 Types d'essieux CREATE TABLE AXLE_TYPE 2019_03_15 Position des essieux sur les camions CREATE TABLE AXLE_POSITION Moteurs CREATE TABLE MOTEUR CREATE VIEW MOTEUR_COMPOSANT_V 2019_03_15 CREATE TRIGGER MOTEUR_COMPOSANT_INSERT_TR 2019_03_15 CREATE TRIGGER MOTEUR_COMPOSANT_UPDATE_TR 2019_03_15 CREATE TRIGGER MOTEUR_COMPOSANT_DELETE_TR 2019_03_15 Affectation des moteurs aux camions CREATE VIEW MOTEUR_AFFECTATION_CAMION 2019_03_15 CREATE TRIGGER MOTEUR_AFFECTATION_CAMION_INSERT_TR 2019_03_15 CREATE TRIGGER MOTEUR_AFFECTATION_CAMION_UPDATE_TR 2019_03_15 CREATE TRIGGER MOTEUR_AFFECTATION_CAMION_DELETE_TR 2019_03_15 Affectation des moteurs aux locaux CREATE VIEW MOTEUR_AFFECTATION_LOCAL 2019_03_15 CREATE TRIGGER MOTEUR_AFFECTATION_LOCAL_INSERT 2019_03_15 CREATE TRIGGER MOTEUR_AFFECTATION_LOCAL_UPDATE 2019_03_15 CREATE TRIGGER MOTEUR_AFFECTATION_LOCAL_DELETE 2019_03_15 Transmissions CREATE TABLE TRANSMISSION 2019_03_15 CREATE VIEW TRANSMISSION_COMPOSANT_V 2019_03_15 CREATE TRIGGER TRANSMISSION_COMPOSANT_INSERT_TR 2019_03_15 CREATE TRIGGER TRANSMISSION_COMPOSANT_UPDATE_TR 2019_03_15 CREATE TRIGGER TRANSMISSION_COMPOSANT_DELETE_TR 2019_03_15 Affectation des transmissions aux camions CREATE VIEW TRANSMISSION_AFFECTATION_CAMION 2019_03_15 CREATE TRIGGER TRANSMISSION_AFFECTATION_CAMION_INSERT_TR 2019_03_15 CREATE TRIGGER TRANSMISSION_AFFECTATION_CAMION_UPDATE_TR 2019_03_15 CREATE TRIGGER TRANSMISSION_AFFECTATION_CAMION_DELETE_TR 2019_03_15 Affectation des transmissions aux locaux CREATE VIEW TRANSMISSION_AFFECTATION_LOCAL 2019_03_15 CREATE TRIGGER TRANSMISSION_AFFECTATION_LOCAL_INSERT_TR 2019_03_15 CREATE TRIGGER TRANSMISSION_AFFECTATION_LOCAL_UPDATE_TR 2019_03_15 CREATE TRIGGER TRANSMISSION_AFFECTATION_LOCAL_DELETE_TR 2019_03_15 Affectations successives des transmissions aux camions & locaux bilocation des transmissions (camions, locaux) Essieux CREATE TABLE AXLE 2019_03_16 CREATE VIEW AXLE_COMPOSANT_V 2019_03_16 CREATE TRIGGER AXLE_COMPOSANT_INSERT_TR 2019_03_16 CREATE TRIGGER AXLE_COMPOSANT_UPDATE_TR 2019_03_16 CREATE TRIGGER AXLE_COMPOSANT_DELETE_TR 2019_03_16 Affectation des essieux aux camions CREATE VIEW AXLE_AFFECTATION_CAMION 2019_03_16 CREATE TRIGGER AXLE_AFFECTATION_CAMION_INSERT_TR 2019_03_16 CREATE TRIGGER AXLE_AFFECTATION_CAMION_UPDATE_TR 2019_03_16 CREATE TRIGGER AXLE_AFFECTATION_CAMION_DELETE_TR 2019_03_16 Affectation des essieux aux locaux CREATE VIEW AXLE_AFFECTATION_LOCAL 2019_03_07 CREATE TRIGGER AXLE_AFFECTATION_LOCAL_INSERT_TR 2019_03_16 CREATE TRIGGER AXLE_AFFECTATION_LOCAL_UPDATE_TR 2019_03_16 CREATE TRIGGER AXLE_AFFECTATION_LOCAL_DELETE_TR 2019_03_16 CREATE VIEW COMPOSANT_AFFECTATION_CAMION_V 2019_03_16 Ne créer qu'après création des vues ci-dessous : MOTEUR_AFFECTATION_CAMION UNION TRANSMISSION_AFFECTATION_CAMION UNION AXLE_AFFECTATION_CAMION Types de différentiels CREATE TABLE DIFFERENTIAL_TYPE 2019_03_15 CREATE VIEW DIFFERENTIAL_TYPE_V 2019_03_16 CREATE TRIGGER DIFFERENTIAL_TYPE_INSERT_TR 2019_03_16 CREATE TRIGGER DIFFERENTIAL_TYPE_DELETE_TR 2019_03_16 Différentiels CREATE DIFF_BILOCATION_CONTROLE_PROC 2019_03_21 CREATE TABLE DIFFERENTIAL 2019_03_15 CREATE VIEW DIFFERENTIAL_COMPOSANT_V 2019_03_15 CREATE TRIGGER DIFFERENTIAL_COMPOSANT_INSERT_TR 2019_03_15 CREATE TRIGGER DIFFERENTIAL_COMPOSANT_UPDATE_TR 2019_03_15 CREATE TRIGGER DIFFERENTIAL_COMPOSANT_DELETE_TR 2019_03_15 Affectation des différentiels aux essieux CREATE TABLE DIFF_AXLE CREATE VIEW DIFF_AFFECTATION_AXLE_V 2019_03_15 CREATE TRIGGER DIFF_AFFECTATION_AXLE_INSERT_TR 2019_03_20 Affiner pour les ratios (tenir compte des périodes !) CREATE TRIGGER DIFF_AFFECTATION_AXLE_UPDATE_TR pas terminé CREATE TRIGGER DIFF_AFFECTATION_AXLE_DELETE_TR 2019_03_20 Affectation des différentiels aux locaux CREATE VIEW DIFF_AFFECTATION_LOCAL 2019_03_20 CREATE TRIGGER DIFF_AFFECTATION_LOCAL_INSERT_TR 2019_03_21 CREATE TRIGGER DIFF_AFFECTATION_LOCAL_UPDATE_TR pas terminé CREATE TRIGGER DIFF_AFFECTATION_LOCAL_DELETE_TR 2019_03_21 Camions : kilométrage CREATE TABLE CAMION_MILLEAGE Référentiel des huiles CREATE TABLE OIL_SPEC CREATE TABLE COMPONENT_OIL CREATE TABLE OIL_CHANGE Consommations de carburant CREATE TABLE FUEL_CONSUMPTION achats, ventes CREATE TABLE TRUCK_PURCHASE CREATE TABLE TRUCK_SALE CREATE TABLE COMPONENT_SALE CREATE TABLE COMPONENT_PURCHASE Pièces CREATE TABLE PART CREATE TABLE PART_ALIAS CREATE TABLE PART_SUPPLIER CREATE TABLE PURCHASE CREATE TABLE MAINTENANCE_REPAIR_CATEGORY CREATE TABLE PART_CATEGORY CREATE TABLE MAINTENANCE_REPAIR CREATE TABLE M_R_PART CREATE TABLE M_R_NO_PART
Bonjour fsmrel ;-)
Wowwww vous avez fait un travail énorme
Pensez-vous que l'on devrait ajouter une colonne du genre 'CategorieContact' dans la Table Contact ??? Pour différencier les Clients, les Shops, les Headquarters, les Manufacturiers, les Fournisseurs, etc....
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