SGBDR
-
Les bases de données
-
Structure de stockage de données (stockage [bas niveau → fichier] = disque, RAM)
-
Moteur (C.R.U.D → create, read, update & delete → logique ou physique)
-
Les BD proposent un vision (paradigme)
ex : SGBDR = table en relation, SGBDOO = objets en relation, SGBDNoSQL → Twitter, google, Amazon (Sharding) = graphe, document, tableau, clé-valeur, …
-
Communication en réseau (paradigme Client-Serveur)
1970 → langages différents
IBM a créer une norme, le langage SQL (Structured Query Langage) et l'a déposer auprès de l'ANSI (American norm standard institute).
-
Structure d'une base de données relationnelle
Vue d'en haut, c'est un graphe (nœud reliés entre eux par des segments ou arc ex : représentation des atomes) ou les nœuds sont des TABLE et les arcs sont des relations.
Ex :
Si l' »ID » est déclarer comme PK (Primary Key) les valeurs de « ID » ne peuvent pas être identique.
SQL : CREATE TABLE TABETU (ID Integer Primary Key, Nom Varchar (32), Prénom varchar (32), Sexe Char[1])
Lorsqu'on veux relier une table à une autre, si par exemple on veux relier la table TABFORMATION à TABETU, il faut rajouter une colonne dans TABEETU.
IDF étant une FK (Foreign Key) relié à ID (en PK) de la table TABFORMATION.
SQL : CREATE TABLE TABETU (ID Integer Primary Key, Nom Varchar (32), Prénom varchar (32), Sexe Char[1], IDF Integer Foreign Key References TABFORMATION(ID)) ;
On fait la même chose si on veut rajouter une table TABTYPETU, on rajoute une colonne à TABETU.
-
Le langage standard SQL
/! Attention aux différents dialectes SQL !
Deux parties :
-
DDL = Data Définition Langage → CREATE, DROP TABLE, ALTER TABLE (Structure)
-
DML = Data Management Langage → C.R.U.D (Create = INSERT, READ = SELECT)
INSERT INTO NomTable (col, … ) VALUES ('_', '_', '_') ;
SELECT projection (col, …)
FROM table(s)
WHERE condition1
AND condition2
OR condition3
ORDER BY colonne(s)
Exercice : réaliser le modèle de données puis le schéma relationnel avec le langage UML des spécifications suivantes :
-
un client est défini par un nom, prénom et adresse
-
un client passe des commandes
-
une commande est caractérisée par une date, des produits commandés avec leurs quantités commandés, leur prix et les totaux
-
un produit est caractérisé par un code, une désignation et un prix unitaire
UML :
Un nœud ne supporte pas d'aller de plusieurs à plusieurs (N à N) il faut donc crée la table « LIGNE » qui permet d'aller de un à plusieurs (1 à N).
PFK (Primary Foreign Key) = « #machin »
CLIENT (Idclient, nom, prénom, voie, CP, ville)
COMMANDE (Idcommande, date, total, #Idclient)
PRODUIT (Code, désignation, prix unitaire)
LIGNE (Quantité_commandée, #Idcommande, #Code)
DDL → Data Definition language [SQL]
-
Structure de données = tables, vues (mémoire, materalisé)
La vue est le résultat d'un SELECT (calcul)
Sur ces structure, on fait un C.R.U.D (Create, Read, Update & Delete) → CREATE TABLE, SELECT sur des tables système, ALTER TABLE, DROP TABLE
-
Privilèges (droits)
DBA = Data Base Administrator (→ super administrateur)
-
Optimisation
Les optimisation de bases sont les clés primaires et secondaires.
Création d'indexes → Créer des DBSpace qui permet une recherche plus rapide, une recherche saltatoire (par saut)
-
Architecture d'un SGBDR
Isoler & protéger → créer un systèmes en couches (Layers)
Pour cela on créer des applications et des vues en l'utilisateur et la BDD.
Application : (ne change jamais)
Vue : Moyenne (nom, moyenne)
Eleve (IdElve, nom)
Tables : Note (IdN, note, #mat, #IdEleve)
Matière (IdM, nom, coef, …)
La requête SQL : CREATE TABLE :
CREATE TABLE NomTable (id primary key (surrogate Key) → « clé artificielle » auto-incrémentée
CREATE TABLE PRODUIT (idProd integer primary key …
Code CHAR(10) unique,
désignation VARCHAR(32),
prix décimal(6,2))
Squirrel + Derby (embarqué)
-
Création de table
CREATE TABLE TABPRODUIT (idProd Integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), code char(8) unique, designation VARCHAR(32),
prix DECIMAL(6,2))
INSERT INTO TABPRODUIT (code, designation, prix) VALUES ('MOT123', 'VESPA', 1099.99)
INSERT INTO TABPRODUIT (code, designation, prix) VALUES ('MOT127', 'PEUGEOT', 1099.99)
CREATE INDEX LADESIGNATION ON TABPRODUIT(designation)
CREATE INDEX LEPRIX ON TABPRODUIT(prix)
ALTER TABLE TABPRODUIT ADD CONSTRAINT ch_prix CHECK(prix >0 AND prix < 50000)
ALTER TABLE TABPRODUIT ALTER COLUMN code NOT NULL
ALTER TABLE TABPRODUIT ALTER COLUMN designation NOT NULL
ALTER TABLE TABPRODUIT ALTER COLUMN prix NOT NULL
Exemple d'un diagramme UML réaliser selon l'exercice du cours.