Add advanced database introduction
This commit is contained in:
parent
763302825e
commit
727c924f9f
4 changed files with 939 additions and 3 deletions
|
@ -22,9 +22,10 @@ enableRobotsTXT = false
|
||||||
description = "Licence ADSILLH et Master IDI, mes notes de cours et de TD"
|
description = "Licence ADSILLH et Master IDI, mes notes de cours et de TD"
|
||||||
toc = true
|
toc = true
|
||||||
post_navigation = true
|
post_navigation = true
|
||||||
mainSections = ["reseau", "progsys", "installations", "bdd", "securite", "systemes_exploitation"]
|
mainSections = ["bdd_avancees", "systemes_exploitation"]
|
||||||
post_meta = ["author", "date", "categories", "translations"]
|
post_meta = ["author", "date", "categories", "translations"]
|
||||||
|
mathjaxPath = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js" # Specify MathJax path
|
||||||
|
mathjaxConfig = "TeX-AMS-MML_HTMLorMML" # Specify MathJax config
|
||||||
[Params.sidebar]
|
[Params.sidebar]
|
||||||
home = "right" # Configure layout for home page
|
home = "right" # Configure layout for home page
|
||||||
list = "left" # Configure layout for list pages
|
list = "left" # Configure layout for list pages
|
||||||
|
|
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 96 KiB |
142
content/bdd_avancees/1-introduction/index.md
Normal file
142
content/bdd_avancees/1-introduction/index.md
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
---
|
||||||
|
title: "Base de données avancées : Introduction"
|
||||||
|
date: 2022-01-11
|
||||||
|
tags: ["système", "appels système", "interruption"]
|
||||||
|
categories: ["Base de données avancées", "Cours"]
|
||||||
|
mathjax: true
|
||||||
|
---
|
||||||
|
|
||||||
|
## Base de données : Definitions
|
||||||
|
|
||||||
|
D'après Georges Gardarin:
|
||||||
|
|
||||||
|
> [Une base de données est un] Ensemble de données modélisant les objets d'une
|
||||||
|
> partie du monde réel et servant de support à une application informatique
|
||||||
|
|
||||||
|
Une base de données est un ensemble de donnée structurées ou non, enregistrées
|
||||||
|
de manière structurée (base de données relationnelle) ou non (NoSQL). Chose
|
||||||
|
importante: **les données sont interrogeable par n'importe quel critère**.
|
||||||
|
|
||||||
|
Concrètement, les bases de données permettent l'indépendance des données et
|
||||||
|
programmes.
|
||||||
|
|
||||||
|
## Les bases de données relationnelles
|
||||||
|
|
||||||
|
C'est un type de base de données définis d'après un modèle introduit par *Edgar
|
||||||
|
F. Codd (IBM Research Lab 1969)*. Les données sont organisées de façon
|
||||||
|
structurées dans un ou plusieurs tableaux appelés **tables** ou
|
||||||
|
**relation**.Chaque ligne de la relation est appelée **n_uplet** ou
|
||||||
|
enregistrement.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Ces bases doivent comporter certaines caractéristiques:
|
||||||
|
|
||||||
|
* persistance des données (sauvegarde)
|
||||||
|
* interrogation des données en SQL (*Simple Query Language*)
|
||||||
|
* recherche et mise en forme des données stockées
|
||||||
|
* partage des données entre plusieurs utilisateurs
|
||||||
|
* gestion de la concurrence
|
||||||
|
* optimisation des opérations dans un soucis constant de performance
|
||||||
|
* sécurité des données (gestion des incidents)
|
||||||
|
|
||||||
|
SGBD(R): Système de gestion de base de données (relationnelles) ou DBMS en
|
||||||
|
anglais (DataBase Management System).
|
||||||
|
|
||||||
|
### Opérations sur relations
|
||||||
|
|
||||||
|
On distingue trois type de langages:
|
||||||
|
|
||||||
|
* LDD -- langage de définition des données -- création ou suppression des
|
||||||
|
relations.
|
||||||
|
* LMD -- langage de Manipulation des donnés -- interrogation des données
|
||||||
|
contenue dans la | les relation(s)
|
||||||
|
* LCO --langage des contrôle des données -- gérer des droits, valider / annuler
|
||||||
|
des transactions
|
||||||
|
|
||||||
|
Ces trois langages représentent des sous-ensemble de SQL pour *Structured Query
|
||||||
|
Language*. Ce langage informatique normalisé sert à exploiter les bases de
|
||||||
|
données relationnelles.
|
||||||
|
|
||||||
|
#### L'implémentation du langage des manipulation des données en SQL
|
||||||
|
|
||||||
|
Les principales opérations de ce sous-ensemble sont:
|
||||||
|
|
||||||
|
* `SELECT` pour interroger
|
||||||
|
* `INSERT` pour ajouter des lignes (n-uplets)
|
||||||
|
* `UPDATE` pour mettre à jour des n-uplets
|
||||||
|
* `DELETE` pour supprimer des n-uplets
|
||||||
|
|
||||||
|
Celles-ci sont regroupées en **transaction** : un regroupement atomique d'un
|
||||||
|
ensemble d'opérations. C'est au SGBDR d'assurer la mise en œuvre des
|
||||||
|
transactions. Régis par le **modèle relationnel**, les SGBDR fonctionnent
|
||||||
|
d'ailleurs tous quasiment de la même façon, du moins pour ce qui est du *LDD* et
|
||||||
|
*LDM*.
|
||||||
|
|
||||||
|
### Les transactions
|
||||||
|
|
||||||
|
Pour revenir aux transactions, les propriété ACID doivent être respectées afin
|
||||||
|
de valider leurs fiabilité:
|
||||||
|
|
||||||
|
* **Atomicité** : la transaction doit se faire en entier ou pas du tout. En
|
||||||
|
cas de problème en cours de route, l'ensemble de la transaction doit être
|
||||||
|
annulée.
|
||||||
|
* **Cohérence** : chaque transaction amène le système dans un état valide
|
||||||
|
(contraintes d'intégrités, rollback, déclencheurs etc)
|
||||||
|
* **Isolation** : chaque transaction s'exécute indépendamment des autres, comme
|
||||||
|
si elle était seule sur le système, dans dépendre d'une autre.
|
||||||
|
* **Durabilité** : une fois confirmée, une transaction doit rester de façon
|
||||||
|
durable sur le système, même après un incident (panne matérielle,
|
||||||
|
électrique etc.)
|
||||||
|
|
||||||
|
## Définitions importantes
|
||||||
|
|
||||||
|
### Le domaine
|
||||||
|
|
||||||
|
Le domaine est un ensemble de valeur atomique (non décomposable), il est
|
||||||
|
équivalent au typage en programmation
|
||||||
|
|
||||||
|
### Le produit cartésien
|
||||||
|
|
||||||
|
Le produit cartésien de deux domaines A et B noté \\(A \times B\\) appelé aussi
|
||||||
|
**ensemble-produit** représente l'ensemble des n_uplets la première
|
||||||
|
composante est A et la seconde est B.
|
||||||
|
|
||||||
|
Le produit cartésien \\(A \times B\\) représente les couples *( x;y )* tel que
|
||||||
|
\\(x \in A\\) et \\(y \in B\\).
|
||||||
|
|
||||||
|
### Relation
|
||||||
|
|
||||||
|
Une relation est un sous ensemble *r* du produit cartésien d'un ensemble de
|
||||||
|
domaine. Elle est caractérisée par un nom. D'un point de vue mathématique, une
|
||||||
|
relation est caractérisée par \\( R = ( D_1, D_2, D_3 )\\). Pour un exemple du
|
||||||
|
**monde réel**, prénom l'exemple d'un livre : \\( livre = ( titre, année,
|
||||||
|
auteur) \\).
|
||||||
|
|
||||||
|
### Attribut
|
||||||
|
|
||||||
|
Un attribut est un **identifiant donné à un domaine**, pour faire simple c'est
|
||||||
|
le nom donné à **une colonne** de notre table (relation). Le nombre d'attributs
|
||||||
|
d'une relation définis son degrés d'*arité*.
|
||||||
|
|
||||||
|
L'arité d'une fonction, ou opération, est le nombre d'arguments ou d'opérandes
|
||||||
|
qu'elle requiert.
|
||||||
|
|
||||||
|
### Schéma de relation
|
||||||
|
|
||||||
|
Le schéma de relation *R* est défini par un ensemble d'attributs *U* et un
|
||||||
|
ensemble de contraintes. On le note couramment *R(U)*. Ce schéma décrit
|
||||||
|
l'intention de la relation. La relation(le tableau) elle défini une extension
|
||||||
|
|
||||||
|
Une relation *r* est une instance finie d'un schéma de relation, elle est noté
|
||||||
|
*r:R(U)*.
|
||||||
|
|
||||||
|
### Schéma de Base de données
|
||||||
|
|
||||||
|
C'est un ensemble de schémas de relations liées par des **dépendances
|
||||||
|
référentielles** (attributs communs (attributs communs, dépendance d'inclusion).
|
||||||
|
On peut voir le schéma de base de données comme un plan des relations. Il vise à
|
||||||
|
minimiser la redondance et maximiser la cohérence.
|
||||||
|
|
||||||
|
**La base de données** est alors un ensemble de relations associé au schéma et
|
||||||
|
vérifiant ses contraintes d'intégrités.
|
|
@ -1 +1 @@
|
||||||
Subproject commit fbd4163bd076a82adf430116ac4e5f165df86c8f
|
Subproject commit 82bb440881efa8724fb1c49585cd4819b57eadc1
|
Loading…
Add table
Add a link
Reference in a new issue