# TD1
## Exercice 0 :
- La DF correspondante :
**CodePole** $\to$ CodePole
- Le MCD complété :

- Dans le schéma relationnel on remplace :
```
INTERVENANT (NumIntervenant, NomIntervenant, PrenomIntervenant, DateEmbauche, DateFinContrat, DateNaissance, RueIntervenant, CPIntervenant, VilleIntervenant, TelIntervenant, CoutHoraire)
Clé primaire : NumIntervenant
```
par
```
INTERVENANT (NumIntervenant, NomIntervenant, PrenomIntervenant, DateEmbauche, DateFinContrat, DateNaissance, RueIntervenant, CPIntervenant, VilleIntervenant, TelIntervenant, CoutHoraire,CodePole)
Clé primaire : NumIntervenant
Clé étrangère : CodePole en référence à CodePole de la relation POLE
```
- Dans le script SQL d’implémentation de base de données on remplace :
```SQL
create table intervenant
(
num int null,
codePole int null,
nom varchar(255) null,
prenom varchar(255) null,
dateEmbauche datetime null,
dateFinContrat datetime null,
dateNaiss datetime null,
rue varchar(255) null,
CP varchar(255) null,
ville varchar(255) null,
tel varchar(255) null,
coutHoraire varchar(255) null,
constraint intervenant_pk
unique (num)
);
```
par
```SQL
create table intervenant
(
num int null,
codePole int null,
nom varchar(255) null,
prenom varchar(255) null,
dateEmbauche datetime null,
dateFinContrat datetime null,
dateNaiss datetime null,
rue varchar(255) null,
CP varchar(255) null,
ville varchar(255) null,
tel varchar(255) null,
coutHoraire varchar(255) null,
constraint intervenant_pk
unique (num),
constraint intervenant_pole___fk
foreign key (codePole) references pole (code)
);
```
## Exercice 1 :
La table **Classe** indique pour une classe son numéro, qui l'identifie, ainsi que son nom.
La table **Entreprise** identifie avec un numéro et donne le détail de celle-ci : sa raison sociale, son adresse, son contact (fax, email, téléphone), le nom de la personne a que l'on contacte, le nom de responsable. Finalement elle indique le site de l'entreprise son niveau et si elle est toujours en activité. Une entreprise peut être spécialisé dans un ou plusieurs domaine et accueillir des stagiaires.
La table **Etudiant** donne les informations relatives à l'identité d'un étudiant("Nom", "Prenom"), l'année d'obtention de son diplôme, ses logins et mots de passe ainsi que s'il est toujours en étude.
La table **Professeur** donne le nom et le prénom du professeur ainsi que son login et mot de passe. Enfin elle donne son contact avec son mail.
La table **Specialite** indique une specialite en la décrivant avec un libelle. Ces spécialités peuvent s'appliquer à plusieurs entreprises différentes
La table **Stage** décrit un stage avec ses dates de début et de fin, son type, la description du projet et les observations qui y ont été faites. Un stage est fait par un unique étudiant, il est encadré par un seul professeur et concerne une seule entreprise. Il peut y avoir une ou plusieurs missions à réaliser pendant le stage.
La table **Mission** décrit une mission. Une missions se fait dans le cadre d'un stage.
La table **Spec_entreprise** fait le lien entre une spécialité et une entreprise. Une entreprise peut avoir une ou plusieurs spécialité.
La table **Prof_enseigne_classe** indique quand un professeur enseigne une classe.
### Dépendances fonctionnelles :
- **Classe['num_classe']** $\to$ Classe
- **Entreprise['num_entreprise']** $\to$ Entreprise
- **Etudiant['num_etudiant']** $\to$ Etudiant
- **Etudiant['num_classe']** $\subseteq$ Classe['num_classe']
- **Mission['num_mission']** $\to$ Mission
- **Mission['num_mission']** $\subseteq$ Stage['num_stage']
- **Professeur['num_prof']** $\to$ Professeur
- **Prof_classe['num_prof', 'num_classe']**$\to$ Prof_classe
- **Prof_classe['num_classe']** $\subseteq$ Classe['num_classe']
- **Prof_classe['num_prof']** $\subseteq$ Professeur['num_prof']
- **Specialite['num_spec']**$\to$ Specialite
- **Spec_entreprise['num_entreprise', 'num_spec']** $\to$ Spec_entreprise
- **Spec_entreprise['num_spec']**$\subseteq$ Spec['num_spec']
- **Stage['num_stage']** $\to$ Stage
- **Stage['num_etudiant']** $\subseteq$ Etudiant['num_etudiant']
- **Stage['num_prof']** $\subseteq$ Professeur['num_prof']
- **Stage['num_entreprise']** $\subseteq$ Entreprise['num_entreprise']
### MLD :
```
classe = (num_classe INT, nom_classe VARCHAR(128));
entreprise = (num_entreprise INT, raison_sociale VARCHAR(128), nom_contact VARCHAR(128), nom_resp VARCHAR(128), rue_entreprise VARCHAR(128), cp_entreprise INT, ville_entreprise VARCHAR(128), tel_entreprise VARCHAR(32), fax_entreprise VARCHAR(32), email VARCHAR(128), observation TEXT, site_entreprise VARCHAR(128), niveau VARCHAR(32), en_activite LOGICAL);
etudiant = (num_etudiant INT, nom_etudiant VARCHAR(64), prenom_etudiant VARCHAR(64), annee_obtention DATE, login VARCHAR(8), mdp VARCHAR(30), en_activite LOGICAL, #num_classe);
professeur = (num_prof INT, nom_prof VARCHAR(64), prenom_prof VARCHAR(64), login VARCHAR(8), mdp VARCHAR(30), email VARCHAR(100));
specialite = (num_spec INT, libelle VARCHAR(128));
stage = (num_stage INT, debut_stage DATETIME, fin_stage DATETIME, type_stage VARCHAR(128), desc_projet TEXT, observation_stage TEXT, #num_etudiant, #num_prof, #num_entreprise);
mission = (num_mission INT, libelle VARCHAR(128), #num_stage);
spec_entreprise = (#num_entreprise, #num_spec);
prof_enseigne_classe = (#num_classe, #num_prof, est_prof_principal LOGICAL);
```
avec un peu de mise en forme :

### MCD :
Vous pouvez aussi trouver le .loo dans le repo.

## Exercice 2 :
Voici le schéma relationnel correspondant au MCD donné :
```
TYPE_TRIATHLON = (Code_type_triathlon, Libellé_type_triathlon, Distance_natation, Distance_epreuve_cycliste, Distance_course_a_pied);
TRIATHLON = (Numero_triathlon , Nom_triathlon, Lieu_triathlon, Date_triathlon, #Code_type_triathlon);
PRODUIT_DOPANT = (Code_produit , Libelle_produit, Taux_maximum);
TRIATHLETE = (Numero_de_licence, Nom_du_triathlete, Prenom_du_triathlete ; Sexe_triathlete, Adresse_triathlete, Date_de_naissance, #Code_categorie_age);
CATEGORIE_AGE = (Code_categorie_age, Libelle_categorie_age, age_debut_categorie, age_fin_categorie);
INSCRIPTION = (Numero_de_dossard , Date_d_inscription, Indication_forfait, Temps_natation, Temps_course_cycliste, Temps_course_a_pied, Classement_categorie, #Numero_triathlon, #Numero_de_licence);
CONTROLE = (#Numero_de_dossard, #Code_produit, Taux_constate);
```
avec un peu de mise en forme :

## Exercice 3 :
