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. #81
    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
    Vous

    SELECT VIN, Immat, DateAchat, (CASE  DateSold WHEN '9999-12-31' THEN '' END) AS DateSold
          , (CASE  DateMfg WHEN '9999-12-31' THEN '' END) AS DateMfg, Manufacturer
         , Model, (CASE Number WHEN 0 THEN '' END) AS Number, Color, Note 
    FROM   CAMION_LOCALISATION_V
    WHERE  VIN = 'vin01' 
    ;
    
    =>

    VIN    Immat    DateAchat    DateSold    DateMfg    Manufacturer    Model         Number    Color      Note
    vin01  immat01  2012-07-01                          Leclerc         Modèle Bozo             framboise  note 41
    
    Moi ce que j'aime c'est de voir que DateMFG n'affiche rien ou affiche un espace si l'utilisateur n'entre pas de date dans DateMFG. De cette façon lorsqu'il consultera un camion et qu'il verra qu'il n'a pas de date qui s'affiche, il en mettra une. Si j'affiche 9999-12-31 ou autre chose et que l'utilisateur ne porte pas attention, il pensera qu'il a entrer lui-même cette date et l'erreur va persister pour DateMFG.

    Bon puisque vous interdisez les valeurs NULL qui représente une absence de valeur, peut-on utiliser une valeur NOT NULL '' ??? Ne serait-pas plus simple et limiter les contraintes et les triggers ?
      0  0

  2. #82
    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
    Puisque Temp est à jours, je vais effacer "DZINDZIO_TRUCKS_MANAGEMENT" et je vais la recréer avec "Temp" et je ferai mes ajustements dans la nouvelle "DZINDZIO_TRUCKS_MANAGEMENT" Je suis en retards de 3 jours avec vos modiff En essayant d'être clair et précis dans mes réponses ça demande beaucoup temps et pendant ce temps je ne fait rien d'autre que d'écrire.
      0  0

  3. #83
    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
    Ma dernière version de la table TRUCK

    Le "HIC" c'est que en même temps que j'étudie votre façon de concevoir cette base de données et que je l'adapte pour ma version finale, je l'anglicise car une version mi-Français et mi-anglais c'est un peu embarrassant et ça devient difficile à gérer. Alors maintenant ce qui fonctionne dans "Temp" ne fonctionne plus dans "DZINDZIO_TRUCK_MANAGEMENT". Alors vous continuez en français dans "Temp" et moi je m'occupe de "DZINDZIO_TRUCKS_MANAGEMENT". Vous continuez à détailler sur le forum car c'est fascinant de de lire toutes vos explications. J'espère que ça intéressera aussi d'autres personnes car vous expliquez très bien la logique que vous utilisez pour concevoir cette base de données. En ne gérant que votre base de donnée pour vos tests, vous économiserez aussi du temps. Si le besoin en est, vous pouvez créer une autre base de données pour votre besoin.


    Donc mon code pour la table "CAMION" qui est devenue "TRUCK" et je pense que ce sera la version finale car elle est bien garnie maintenant et très représentative des besoins de l'utilisateur. Si je l'analyse, je me retrouve avec des relations N-1 ce qui n'est pas très jolie alors que la norme est 1-1, 1-N et N-N, Est ce qu'il est préférable de laissé la table comme elle est ou bien si il est préférable de créer d'autres tables un à plusieurs et que la table principale devienne un table secondaire dans les relations N-1 ???


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    CREATE TABLE [dbo].[TRUCK]
    (
    	[TruckId] [int] NOT NULL,
    	[TruckVIN] [varchar](20) NOT NULL,
    	[TruckDateMfg] [date] NOT NULL,
    	[TruckDatePurchased] [date] NOT NULL,
    	[TruckManufacturer] [varchar](15) NOT NULL,
    	[TruckModel] [varchar](15) NOT NULL,
    	[TruckColor] [varchar](15) NOT NULL,
    	[TruckNumber] [varchar](6) NOT NULL,
    	[TruckPlate] [varchar](10) NOT NULL,
    	[USDOT] [varchar](10) NOT NULL,
    	[ICCMC] [varchar](10) NOT NULL,
    	[GVWR] [int] NOT NULL,
    	[FRGAWR] [int] NOT NULL,
    	[2NDGVWR] [int] NOT NULL,
    	[3RDGVWR] [int] NOT NULL,
    	[TruckDateSold] [date] NOT NULL,
     CONSTRAINT [TRUCK_PK] PRIMARY KEY CLUSTERED 
    (
    	[TruckId] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
     CONSTRAINT [TRUCK_NUMBER_AK] UNIQUE NONCLUSTERED 
    (
    	[TruckNumber] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
     CONSTRAINT [TRUCK_PLATE_AK] UNIQUE NONCLUSTERED 
    (
    	[TruckPlate] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
     CONSTRAINT [TRUCK_VIN_AK] UNIQUE NONCLUSTERED 
    (
    	[TruckVIN] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF_TRUCK_TruckVIN]  DEFAULT ('') FOR [TruckVIN]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF_TRUCK_TruckDateMfg]  DEFAULT ('') FOR [TruckDateMfg]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF_TRUCK_TruckDatePurchased]  DEFAULT ('') FOR [TruckDatePurchased]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF_TRUCK_TruckManufacturer]  DEFAULT ('') FOR [TruckManufacturer]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF_TRUCK_TruckModel]  DEFAULT ('') FOR [TruckModel]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF_TRUCK_TruckColor]  DEFAULT ('White') FOR [TruckColor]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF_TRUCK_TruckNumber]  DEFAULT ('') FOR [TruckNumber]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF_TRUCK_TruckImmat]  DEFAULT ('') FOR [TruckPlate]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF_TRUCK_USDOT]  DEFAULT ('') FOR [USDOT]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF_TRUCK_ICCMC]  DEFAULT ('') FOR [ICCMC]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF__TRUCK__GVWR__4CF5691D]  DEFAULT ('') FOR [GVWR]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF__TRUCK__FRGAWR__4DE98D56]  DEFAULT ('12000') FOR [FRGAWR]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF__TRUCK__2NDGVWR__4EDDB18F]  DEFAULT ('20000') FOR [2NDGVWR]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF__TRUCK__3RDGVWR__4FD1D5C8]  DEFAULT ('20000') FOR [3RDGVWR]
    GO
     
    ALTER TABLE [dbo].[TRUCK] ADD  CONSTRAINT [DF_TRUCK_TruckDateSold]  DEFAULT ('9999-12-31') FOR [TruckDateSold]
    GO
     
    ALTER TABLE [dbo].[TRUCK]  WITH CHECK ADD  CONSTRAINT [TRUCK_LOCALISATION_FK] FOREIGN KEY([TruckId])
    REFERENCES [dbo].[LOCALISATION] ([LocalisationId])
    GO
     
    ALTER TABLE [dbo].[TRUCK] CHECK CONSTRAINT [TRUCK_LOCALISATION_FK]
    GO



    Pièce jointe 413815
      1  0

  4. #84
    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
    Salve ordigil,

    D’accord pour USDOT, ICCMC, GVWR, FRGAWR, 2NDGAWR, 3RDGAWR. Inutile d’éclater la table CAMION.


    Citation Envoyé par ordigil Voir le message
    Bon puisque vous interdisez les valeurs NULL qui représente une absence de valeur, peut-on utiliser une valeur NOT NULL '' ??? Ne serait-pas plus simple et limiter les contraintes et les triggers ?
    Toutes les colonnes sont restées NOT NULL. Les contrôles de recouvrement, de dépassements de composants pour un camion, la mise à jour des vues, tout cela est étranger à l’alternative NULL/ NOT NULL...


    Je n’arrive pas à me connecter à DZINDZIO_TRUCKS_MANAGEMENT (time out). En tout cas, j’ai modifié la structure de la table CAMION comme suit, et {CamionImmat} et {CamionNumber} ne sont plus clés candidates, mais si les colonnes ne sont pas « à blanc » (vides), alors l’unicité des valeur sera assurée :

    CREATE TABLE CAMION 
    (
            CamionId              INT             NOT NULL
          , CamionVIN             VARCHAR(24)     NOT NULL
          , CamionDateMfg         DATE            NOT NULL DEFAULT '9999-12-31'
          , CamionManufacturer    VARCHAR(32)     NOT NULL
          , CamionModel           VARCHAR(32)     NOT NULL
          , CamionColor           VARCHAR(16)     NOT NULL DEFAULT 'White'
          , GVWR                  INT             NOT NULL DEFAULT 0
          , USDOT                 VARCHAR(10)     NOT NULL DEFAULT ''
          , ICCMC                 VARCHAR(10)     NOT NULL DEFAULT ''
          , FRGAWR                INT             NOT NULL DEFAULT 12000
          , [2NDGVWR]             INT             NOT NULL DEFAULT 20000
          , [3RDGVWR]             INT             NOT NULL DEFAULT 20000
          , CamionDateAchat       DATE            NOT NULL
          , CamionNumber          VARCHAR(6)      NOT NULL DEFAULT ''
          , CamionImmat           VARCHAR(16)     NOT NULL DEFAULT ''
          , CamionDateVente       DATE            NOT NULL DEFAULT '9999-12-31'
        , CONSTRAINT CAMION_PK PRIMARY KEY (CamionId)
        , CONSTRAINT CAMION_VIN_AK UNIQUE (CamionVIN)
        , CONSTRAINT CAMION_LOCALISATION_FK FOREIGN KEY (CamionId) 
              REFERENCES  LOCALISATION (LocalisationId)
    );
    

    La vue de jointure CAMION_LOCALISATION_V entre LOCALISATION et CAMION :

    CREATE VIEW CAMION_LOCALISATION_V 
        (
           VIN, DateMfg, Manufacturer, Model, Color
         , USDOT, ICCMC, GVWR,FRGAWR, [2NDGVWR], [3RDGVWR], DateAchat
         , Number, Immat, DateSold, Note
        )
    AS
        SELECT CamionVIN, CamionDateMfg, CamionManufacturer, CamionModel, CamionColor
             , USDOT, ICCMC, GVWR, FRGAWR, [2NDGVWR], [3RDGVWR], CamionDateAchat
             , CamionNumber, CamionImmat, CamionDateVente, LocalisationNote
        FROM   CAMION AS x JOIN LOCALISATION AS y ON x.CamionId = y.LocalisationId  
    ;
    
    (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

  5. #85
    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
    Le trigger pour ventiler les inserts dans les tables CAMION et LOCALISATION est aménagé. Si elles sont valorisées,les immats doivent être uniques, même choses pour les numéros (Number) :

    CREATE TRIGGER CAMION_LOCALISATION_INSERT_TR ON CAMION_LOCALISATION_V INSTEAD OF INSERT
    AS
    
    DECLARE @n   as  int ;
    DECLARE @immat as varchar(16) ;
    DECLARE @number as int ;
    DECLARE @error as varchar(128) ;
    
    SET @immat = (SELECT COALESCE(Immat, '') FROM INSERTED) ;
    
    IF @immat <> '' 
    
        SET @n = (SELECT COUNT(*) FROM CAMION WHERE CamionImmat = @immat) ;
        IF @n > 0        
             BEGIN 
              SET @error = 'Il existe déjà un camion immatriculé ' + @immat ; 
    --         RAISERROR (@error, 16,1)  -- state = 16 pour bloquer  
             RAISERROR (@error, 0,1)  -- state = 0 pour les tests 
             RETURN
            END
    
    INSERT INTO LOCALISATION (LocalisationNote)
        SELECT COALESCE(Note, '') FROM INSERTED ;
    
    INSERT INTO CAMION 
        (
          CamionId, CamionVIN, CamionImmat, CamionDateAchat, CamionDateVente, CamionDateMfg
        , CamionManufacturer, CamionModel, CamionNumber, CamionColor
        , USDOT, ICCMC, GVWR, FRGAWR, [2NDGVWR], [3RDGVWR]
       )
        SELECT (SELECT MAX(LocalisationId) FROM LOCALISATION) 
               , VIN,  COALESCE(Immat, ''), DateAchat
               , COALESCE(DateSold, cast('9999-12-31' as date)), COALESCE(DateMfg
               , CAST('9999-12-31' as DATE)), Manufacturer, Model, Number, COALESCE(Color, '')
               , COALESCE(USDOT, ''), COALESCE(ICCMC, '')
               , COALESCE(GVWR, 0), COALESCE(FRGAWR, 12000), COALESCE([2NDGVWR], 20000), COALESCE([3RDGVWR], 20000)
    
        FROM   INSERTED ; 
    GO
    

    Le trigger pour ventiler les updates dans les tables CAMION et LOCALISATION est aménagé :

    CREATE TRIGGER CAMION_LOCALISATION_UPDATE_TR ON CAMION_LOCALISATION_V INSTEAD OF UPDATE
    AS
    
    DECLARE @CamionVIN as varchar(24) ;
    DECLARE @LocalisationId AS INT ;
    DECLARE @n   as  int ;
    DECLARE @immat as varchar(16) ;
    DECLARE @number as varchar(6) ;
    DECLARE @error as varchar(128) ;
    
    SET @immat = (SELECT COALESCE(Immat, '') FROM INSERTED) ;
    SET @number = (SELECT COALESCE(Number, '') FROM INSERTED) ;
    SET @CamionVIN = (select VIN from INSERTED) ;
    SET @LocalisationId = (select CamionId from camion where CamionVIN = @CamionVIN) ;
    
    IF UPDATE(Immat)
        IF @immat <> '' 
            SET @n = (SELECT COUNT(*) FROM CAMION WHERE CamionImmat = @immat) ;
    --        select 'immat à updater =' as the_immat, @immat as immat , COALESCE(@n, 0) as n ;
            IF @n > 0
                BEGIN 
                  SET @error = 'Il existe déjà un camion immatriculé ' + @immat ; 
    --            RAISERROR (@error, 16,1)  -- state = 16 pour bloquer  
                  RAISERROR (@error, 0,1)  -- state = 0 pour les tests 
                RETURN
            END
    
    IF UPDATE(Number)
        IF @Number <> '' 
            SET @n = (SELECT COUNT(*) FROM CAMION WHERE CamionNumber = @Number) ;
     --       select 'Number à updater =' as the_Number, @Number as Number , COALESCE(@n, 0) as nn ;
            IF @n > 0
                BEGIN 
                  SET @error = 'Il existe déjà un camion avec le numéro (number) ' + @Number ; 
    --            RAISERROR (@error, 16,1)  -- state = 16 pour bloquer  
                  RAISERROR (@error, 0,1)  -- state = 0 pour les tests 
                RETURN
            END
    
    IF UPDATE(Immat) OR UPDATE(DateAchat) OR UPDATE(DateSold) OR UPDATE(DateMfg)
       OR UPDATE(Manufacturer) OR UPDATE(Model) OR UPDATE(Number) OR UPDATE(Color)
       OR UPDATE(USDOT) OR UPDATE(ICCMC) 
       OR UPDATE(GVWR) OR UPDATE(FRGAWR) OR UPDATE([2NDGVWR]) OR UPDATE([3RDGVWR])
        UPDATE CAMION
            SET 
                CamionImmat = (SELECT Immat FROM INSERTED)
              , CamionDateAchat = (SELECT DateAchat FROM INSERTED)
              , CamionDateVente = (SELECT DateSold FROM INSERTED)
              , CamionDateMfg = (SELECT DateMfg FROM INSERTED)
              , CamionManufacturer = (SELECT Manufacturer FROM INSERTED)
              , CamionModel = (SELECT Model FROM INSERTED)
              , CamionNumber = (SELECT Number FROM INSERTED)
              , CamionColor = (SELECT Color FROM INSERTED)
              , USDOT = (SELECT USDOT FROM INSERTED)
              , ICCMC = (SELECT ICCMC FROM INSERTED)
              , GVWR = (SELECT GVWR FROM INSERTED)
              , FRGAWR = (SELECT FRGAWR FROM INSERTED)
              , [2NDGVWR] = (SELECT [2NDGVWR] FROM INSERTED)
              , [3RDGVWR] = (SELECT [3RDGVWR] FROM INSERTED)
    
        WHERE EXISTS (SELECT *
                      FROM   INSERTED 
                      WHERE  VIN = CAMION.CamionVIN)
        ;
    IF UPDATE(Note)
        UPDATE LOCALISATION
            SET LocalisationNote = (SELECT Note FROM INSERTED)
        WHERE LocalisationId = @LocalisationId   
    ;
    GO
    
    (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

  6. #86
    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
    Là on ne peut plus se connecter à rien pour l'instant LoL. Même moi je ne peux pas.

    Je dois redémarrer le laptop de SQL Server.

    Vous n'aurai plus accès jusqu'à ce que je règle le problème.

    J'essaie de réparer le plus vite possible…

    Si je réussi à réparer je ferai une copie de Temp => DZINDZIO_TRUCKS_MANAGEMENT et vous aurez les accès comme avant.



    Citation Envoyé par fsmrel Voir le message
    Salve ordigil,

    D’accord pour USDOT, ICCMC, GVWR, FRGAWR, 2NDGAWR, 3RDGAWR. Inutile d’éclater la table CAMION.




    Toutes les colonnes sont restées NOT NULL. Les contrôles de recouvrement, de dépassements de composants pour un camion, la mise à jour des vues, tout cela est étranger à l’alternative NULL/ NOT NULL...


    Je n’arrive pas à me connecter à DZINDZIO_TRUCKS_MANAGEMENT (time out). En tout cas, j’ai modifié la structure de la table CAMION comme suit, et {CamionImmat} et {CamionNumber} ne sont plus clés candidates, mais si les colonnes ne sont pas « à blanc » (vides), alors l’unicité des valeur sera assurée :

    CREATE TABLE CAMION 
    (
            CamionId              INT             NOT NULL
          , CamionVIN             VARCHAR(24)     NOT NULL
          , CamionDateMfg         DATE            NOT NULL DEFAULT '9999-12-31'
          , CamionManufacturer    VARCHAR(32)     NOT NULL
          , CamionModel           VARCHAR(32)     NOT NULL DEFAULT ''
          , CamionColor           VARCHAR(16)     NOT NULL DEFAULT 'White'      
          , USDOT                 VARCHAR(10)     NOT NULL DEFAULT ''
          , ICCMC                 VARCHAR(10)     NOT NULL DEFAULT ''
          , GVWR                  INT             NOT NULL DEFAULT ''
          , FRGAWR                INT             NOT NULL DEFAULT 12000
          , [2NDGVWR]             INT             NOT NULL DEFAULT 20000
          , [3RDGVWR]             INT             NOT NULL DEFAULT 20000
          , CamionDateAchat       DATE            NOT NULL
          , CamionNumber          VARCHAR(6)      NOT NULL DEFAULT '0'
          , CamionImmat           VARCHAR(9)     NOT NULL DEFAULT '0'
          , CamionDateVente       DATE            NOT NULL DEFAULT '9999-12-31'
        , CONSTRAINT CAMION_PK PRIMARY KEY (CamionId)
        , CONSTRAINT CAMION_VIN_AK UNIQUE (CamionVIN)
        , CONSTRAINT CAMION_LOCALISATION_FK FOREIGN KEY (CamionId) 
              REFERENCES  LOCALISATION (LocalisationId)
    );
    

    La vue de jointure CAMION_LOCALISATION_V entre LOCALISATION et CAMION :

    CREATE VIEW CAMION_LOCALISATION_V 
        (
           VIN, DateMfg, Manufacturer, Model, Color
         , USDOT, ICCMC, GVWR,FRGAWR, [2NDGVWR], [3RDGVWR], DateAchat
         , Number, Immat, DateSold, Note
        )
    AS
        SELECT CamionVIN, CamionDateMfg, CamionManufacturer, CamionModel, CamionColor
             , USDOT, ICCMC, GVWR, FRGAWR, [2NDGVWR], [3RDGVWR], CamionDateAchat
             , CamionNumber, CamionImmat, CamionDateVente, LocalisationNote
        FROM   CAMION AS x JOIN LOCALISATION AS y ON x.CamionId = y.LocalisationId  
    ;
    
      0  0

  7. #87
    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
    Quelques tests...

    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number)
        SELECT 'vin01', 'immat01', '2012-07-01', 'Leclerc', 'Modèle Bozo',  '314'  --, 'fraise'
    ;
    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number, Color, Note)
        SELECT 'vin02', 'immat02', '2015-07-05', 'Leclerc', 'Modèle Mac Pherson',  '324' , 'fraise', 'Mon beau camion à moi'
    ;
    
    INSERT INTO LOCAL_LOCALISATION_V (LocalCode, LocalNom) 
        SELECT 'loc01', 'Entrepôt Tartempion' ;
    
    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number, Color, Note)
        SELECT 'vin03', 'immat03', '2016-04-01', 'Leclerc', 'Petit Pierre',  '330' , 'jaune', 'difficile à vendre !'
    ;
    INSERT INTO  CAMION_LOCALISATION_V (VIN, DateAchat, Manufacturer, Model, Number)
        SELECT 'vin04', '2016-04-01', 'Leclerc', 'Le train du Nord',  '331'
    ;
    
    UPDATE LOCAL_LOCALISATION_V
        SET LocalNom = 'Ancien entrepôt Tartempion', Note = 'Ce fut dur...'
        WHERE LocalCode = 'loc01' ;
    
    INSERT INTO LOCAL_LOCALISATION_V (LocalCode, LocalNom) 
        SELECT 'loc02', 'Vendu' ;
    
    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number, Note)
        SELECT 'C1', 'immatC1', '2010-09-01', 'Brassens', 'l''Auvergnat',  '351', 'Ça roule !'
    ;
    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number, Color)
        SELECT 'C2', 'immatC2', '2010-12-06', 'Brassens', 'Marquise',  '352', 'Bleu'
    ;
    
    UPDATE CAMION_LOCALISATION_V 
        SET Color = 'framboise', Note = 'note 41' 
        WHERE VIN = 'vin01' ;
    
    UPDATE LOCAL_LOCALISATION_V
        SET LocalNom = 'Ancien entrepôt Tartempion', Note = 'Ce fut dur...'
        WHERE LocalCode = 'loc01' ;
    
    --------------------------------------
    -- on ne supprime pas les camions
    -- Le delete sera  inopérant !
    -------------------------------------
    DELETE FROM CAMION_LOCALISATION_V ;
    --*/
    
    SELECT '' as CAMION, * FROM CAMION ;
    
    SELECT '' as LOCAL, * FROM LOCAL ;
    
    select '' as localisation, * from LOCALISATION
     
    SELECT '' as CAMION_LOCALISATION_V, * FROM CAMION_LOCALISATION_V ;
    
    SELECT '' AS LOCAL_LOCALISATION_V, * FROM LOCAL_LOCALISATION_V ;
    
    SELECT '' as vin01a, VIN, Immat, DateAchat, DateSold
          , DateMfg, Manufacturer, Model, Number, Color, Note 
    FROM CAMION_LOCALISATION_V
    WHERE VIN = 'vin01' ;
    
    SELECT '' AS vin01b, VIN, Immat, DateAchat, (CASE  DateSold WHEN '9999-12-31' THEN '' END) AS DateSold
          , (CASE  DateMfg WHEN '9999-12-31' THEN '' END) AS DateMfg, Manufacturer, Model, Number, Color, Note 
    FROM CAMION_LOCALISATION_V
    WHERE VIN = 'vin01' 
    ;
    ------------------------------------------
    -- suppression numéro du camion (Number)
    ------------------------------------------
    
    UPDATE CAMION_LOCALISATION_V SET Number = '' WHERE VIN = 'vin01' ;
    
    SELECT '' as vin01c, * from camion ;
    
    SELECT '' AS vin01d, VIN, Immat, DateAchat, (CASE  DateSold WHEN '9999-12-31' THEN '' END) AS DateSold
          , (CASE  DateMfg WHEN '9999-12-31' THEN '' END) AS DateMfg, Manufacturer, Model, Number, Color, Note 
    FROM   CAMION_LOCALISATION_V
    WHERE  VIN = 'vin01' 
    ;
    
    --------------------------------------------------------------------
    -- tentative de doublon pour Immat
    --------------------------------------------------------------------
    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number)
        SELECT 'vin05', 'immat01', '2013-07-01', 'Leclerk', 'Modèle Bozo',  '314'  --, 'fraise'  --, 'immat en double'	
    ;
    
    --------------------------------------------------------------
    -- création sans immat, ça doit passer (consigné dans Note)
    --------------------------------------------------------------
    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number, Note)
        SELECT 'vin06', '', '2013-07-01', 'Leclerk', 'Modèle Bozo',  '314a', 'Pas d''immat'	
    ;
    INSERT INTO  CAMION_LOCALISATION_V (VIN, DateAchat, Manufacturer, Model, Number, Note)
        SELECT 'vin07', '2013-07-01', 'Leclerk', 'Modèle Bozo',  '314b', 'Pas d''immat'	
    ;
    
    ------------------------------------------------------
    --on efface l'immat, ça doit passer !
    ------------------------------------------------------
    UPDATE CAMION_LOCALISATION_V SET Immat = '' WHERE VIN = 'vin01' ;
    SELECT '' AS vin01e, VIN, Immat, DateAchat, (CASE  DateSold WHEN '9999-12-31' THEN '' END) AS DateSold
          , (CASE  DateMfg WHEN '9999-12-31' THEN '' END) AS DateMfg, Manufacturer, Model, Number, Color, Note 
    FROM   CAMION_LOCALISATION_V
    WHERE  VIN = 'vin01' 
    -----------------------------------------------------------------------------------
    --on tente de doublonner une immat existante, ça ne doit pas passer !
    ----------------------------------------------------------------------------------
    
    UPDATE CAMION_LOCALISATION_V SET Immat = 'Immat03', Note = 'tentative de doublonnage'  WHERE VIN = 'vin01' ;
    
    SELECT '' AS vin01f, VIN, Immat, DateAchat, (CASE  DateSold WHEN '9999-12-31' THEN '' END) AS DateSold
          , (CASE  DateMfg WHEN '9999-12-31' THEN '' END) AS DateMfg, Manufacturer, Model, Number, Color, Note 
    FROM   CAMION_LOCALISATION_V
    --WHERE  VIN = 'vin01' 
    ;
    
    --------------------------------------------------------------------
    -- tentatives d'effacement et de doublonnage pour Number
    --------------------------------------------------------------------
    UPDATE CAMION_LOCALISATION_V SET Number = '', Note ='Effacer Number, ça doit passer' WHERE VIN = 'vin06' ;
    UPDATE CAMION_LOCALISATION_V SET Number = '', Note ='Effacer Number, ça doit passer' WHERE VIN = 'vin07' ;
    UPDATE CAMION_LOCALISATION_V SET Number = '324' WHERE VIN = 'vin01' ;
    
    SELECT '' AS vin01k, VIN, Immat, DateAchat, (CASE  DateSold WHEN '9999-12-31' THEN '' END) AS DateSold
          , (CASE  DateMfg WHEN '9999-12-31' THEN '' END) AS DateMfg, Manufacturer, Model, Number, Color, Note 
    FROM   CAMION_LOCALISATION_V
    --WHERE  VIN = 'vin01' 
    ;
    
    -------------------------------------------------------------------
    --vérif si pas de colonne oubliée en update
    -------------------------------------------------------------------
    UPDATE CAMION_LOCALISATION_V SET Manufacturer = 'Le gars Leclerc', Model = 'Le modèle Bozo revu'
                                   , USDOT = 'dot1', ICCMC = 'iccmc1'
                                   , GVWR = 80000, FRGAWR = 12500, [2NDGVWR] = 22000, [3RDGVWR] = 23000 
    WHERE VIN = 'vin01' ;
    
    SELECT '' AS vin01m, VIN, Immat, DateAchat, (CASE  DateSold WHEN '9999-12-31' THEN '' END) AS DateSold
          , (CASE  DateMfg WHEN '9999-12-31' THEN '' END) AS DateMfg, Manufacturer, Model, Number, Color
          , USDOT, ICCMC, GVWR, FRGAWR, [2NDGVWR], [3RDGVWR], Note 
     
    FROM   CAMION_LOCALISATION_V
    --  WHERE  VIN = 'vin01' 
    ;
    
    A vous de tester plus exhaustivement...
    (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

  8. #88
    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
    Oubliez le message dans lequel je dis que j'anglicise DZINDZIO_TRUCKS_MANAGEMENT Lorsque j'aurai remis sql server en marche tous sera pareil pour vous dans DZINDZIO_TRUCKS_MANAGEMENT. On continuera comme on a commencer.
      0  0

  9. #89
    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
    Dites-moi est-ce que vous pouvez vous brancher à Temp ????? Si vous pouvez je ne redémarre pas maintenant. Mais soyez certain que vous êtes encore branché………….. Moi je ne peux plus me brancher à sql server
      0  0

  10. #90
    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 dois vraiment savoir si vous avec encore accès à Temp. Le mieux est de vous débranché et essayer de vous reconnecter pour être certain
      0  0

  11. #91
    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
    Là on ne peut plus se connecter à rien pour l'instant

    Je n'arrive toujours pas à me connecter.
    Le grand camion bleu aurait roulé sur le serveur ? Mais que fait la police !
    (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

  12. #92
    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 triste, désolé
    Bon puisque vous n'êtes pas connecté je redémarre le serveur.
    J'espère réparer rapidement


    Citation Envoyé par fsmrel Voir le message
    Je n'arrive toujours pas à me connecter.
    Le grand camion bleu aurait roulé sur le serveur ? Mais que fait la police !
      0  0

  13. #93
    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
    Bon…

    Mais vu l'heure à Paris, j'éteins tout…

    A demain.
    (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

  14. #94
    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
    TADAMMMMMMMMM

    C'est réparé
    On l'a échappé belle.

    4 heures pour réparer et tout remettre en place

    Une barrette de ram défectueuse peut faire beaucoup de dommage.
    Mon disque dur était inutilisable, la table de partition était corrompue. J'ai du éditer la table de partition pour réparer ce qui était endommagé. Nous avons eu un naufragé ===>>> "DZINDZIO_TRUCKS_MANAGEMENT" était mort car je travaillait dessus lorsque la barrette de ram à flancher. Là rien à faire c'était comme un gros fichier genre comme ça :



    Pièce jointe 413967

    J'avais un backup mais pas assez récent mais j'avais fait un backup de Temp 15 minutes avant le désastre alors oufffffffff. "DZINDZIO_TRUCKS_MANAGEMENT" est une copie exacte de "Temp" maintenant. Je ne sais pas si vous aviez eu le temps de mettre à jours "Temp" avec vos derniers scripts. Alors je me suis contenter de lire vos scripts sans mettre à jour DZINDZIO_TRUCKS_MANAGEMENT"…. On continue comme avant vous avez "Temp" que je ne touche pas et vous avezaussi "DZINDZIO_TRUCKS_MANAGEMENT" comme on a toujours fait auparavant. Donc là je ne touche à rien pour ce soir, il est déjà très tard ici.

    J'ai "dzindzio" et "Trucks_Management" pour faire les tests tout en anglais

    J'attend de voir si vous avez mis tout à jours dans "Temp" et "DZINDZIO_TRUCKS_MANAGEMENT" avant de faire des tests.

    Désolé pour cette panne. Vous me direz si vous avez tous les accès à nouveau pour "DZINDZIO_TRUCKS_MANAGEMENT"

    Merci fsmrel
      0  0

  15. #95
    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
    Désolé pour les réponses en retard ou si je me répète.

    Vous:

    Prenons le cas du camion C1 faisant du train routier avec CamionNumber = N1. A un moment donné, C1 cesse de faire du train routier et passe en mode courte distance : si j’ai bien compris, la règle est donc que C1 ne pourra pas conserver CamionNumber = N1. D’accord, on pourra remplacer N1 par N2, ou le supprimer, cf. mon précédent message, où l’on efface le CamionNumber pour vin01.

    Vous avez compris
      0  0

  16. #96
    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
    Vous aimez beaucoup utiliser "CamionImmat" mais pour l'utilisateur "CamionImmat" ne sert pas à identifier ses Camions puisqu'il ne se souvient pas des numéros d'immatriculation de tous ses Camions. CamionImmat sert au policiers qui émettent des billets de contravention pour stationnement illégale à envoyer les billets de contravention à l'adresse des propriétaires des véhicules. Veuillez noter qu'ici, il y a beaucoup de vol de plaques d'immatriculation

    L'utilisateur se sert de CamionNumber pour identifier ses Camions et il se servira de CamionNumber pour ses recherches dans la base de données.
    Mais que se passera-t-il si un Camion n'a plus de CamionNumber ? Il se dira : Ahhh ouiiii, je vais mettre CamionNumber = 0 pour tous les camions qui n'ont pas de CamionNumber de cette façon si je fais une recherche avec CamionNumber = 0, j'obtiendrai la liste de tous les Camions qui n'ont pas de CamionNumber.

    Il va aussi se dire Ah ouiiiii je vais faire la même chose avec tous les Camions qui n'ont pas de CamionImmat, je vais mettre CamionImmat = 0 pour tous les Camions qui n'ont pas de CamionImmat. De cette façon lorsque je ferai une recherche avec CamionImmat = 0, j'obtiendrai la liste de tous les Camions qui n'ont pas de CamionImmat.


      0  0

  17. #97
    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
    Tout ça ne veut rien dire pour moi, ça porte trop à confusion. C'est un monstre
    CAMION_LOCATISATION = Bonjour Monsieur, nous avons localisé votre camion, il est au centre-ville de Toronto.
    LOCAL_LOCALISATION = Bonjour, j'ai perdu mon camion, je l'ai stationné à l'intérieur d'un local mais j'ai oublier la localisation du local.
    Loc01, Loc02, LocalCode, LocalNom, Entrepôt Tartempion ne veulent rien dire pour l'utilisateur.
    J'essaie de voir comment je vais arriver à concevoir quelque chose de simple pour l'utilisateur puisque je ne m'y retrouve plus moi-même hahaha


    Pour l'utilisateur:
    Bon j'ai acheté un nouveau moteur, euhhhh j'le met dans le garage.
    J'achète une transmission, je l'installe dans le camion.
    La vieille transmission, j'la met dans le garage.
    Le vieux camion, je l'ai vendu.
    J'achète un nouveau Camion dans un seul morceau pas en pièces détachées. Lorsque j'achète un camion, je veux entrer toutes les informations sur un seul formulaire.

    Vais-je pouvoir créer un formulaire pour l'achat d'un camion et pour la vente d'un camion de façon à ce que l'utilisateur ne se casse pas trop la tête ??? Il a déjà peur de notre base de données. Je ne sais pas comment je vais pouvoir simplifier les choses sur les formulaires. Lorsque l'utilisateur achètera un nouveau camion, il s'attend à un seul formulaire, il entre les informations dans un formulaire et appuie sur le bouton "GO".

    Nous ne sommes pas sortie du bois avec les tables "TRUCK_PARTS", "MAINTENANCE" ET "REPAIRS" car il y a quelque chose de faux dans ma logique, ce qui complique le développement. Et je suis incapable de mettre dans une table la façon dont je veux que ça fonctionne alors avant de vous attaquer à ces tables, il faudra bien se comprendre pour ne pas que vous travailler pour rien. Il faut que le raisonnement pour ces trois tables soit bon dès le commencement et non développer sur un faux raisonnement et essayer de corriger avec des triggers.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number)
        SELECT 'vin01', 'immat01', '2012-07-01', 'Leclerc', 'Modèle Bozo',  '314'  --, 'fraise'
    ;
    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number, Color, Note)
        SELECT 'vin02', 'immat02', '2015-07-05', 'Leclerc', 'Modèle Mac Pherson',  '324' , 'fraise', 'Mon beau camion à moi'
    ;
    
    INSERT INTO LOCAL_LOCALISATION_V (LocalCode, LocalNom) 
        SELECT 'loc01', 'Entrepôt Tartempion' ;
    
    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number, Color, Note)
        SELECT 'vin03', 'immat03', '2016-04-01', 'Leclerc', 'Petit Pierre',  '330' , 'jaune', 'difficile à vendre !'
    ;
    INSERT INTO  CAMION_LOCALISATION_V (VIN, DateAchat, Manufacturer, Model, Number)
        SELECT 'vin04', '2016-04-01', 'Leclerc', 'Le train du Nord',  '331'
    ;
    
    UPDATE LOCAL_LOCALISATION_V
        SET LocalNom = 'Ancien entrepôt Tartempion', Note = 'Ce fut dur...'
        WHERE LocalCode = 'loc01' ;
    
    INSERT INTO LOCAL_LOCALISATION_V (LocalCode, LocalNom) 
        SELECT 'loc02', 'Vendu' ;
    
    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number, Note)
        SELECT 'C1', 'immatC1', '2010-09-01', 'Brassens', 'l''Auvergnat',  '351', 'Ça roule !'
    ;
    INSERT INTO  CAMION_LOCALISATION_V (VIN, Immat, DateAchat, Manufacturer, Model, Number, Color)
        SELECT 'C2', 'immatC2', '2010-12-06', 'Brassens', 'Marquise',  '352', 'Bleu'
    ;
    
    UPDATE CAMION_LOCALISATION_V 
        SET Color = 'framboise', Note = 'note 41' 
        WHERE VIN = 'vin01' ;
    
    UPDATE LOCAL_LOCALISATION_V
        SET LocalNom = 'Ancien entrepôt Tartempion', Note = 'Ce fut dur...'
        WHERE LocalCode = 'loc01' ;

    C'est difficile à gérer. Je vais pouvoir s'simplifier les choses sur les formulaires pour l'utilisateur mais plus je vais simplifier pour l'utilisateur, plus ce sera difficile pour moi de concevoir les formulaires PHP ne suffira pas à lui-seul car PHP s'exécute sur le serveur, il n'a aucune idée de se qui se passe sur les formulaires alors je devrai aussi utiliser du JScript dans les formulaires. PHP c'est un bon bonhomme, il ne vous contredit jamais, Il est seulement votre interprète, il vous écoute, il traduit et ensuite il transmet l'information à SQL Server. Ensuite il écoute SQL Server, il traduit et vous transmet les informations. Si on envoie des informations fausses, il nous transmet la réponse de SQL Server dans le genre "Hey ducon, vous me demandez quelque chose d'impossible" Donc je devrai utiliser du JScript dans les formulaires car JScript, lui il sait se qui se passe dans les formulaires alors il peut argumenter avec vous aussi longtemps qu'il le faudra pour que vous entriez des informations cohérentes dans les formulaires avant de demander à PHP d'envoyer tout ça à SQL Server.

    On a créé un monstre

    Petite base de données qui demande beaucoup d'attention
      0  0

  18. #98
    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
    Ave ordigil,

    Je ne peux toujours pas me connecter au server (timeout)…
    (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

  19. #99
    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
    Un instant je vais essayer, j'étais à l'extérieur et il semble que le laptop a redémarrer pendant que j'étais dehors, il se peut que Microsoft ait fait une mise à jour.

    Citation Envoyé par fsmrel Voir le message
    Ave ordigil,

    Je ne peux toujours pas me connecter au server (timeout)…
      0  0

  20. #100
    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
    Très étrange
    En effet le laptop a redémarré seul et SQL Server n'a pas redémarré
    J'Ai réussi à me branché avec votre nom et mot de passe
    Vous pouvez réessayer


    Citation Envoyé par fsmrel Voir le message
    Ave ordigil,

    Je ne peux toujours pas me connecter au server (timeout)…
      0  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