Cours 4
NORMALISATION DE LA STRUCTURE DE DONNÉE
Gestion de projets ... suite
Nous avons déjà modélisé l'application "Gestion de projets" dans un cours précédent.
Pour illustrer la modélisation, notons qu'on aurait pû aussi décrire le problème de la façon suivante:
Afin de construire un système relationnel selon les règles, il faut d'abord normaliser cette structure.
En 1NF:
En 2NF:
En 3NF:
et nous en sommes arrivé à ceci:

Maintenant, on nous demande de garder un profil des compétences de chaque employé. Le profil liste le niveau d'expertise de chaque employé dans les langages de programmation, les outils de développement et les environnements techniques.
Il faut modéliser cette nouvelle application et l'inclure dans le modèle déjà créé.

Voici une application de distribution normale. On produit une facture pour un client qui achète un certain nombre de produits. Notez que le prix de vente doit être dans la table "Détail".

Pour la base de données du Magasin Vidéo, le client emprunte plusieurs films lors d'une transaction:

Lorsqu'un étudiant s'inscrit à plusieurs cours on utilise aussi la structure "Maître/détail":

Dans l'application "Services financiers", la structure répétitive est celle des vendeurs: une transaction représente seulement un produit mais peut être faite par plusieurs vendeurs. C'est pour cela que la table "Détail" contient les vendeurs et non les produits. C'est une adaptation de la structure "Maître/détail" normale:

Pour illustrer la modélisation, notons qu'on aurait pû aussi décrire le problème de la façon suivante:
PROJETS
Titre
Date-début
Date-fin
Pays
Budget
Chef
Employés-assignés *
Nom-employé
Adresse
Bureau
Tel-bureau
Date-embauche
Nom-Dépt
Directeur
Code-budget
Date-du-travail
Feuilles-de-temps *
Nombre-heures-travaillé
Heures-totales
Afin de construire un système relationnel selon les règles, il faut d'abord normaliser cette structure.
En 1NF:
Projet (Num-projet, Titre, Date-début, Date-fin, Pays, Budget, Chef, Heures-totales)
Employés-assignés (Num-employé, Date-du-travail, Nom_employé, Adresse, Bureau, Tel-bureau,
Date-embauche, Salaire, Nom-Dept, Directeur, Code-budget)
Feuile-de-temps (Num-feuille, Num-employé, Num-projet, Nombre-heures-travaillé)
En 2NF:
Projet (Num-projet, Titre, Date-début, Date-fin, Pays, Budget, Chef, Heures-totales)
Employé (Num-employé, Nom_employé, Adresse, Bureau, Tel-bureau,
Date-embauche, Salaire, Dept)
Departement (Num-dept, Nom-Dept, Directeur, Code-budget)
Employés-assignés (Num-feuille, Num-employé, Date-du-travail)
Feuille-de-temps (Num-feuille, Num-projet, Nombre-heures-travaillé)
En 3NF:
Projet (Num-projet, Titre, Date-début, Date-fin, Pays, Budget, Chef)
Employé (Num-employé, Nom_employé, Adresse, Bureau, Tel-bureau,
Date-embauche, Salaire, Dept)
Departement (Num-dept, Nom-Dept, Directeur, Code-budget)
Feuille-maitre (Num-feuille, Num-employé, Date-du-travail)
Feuille-détails (Num-feuille, Num-projet, Nombre-heures-travaillé
et nous en sommes arrivé à ceci:

Maintenant, on nous demande de garder un profil des compétences de chaque employé. Le profil liste le niveau d'expertise de chaque employé dans les langages de programmation, les outils de développement et les environnements techniques.
Il faut modéliser cette nouvelle application et l'inclure dans le modèle déjà créé.
EXEMPLES DE BASES DE DONNÉES NORMALES
Voici une application de distribution normale. On produit une facture pour un client qui achète un certain nombre de produits. Notez que le prix de vente doit être dans la table "Détail".

Pour la base de données du Magasin Vidéo, le client emprunte plusieurs films lors d'une transaction:

Lorsqu'un étudiant s'inscrit à plusieurs cours on utilise aussi la structure "Maître/détail":

Dans l'application "Services financiers", la structure répétitive est celle des vendeurs: une transaction représente seulement un produit mais peut être faite par plusieurs vendeurs. C'est pour cela que la table "Détail" contient les vendeurs et non les produits. C'est une adaptation de la structure "Maître/détail" normale:
