Exemple pratique
On considère la table suivante :
titre | nom_auteur | prenom_auteur | date_nai_auteur | langue | ann_publi | thèmes |
---|---|---|---|---|---|---|
1984 | Orwell | George | 1903 | anglais | 1949 | Totalitarisme, science-fiction, anticipation, Dystopie |
Dune | Herbert | Frank | 1920 | anglais | 1965 | science-fiction, anticipation |
Fondation | Asimov | Isaac | 1920 | anglais | 1951 | science-fiction, Economie |
Le meilleur des mondes | Huxley | Aldous | 1894 | anglais | 1931 | Totalitarisme, science fiction, dystopie |
Fahrenheit 451 | Bradbury | Ray | 1920 | anglais | 1953 | science-fiction, Dystopie |
Ubik | K. Dick | Philip | 1928 | anglais | 1969 | science-fiction, anticipation |
Chroniques martiennes | Bradbury | Rey | 1920 | anglais | 1950 | science-fiction, anticipation |
La nuit des temps | Barjavel | René | 1911 | français | 1968 | science-fiction, tragédie |
Blade runner | K Dick | Philip | 1928 | anglais | 1968 | Intelligence artificielle, science fiction |
Les robots | Asimov | Isaac | 1920 | anglais | 1950 | science fiction, Intelligence artificielle |
La planète des singes | Boulle | Pierre | 1912 | francais | 1963 | science fiction, Dystopie |
Ravage | Barjavel | René | 1911 | français | 1943 | Science-Fiction, anticipation |
Le maître du haut chateau | K.Dick | Philip | 1928 | anglais | 1962 | Dystopie, Uchronie |
Le monde des A | Van Vogt | Alfred Elton | 1912 | anglais | 1945 | science fiction, IA |
La fin de l'éternité | Asimov | Isaac | 1920 | anglais | 1955 | science-fiction, voyage dans le temps |
De la Terre à la Lune | Verne | Jules | 1828 | français | 1865 | Science-Fiction, aventure |
Imaginez quels problèmes peuvent se poser si on cherche à mettre en place un traitement automatisé pour les données de cette table.
Quelles solutions imaginer pour y remédier ?
Le modèle relationnel
Un des modèles de données le plus courant est le modèle relationnel. Les principes de base de ce modèles sont les suivants :
- séparer les données dans plusieurs tables
- chaque table contient des données relatives à un même sujet
- éviter la redondance des données
- ne pas stocker des données qui peuvent être calculées (exemple : une ligne Total)
- chaque champ ne contient qu'une seule information
- mettre les tables en relation par l'utilisation de clés
- clés primaires : leurs valeurs (souvent des entiers) permettent d'identifier une donnée de manière unique
- clés étrangères : référencent une clé primaire d'une autre table
Quelques éléments de vocabulaire
- un enregistrement est composé de plusieurs informations distinctes appartenant à un même objet ou une même entité. Pour faire simple, cela correspond à une ligne du tableau.
- un attribut est une information élémentaire appartenant à un enregistrement. Les attributs se voient ici sur les intitulés de colonne.
- un attribut atomique est un attribut ne contenant qu'une seule information.
- Chaque attribut possède un type : le titre est du type chaîne de caractères et la note est du type entier.
- Le domaine d'un attribut donné correspond à un ensemble (fini ou infini) de valeurs admissibles. Le domaine pour note est l'ensemble des entiers de 0 à 10.
A vous de jouer
- Combien notre table possède t-elle d'enregistrements ?
- Quels sont tous les attributs de la table ?
- Citez un attribut atomique et un attribut non atomique.
- Pour chaque attribut, précisez le type et le domaine.
Construire une structure optimisée
Identifiez les éléments de la table qui sont en contradiciton avec les principes du modèle relationnel énoncés ci-dessus.
Vous avez identifié plusieurs problèmes liés à cette table qui transgressent les règles du modèle relationnel que nous avons d'énoncé. Vous allez à présent redistribuer ces données dans 4 tables :
- une table Livres
- une table Auteurs
- une table Themes
- une table Langues
- Quels attributs proposez-vous pour chacune des tables
- Comment peut-on connaître l'auteur de 1984 et les thèmes abordés ?
- Dans la table Livres, quelle est la clé primaire ? quelles sont les clés étrangères ?
- Dans la table Auteurs, l'attribut date de naissance est-il une clé primaire ?
- Quel peut être l'intérêt de mettre la langue dans une table langues ? Quel problème dans la table de départ cela résout-il ?
En conclusion
On retiendra les principes généraux pour regrouper les données en plusieurs tables :
- Mettre dans une même table les données relatives à un même sujet
- Chaque attribut ne contient qu'une seule valeur
- Créer une clé primaire pour chaque table
- Créer de nouvelles tables pour
- éviter la redondance des données
- limiter les incohérences lors des mises à jour
- faciliter le traitement des données
A vous de jouer
Structurer des données
On considère la table Films suivante :
Titre | Annee | Realisateur | Note | NbAavis | Duree | Type |
---|---|---|---|---|---|---|
Apocalypse Now | 1979 | Francis Ford Coppola | 8,4 | 578150 | 2h27 | Drama, Mystery, War |
Full Metal Jacket | 1987 | Stanley Kubrick | 8,3 | 644089 | 1h56 | Drama, War |
Scarface | 1983 | Brian De Palma | 8,3 | 704025 | 170 min | Crime, Drama |
Orange mécanique | 1971 | S. Kubrick | 8,3 | 725846 | 136' | Crime, Drama, Sci-Fi |
2001, l'odyssée de l'espace | 1968 | Kubrick | 8,3 | 574171 | 2h29 | Adventure, Science fiction |
Taxi Driver | 1976 | Martin Scorsese | 8,3 | 685042 | 1h54 | Crime, Drama |
source https://www.imdb.com
- Proposer une structure conforme au modèle relationnel pour ces données.
- Donner le contenu de chacune des tables.
Récupérer des données dans un modèle relationnel
IdClient | Nom | Adresse | |
---|---|---|---|
1 | Jean Bon | 2 rue Jean Mermoz - Caen | jean.bon@free.fr |
2 | Alain Térieur | 3 rue Paul Eluard - Hérouville | alain.terieur4@hotmail.com |
3 | Thérèse Etroit | 16 rue de la porte - Mondeville | therese.etroit@orange.fr |
4 | Gilles Héjone | 1 place de la bastille - Bénouville | gilledu14@sfr.fr |
5 | Hélène de Troie | 2 rue Néper - Caen | ln23@laposte.net |
extrait Table Clients
IdProduit | CodeProduit | NomProduit | Prix | Stock |
---|---|---|---|---|
1 | 12x24F | gel hydroalcoolique 100ml | 3.21 | 2 |
2 | 21s53R | masque FFP2 x100 | 10,57 | 3 |
3 | 97D74S | visière de protection | 0.50 | 10 |
4 | 10F36A | désinfectant indistriel 10L | 53,25 | 5 |
extrait Table Produits
IdCmd | IdClient | IdProduit | Quantite | Expedie |
---|---|---|---|---|
1 | 4 | 1 | 1 | 1 |
2 | 2 | 2 | 2 | 0 |
3 | 1 | 1 | 1 | 1 |
4 | 3 | 3 | 4 | 0 |
5 | 1 | 4 | 3 | 0 |
extrait Table Commandes pour un jour J
- Dans la table Commandes quelles est la clé primaire ? quelles sont les clés étrangères ?
- A combien s'élève le montant total des commandes de la journée J
- Quels sont les noms des clients pour lesquels la commande a été expédiée ?
- Quels sont les produits pour lesquels le stock ne sera pas suffisant ?