Synthèse El P2
Synthèse El P2
Synthèse El P2
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 :
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.
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 »
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. 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 ?
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
…………………………………………………………………………………
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…
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