0% ont trouvé ce document utile (0 vote)
19 vues9 pages

Synthèse El P2

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 9

B) Représentation des associations et schéma relationnel :

 On pourra représenter une relation par le schéma suivant :

 Les liens (segments latéraux sur le schéma) correspondent à des associations entre des attributs de relations
différentes. Chaque lien possède 2 cardinalités qui s’écrivent sous la forme d’un couple de nombres, par
exemple : (0,1), (0,N), (1,1), (1,N) , …
Pour un attribut, un couple de la forme (a,b) signifie qu’il y a une correspondance d’au minimum a, et au
maximum b , élément(s) d’un élément d’une autre relation.

 On indiquera les clés primaires en gras, et les clés étrangères en italique (ou précédé d’un #, ou souligné en
pointillés).
On trouvera parfois « CP » devant la clé primaire et « FK » devant une clé étrangère.

 À partir de l’ensemble des relations, on pourra élaborer un schéma conceptuel des données.

Par exemple :

C) Réalisation dans LibreOffice Base :


Création de la base et des différentes tables en tenant compte des contraintes
Pour réaliser la base dans « LibreOffice Base ».
 Ouvrir l'application - Dans le menu Fichier commande Nouveau choisir "Base de données".
 Dans l'assistant de création choisir "Créer une base de données".
 Validez les options : « Oui, je souhaite que la base de données soit référencées »
« Ouvrir la base de données pour édition. »
(Les autres options permettent d'ouvrir une base de données déjà existante ou de se connecter à une base
par l'intermédiaire d'une connexion déjà définie)
La base est créée. Il faut maintenant définir les tables nécessaires à l'application, en commençant par la
première.
 Pour chaque table, sélectionnez l'option "Créer une table en mode Ebauche". La fenêtre qui s'ouvre
permet de définir les champs de la table, leur type et certaines contraintes.
Pour les clés primaires, on pourra choisir le type « integer » en précisant la propriété « AutoValeur » pour
que la valeur du champ soit incrémentée automatiquement à chaque ajout, et ainsi assurer qu’aucun
enregistrement n’aura le même numéro.
Pour les champs de type « Teste (VARCHAR) », on pourra préciser quelques propriétés : la longueur, la
saisie obligatoire ou non.
Enregistrer votre table en précisant le nom de cette table.
Vous pouvez ensuite compléter les données de cette table.
Création de la table Patients et Importation des données
Les données d'une table peuvent exister dans une autre base LibreOffice, dans d'autres sources de
données : autres SGBD (ACCESS, SQL,,DBase …), tableurs (Excel, Lotus…), fichiers texte…
Ces données peuvent être partagées ou exportées/importées pour être réutilisées sans avoir à les ressaisir.
Entre 2 bases LibreOffice un copier-coller suffit. Avec d'autres logiciels il faut exporter les données dans un
fichier texte qui sera importé ensuite.

Définir les relations entre les tables


Dans le menu Outils sélectionner la commande Relations. Ajouter chaque table
Sélectionner la clé primaire d'une table. Faire glisser vers la clé étrangère correspondante de la table liée. Les
champs doivent être de même type.
Il faut définir les propriétés des relations et notamment les actions qui seront exécutées lors de suppressions
ou modifications dans la table principale pour garantir l'intégrité référentielle (c'est-à-dire que chaque
élément d’une table fait bien référence à une information d’une autre table).
• La mise à jour ou la suppression en cascade propage l'action sur les tables liées.

Attention !
Une suppression en cascade supprime dans les tables liées tous les enregistrements se rapportant à
l'enregistrement supprimé de la table principale.
Si l’option "aucune action" n’est choisie, la suppression dans la table principale ne pourra se faire tant que
vous n'aurez pas supprimé manuellement les enregistrements des tables liées.

III) Les SGBDR :


Les Systèmes de Gestion de Bases de Données Relationnelles sont des logiciels, serveurs réseaux pour
la plupart, qui permettent d'accéder à des bases de données relationnelles rassemblant chacune diverses
tables de données associées les unes aux autres.
Parmi les principaux SGBDR on trouve :
MySQL PostgreSQL MariaDM

Oracle Database
SQLite Microsoft SQL Server
IMB Db2

La grande majorité des SGBDR sont des logiciels complexes et les données qu'ils gèrent sont souvent
cruciales : commandes, factures, caractéristiques des articles mis en ligne… C’est pourquoi ils intègrent des
mécanismes de protection en termes de sécurité et de disponibilité :
 authentification des accès par mot de passe ou clé cryptographique,
 chiffrement des échanges réseau,
 administration et création d'utilisateurs,
 séparation des bases de données pour qu'un utilisateur ne puisse accéder qu'à l'une d'entre elles,
 protection du contenu des tables afin d'en interdire la modification,
 duplication des données sur plusieurs serveurs de secours et synchronisation,
 répartition de charge…
Parmi les SGBDR, la situation de SQLite est un peu particulière. En effet, celui-ci repose sur un accès
fichier (et non réseau). Il est destiné à gérer de petites bases de données non administrées, à usage individuel.
Et puisque son code source a été placé dans le domaine public, il peut s'intégrer facilement à d'autres
logiciels. Ceci en fait l'un des SGBDR les plus utilisés dans le monde, puisque à ce jour on peut dénombrer
plus d'un milliard de copies et plus de 1000 milliards de bases de données SQLite.
IV) SQL :
Une base de données relationnelle étant créée, il reste à pouvoir accéder à ces données, à ajouter
d’autres données, les modifier, etc… c’est ce qu’on appelle interroger une base de données, ou réaliser des
requêtes.
Le langage SQL est un langage de requête propre aux bases de données relationnelle.
Pour créer une base de données et effectuer des requêtes sur cette dernière, nous allons utiliser le logiciel
"DB Browser for SQLite" : https://sqlitebrowser.org/.
 Installer « DB Browser for SQLite »
 Lancer ce logiciel, puis cliquer sur « Nouvelle base de données »

 Cliquer sur annuler, pour revenir à la


base de données créée.
 Cliquer sur « exécuter le SQL »

A) Création :
Dans la fenêtre « SQL 1 », copier et exécuter le code suivant :
CREATE TABLE LIVRES
(id INT, titre TEXT, auteur TEXT, ann_publi INT, note INT);
Qu’obtenez-vous ? A quoi correspondent ces instructions ?
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
L’attribut « id » joue le rôle de clé primaire. Par précaution, on peut le préciser en exécutant l’instruction :
CREATE TABLE LIVRES
(id INT, titre TEXT, auteur TEXT, ann_publi INT, note INT, PRIMARY KEY(id));

B) Insertion de données :
Dans la fenêtre « SQL 1 », effacer les anciennes instructions puis copier et exécuter le code suivant :
INSERT INTO LIVRES
(id,titre,auteur,ann_publi,note)
VALUES
(1,'L’île mystérieuse','Verne',1874,10),
(2,'Le crime de l orient express','Christie',1934,8),
(3,'L éducation sentimentale','Flaubert',1869,9),
(4,'Le meilleur des mondes','Huxley',1931,7),
(5,'Fahrenheit 451','Bradbury',1953,7),
(6,'Ubik','K.Dick',1969,9),
(7,'Chroniques martiennes','Bradbury',1950,8),
(8,'La nuit des temps','Barjavel',1968,7),
(9,'Blade Runner','K.Dick',1968,8),
(10,'Les Robots','Asimov',1950,9),
(11,'La Planète des singes','Boulle',1963,8),
(12,'Ravage','Barjavel',1943,8),
(13,'Le Maître du Haut Château','K.Dick',1962,8),
(14,'Le monde des Ā','Van Vogt',1945,7),
(15,'La Fin de l’éternité','Asimov',1955,8),
(16,'De la Terre à la Lune','Verne',1865,10),
(17,'Voyage au centre de la terre','Verne',1864,10),
(18,'Les vacances d’Hercule Poirot','Christie',1941,8);
Le code s’exécute correctement. En cliquant sur « Parcourir les données » on remarque que la table LIVRES
contient bien les données

C) Sélection de données :
1. Exécuter le code suivant, à quoi correspond-il ?
SELECT id, titre, auteur, ann_publi, note
FROM LIVRES
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………

2. Comment ne sélectionner que le titre et l’année ?


…………………………………………………………………………………
…………………………………………………………………………………

3. Comment sélectionner tous les attributs sans les écrire ?


…………………………………………………………………………………
…………………………………………………………………………………

D) Sélection de données avec condition(s) :


1. Lorsque l’on veut imposer des conditions, on utilise la clause SQL : « WHERE » qui permet de
sélectionner certaines lignes
Que produit le code suivant ?
SELECT titre, ann_publi
FROM LIVRES
WHERE auteur='Verne'
…………………………………………………………………………………

2. Quelle requête faut-il taper pour obtenir tous les noms de livres dont la note est supérieure ou égale à 9 ?

…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
3. Quelle requête faut-il taper pour obtenir tous les noms de livres dont la note est supérieure ou égale à 8 et
dont la publication a été faite au XXe siècle.

…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………

4. La clause SQL : « ORDER BY » permet de ranger les résultats dans un ordre précis. La clause « DESC »
inverse le sens.
Que produit le code suivant ?
SELECT titre
FROM LIVRES
WHERE auteur='K.Dick' ORDER BY ann_publi
…………………………………………………………………………………
5. Que produit le code suivant ?
SELECT titre
FROM LIVRES
WHERE auteur='K.Dick' ORDER BY ann_publi DESC
…………………………………………………………………………………
6. Tester ces instructions sur un attribut de type TEXT. Que se passe-t-il ?
…………………………………………………………………………………

7. Que faut-il taper pour obtenir les noms des auteurs des livres, dans l’ordre alphabétique ?
…………………………………………………………………………………
…………………………………………………………………………………

Remarque : ………………………………………………………………………

…………………………………………………………………………………
…………………………………………………………………………………

E) Jointures
1. En réutilisant ce qui a déjà été fait, créer une nouvelle base de données nommée : bd_Livres.db
Créer une table AUTEURS avec comme attributs : id, nom, prenom, an_naiss, langue_ecriture
Créer une table LIVRES avec comme attributs : id, titre, id_auteur, an_publi, note
 Pour ajouter des données à la table AUTEURS , on utilise la requête SQL suivante :
INSERT INTO AUTEURS
(id,nom,prenom,an_naiss,langue_ecriture)
VALUES
(1,'Orwell','George',1903,'anglais'),
(2,'Herbert','Frank',1920,'anglais'),
(3,'Asimov','Isaac',1920,'anglais'),
(4,'Huxley','Aldous',1894,'anglais'),
(5,'Bradbury','Ray',1920,'anglais'),
(6,'K.Dick','Philip',1928,'anglais'),
(7,'Barjavel','René',1911,'français'),
(8,'Boulle','Pierre',1912,'français'),
(9,'Van Vogt','Alfred Elton',1912,'anglais'),
(10,'Verne','Jules',1828,'français'),
(11,'Christie','Agatha',1890,'anglais'),
(12,'Flaubert','Gustave',1821,'français');
 Pour ajouter des données à la table LIVRES, on utilise la requête suivante :
INSERT INTO LIVRES
(id,titre,id_auteur,an_publi,note)
VALUES
(1,'1984',1,1949,10),
(2,'Dune',2,1965,8),
(3,'Fondation',3,1951,9),
(4,'Le meilleur des mondes',4,1931,7),
(5,'Fahrenheit 451',5,1953,7),
(6,'Ubik',6,1969,9),
(7,'Chroniques martiennes',5,1950,8),
(8,'La nuit des temps',7,1968,7),
(9,'Blade Runner',6,1968,8),
(10,'Les Robots',3,1950,9),
(11,'La Planète des singes',8,1963,8),
(12,'Ravage',7,1943,8),
(13,'Le Maître du Haut Château',6,1962,8),
(14,'Le monde des Ā',9,1945,7),
(15,'La Fin de l’éternité',3,1955,8),
(16,'De la Terre à la Lune',10,1865,10),
(17,'L’île mystérieuse',10,1874,10),
(18,'Le crime de l orient express',11,1934,8),
(19,'L éducation sentimentale',12,1869,9),
(20,'Voyage au centre de la terre',10,1864,10),
(21,'Les vacances d’Hercule Poirot',11,1941,8);

2. Pour associer ces deux tables, on utilise les jointures. Avant cela, on peut au moment de la création
préciser qu’un attribut jouera le rôle de clé étrangère. On aurait pu écrire :
CREATE TABLE LIVRES
(id INT, titre TEXT, id_auteur INT, an_publi INT, note INT, PRIMARY KEY (id),
FOREIGN KEY (id_auteur) REFERENCES AUTEURS(id));
Cela permet de détecter d’éventuelles erreurs au niveau de la clé étrangère.
Que produit le code suivant ?
SELECT *
FROM LIVRES
INNER JOIN AUTEURS ON LIVRES.id_auteur = AUTEURS.id
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
3. Que produit le code suivant ?
SELECT *
FROM AUTEURS
INNER JOIN LIVRES ON LIVRES.id_auteur = AUTEURS.id
…………………………………………………………………………………
…………………………………………………………………………………
4. Que faut-il taper pour obtenir une jointure, en ne sélectionnant que les attributs : nom, prénom, et titre ?
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
5. Que faut-il taper pour obtenir une jointure, ne sélectionnant que les trois attributs : titre, nom et langue et
qui a été publié au XXe siècle, avec une sélection du plus récent au plus ancien ?

…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………

F) requêtes de mise à jour :


1. On réutilise la base de données correspondant à la requête suivante :
CREATE TABLE LIVRES
(id INT, titre TEXT, auteur TEXT, ann_publi INT, note INT, PRIMARY KEY (id));

Que faut-il taper pour ajouter les livres œuvres suivantes :


 « Michel Strogoff » de « Jules Verne » publié en 1876 et noté 7
 « Le grand Meaulnes » d’ « Alain Fournier » publié en 1913 et noté 9
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………

2. Que produit le code suivant ?


UPDATE LIVRES
SET note=7
WHERE titre = 'Ubik'
…………………………………………………………………………………
…………………………………………………………………………………
3. Que faut-il écrire comme requête pour attribuer la note 10 à tous les livres de Jules Verne ?
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………

4. Que produit le code suivant ?


DELETE FROM LIVRES
WHERE titre='Ubik'
…………………………………………………………………………………
…………………………………………………………………………………
5. Que faut-il écrire comme requête pour supprimer tous les livres édités avant le 20e siècle et qui n’ont pas
obtenu la note 10 ?

…………………………………………………………………………………
…………………………………………………………………………………
G) Compléments :
 Une fois qu’une table est créée, il n’est pas possible d’en créer une autre avec le même nom.
Si on souhaite recréer une table avec le même nom, pour effectuer un schéma différent, il faut d’abord
supprimer celle portant le même nom.
On écrira :
DROP TABLE Nom_Table ;

Attention, cela ne peut se faire que si la table n’est pas une référence d’une clé étrangère d’une autre table…

 Le standard SQL définit plusieurs types


types numériques :
nom du type exact / approché description
SMALLINT exact entier 16 bits signés
INTEGER exact entiers 32 bits signés
INT exact comme INTEGER
BIGINT exact entiers 64 bits signés
DECIMAL(t , d) décimal signé de t chiffres dont d après la virgule
REAL approché flottant 32 bits
DOUBLE PRECISION approché flottant 64 bits

types textes :
nom du type description
CHAR(n) Chaîne d’exactement n caractères. Les caractères manquant sont complétés
par des espaces.
VARCHAR(n) Chaîne d’au plus n caractères
TEXT Chaîne de taille quelconque

 Les fonctions d’agrégation :


Les fonctions d’agrégation dans le langage SQL permettent d’effectuer des opérations statistiques sur une
colonne (en général de type numérique). Les principales sont :
COUNT() pour compter le nombre d’enregistrements sur une table ou une colonne distincte.
MAX() pour récupérer la valeur maximale d’une colonne sur un ensemble de ligne
MINX() pour récupérer la valeur minimale d’une colonne sur un ensemble de ligne
SUM() pour compter la somme d’un attribut sur un ensemble d’enregistrements
AVG() pour calculer la moyenne d’un attribut sur un ensemble d’enregistrements.

Vous aimerez peut-être aussi