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

Langage SQL Discussion :

Ecrire en langage algébrique


Sujet :

Langage SQL

  1. #21
    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
    Bonsoir Fae,

    Vous avez fait un travail sérieux.


    Observations :

    Dans votre introduction, vous écrivez « algèbre relationnel », mais algèbre est un nom féminin.

    Dans le travail à faire, on vous demande de présenter dans l’ordre, le MPD, le MLD et enfin le MCD. Autrement dit, on vous demande en quelque sorte d’effectuer une rétro-conception, ce qui est plutôt bizarre ! Dans un monde normal, on commence par fournir la liste des règles de gestion, celles-ci permettant de bâtir le MCD. Une fois celui-ci réputé valide, on en déduit le MLD. Le MPD est hors sujet dans la mesure où il est du ressort du DBA. Il n’y a pas de MPD « théorique », il dépend essentiellement du SGBD et varie donc énormément d’un SGBD à l’autre (choix des index de performance, du clustering, des table-spaces et de leur organisation (free space à prévoir, etc.), bref toutes choses mises en oeuvre dans les tréfonds de la soute. Commencer par le MPD n’a de sens que lorsque pour une application opérationnelle on dispose des CREATE TABLE, CREATE INDEX, etc., et qu’on change par exemple de SGBD, et encore, on devrait au moins disposer du MCD !


    Votre MPD

    Votre MPD est en fait un MLD. Il manque tous les objets physiques (index, table-spaces et autres).


    Votre MLD

    Votre MLD est conforme.


    Votre MCD

    Vous n’avez pas tenu compte de mes observations (post #19) ! Je rappelle que l’attribut id_avion n’a rien à faire dans l’entité-type VOL. Je rappelle que la patte connectant EMPLOYE et QUALIFIER est porteuse d’une cardinalité 0,N et non pas 1,N.

    L’attribut type_avion a disparu dans QUALIFIER, ce qui invalide votre MCD !


    Nouveau MCD

    En fait, pour que votre MCD puisse donner lieu au MLD qui vous a été proposé (cf. votre 1er post), il va falloir le dégrader et le ramener à celui qui figure ci-dessous, où l’entité-type TYPE_AVION (dont j’ai fait mention dans le post #6) voit le jour, mais sous forme d’entité-type fictive (nom mis entre parenthèses dans le contexte Looping), c’est-à-dire ne donnant pas lieu à table dans le MLD :

    Nom : Fae - mcd conforme au mld (loo).png
Affichages : 149
Taille : 25,5 Ko

    ACCESS

    Du fait de ce qui précède, la génération pour ACCESS proposée dans le post #19 devient caduque. Elle est à remplacer par la suivante :

    Sub Create_Tables()
    
    DoCmd.RunSQL "CREATE TABLE AVION(" & _
       "id_avion INT," & _
       "type_avion VARCHAR(16) NOT NULL," & _
       "distance_croisiere INT NOT NULL," & _
       "CONSTRAINT AVION_PK PRIMARY KEY(id_avion)" & _
    ");"   
    
    DoCmd.RunSQL "CREATE TABLE VOL(" & _
       "n_vol INT," & _
       "ville_dep VARCHAR(48) NOT NULL," & _
       "ville_arr VARCHAR(48) NOT NULL," & _
       "distance INT NOT NULL," & _
       "heure_dep DATETIME NOT NULL," & _
       "heure_arr DATETIME NOT NULL," & _
       "id_avion INT NOT NULL," & _
       "CONSTRAINT VOL_PK PRIMARY KEY(n_vol)," & _
       "CONSTRAINT VOL_AVION_FK FOREIGN KEY(id_avion) REFERENCES AVION(id_avion)" & _
    ");"   
    
    DoCmd.RunSQL "CREATE TABLE EMPLOYE(" & _
       "id_emp INT," & _
       "nom_emp VARCHAR(48) NOT NULL," & _
       "salaire_annuel INT NOT NULL," & _
       "CONSTRAINT EMPLOYE_PK PRIMARY KEY(id_emp)" & _
    ");"   
    
    DoCmd.RunSQL "CREATE TABLE QUALIFICATION(" & _
       "id_emp INT," & _
       "type_avion VARCHAR(16)," & _
       "CONSTRAINT QUALIFICATION_PK PRIMARY KEY(id_emp, type_avion)," & _
       "CONSTRAINT QUALIFICATION_EMPLOYE_FK FOREIGN KEY(id_emp) REFERENCES EMPLOYE(id_emp)" & _
    ");"   
    
    End Sub
    
    Pour exécution avec ACCESS :

    Outils base de données > Visual Basic > Importer un fichier > le fichier créé par Looping

    Au résultat :

    Nom : Fae - mld access from loo(v2).png
Affichages : 141
Taille : 18,7 Ko


    Requêtes

    J’ai jeté un coup d’oeil rapide à vos premières requêtes, ça a l’air correct. Evitez d’écrire « type − avion » (cf. Ra1), écrivez plutôt « type_avion ». Avec les espacements, votre symbole « − » prête à confusion, on le confondrait facilement avec l’opérateur algébrique « DIFFERENCE ». Pour mémoire, plutôt que

    σQUALIFICATION(type_avion='A300'),

    à la grande époque de cette algèbre relationnelle (il y a quarante ans) il était d’usage d’écrire de manière canonique

    σtype_avion='A300' (QUALIFICATION)

    mais c’est un détail...

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

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

  2. #22
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2020
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup pour votre aide.

  3. #23
    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
    Bonjour Fae,

    J'espère que tout s'est bien passé.

    Bonne continuation
    (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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/11/2016, 16h15
  2. Ecrire la grammaire du langage Pascal
    Par je viens du sud dans le forum Langage
    Réponses: 1
    Dernier message: 19/02/2012, 12h06
  3. opérateur TIMES langage algébrique
    Par gentelmand dans le forum Débuter
    Réponses: 4
    Dernier message: 31/12/2007, 11h48
  4. Ecrire un projet Web avec deux langages
    Par rabddoul dans le forum Framework .NET
    Réponses: 3
    Dernier message: 02/03/2007, 16h24
  5. [langage] Ecrire un bloc de texte dans un fichier
    Par sarahbes dans le forum Langage
    Réponses: 6
    Dernier message: 10/06/2004, 11h40

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