Implémentation

Dans le cadre de la conception de la base de données de l'association "Objectifs", vous avez abouti au modèle relationnel ci-après.

1
Projet (#Num:int, Nom:string, Debut:date, Fin:date, Specialite=>Specialite, ChefDeProjet=>Membre) avec Nom NOT NULL, Debut NOT NULL, Fin NOT NULL, Specialite NOT NULL, ChefDeProjet NOT NULL
2
Tache (#NumProjet=>Projet, #NumTache, Nom:string, Participant=>Membre) avec Nom NOT NULL
3
Membre (#Num:int, Prenom:string, Nom:string, Specialite=>Specialite) avec (Prenom, Nom) KEY
4
Partenaire (#Nom:string, Description:string)
5
Partenariat (#Partenaire=>Partenaire, #Projet=>Projet, role:string)
6
Specialite (#Intitule:string)

Question

Écrire et exécuter un code SQL LDD[1] compatible Oracle correspondant au modèle relationnel dans un fichier objectifs.sql.

Question

Écrire et exécuter un code SQL LMD[2] compatible Oracle permettant d'insérer dans la base les données du tableau initial dans un fichier objectifs-init.sql.

Indice

Pour insérer des dates utiliser la fonction TO_DATE : Fonctions de traitement des dates

Question

Écrire un fichier CSV pour chaque table (projet.csv, specialite.csv...), avec les informations de votre choix, afin d'alimenter la base en données complémentaires. Chargez ces fichiers à l'aide de SQL Developer.

Indice

Produisez ces fichiers à l'aide d'un éditeur de texte comme GEdit, et à l'aide d'un tableur comme LibreOffice Calc.

Indice

Pensez à finaliser votre série d'insertions par une instruction COMMIT afin de terminer correctement la transaction.

Question

Écrire en algèbre relationnel, puis en SQL les vues suivantes afin de faciliter l'accès à vos données :

  • vProjet est la jointure des projets et des membres chefs de projet.

  • vTaches est la jointure de vProjet avec les taches et les membres participants.

  • vPartenariat est la jointure entre les partenariats, vProjet et les partenaires.

Indice

La création de ces vues sera enregistrée dans un fichier objectifs-vues.sql.

Solution

Algèbre relationnel
  • vProjet = JOINTURE (Projet, Membre, Projet.ChefDeProjet=Membre.Num)

  • vTaches = JOINTURE (vProjet, JOINTURE (Tache, Membre, Tache.Participant=Membre.Num), Tache.NumProjet=vProjet.Num)

  • vPartenariat = JOINTURE (vProjet, JOINTURE (Partenariat, Partenaire, Partenariat.Partenaire=Partenaire.Nom), Partenariat.Projet=vProjet.Num)