From 727c924f9f124614a38bbc313e85c837fd06afbb Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Fri, 14 Jan 2022 00:09:44 +0100 Subject: [PATCH] Add advanced database introduction --- config.toml | 5 +- .../images/schema-bdd_relationnel.svg | 793 ++++++++++++++++++ content/bdd_avancees/1-introduction/index.md | 142 ++++ themes/mainroad | 2 +- 4 files changed, 939 insertions(+), 3 deletions(-) create mode 100644 content/bdd_avancees/1-introduction/images/schema-bdd_relationnel.svg create mode 100644 content/bdd_avancees/1-introduction/index.md diff --git a/config.toml b/config.toml index 2bdb473..98a043d 100644 --- a/config.toml +++ b/config.toml @@ -22,9 +22,10 @@ enableRobotsTXT = false description = "Licence ADSILLH et Master IDI, mes notes de cours et de TD" toc = true post_navigation = true - mainSections = ["reseau", "progsys", "installations", "bdd", "securite", "systemes_exploitation"] + mainSections = ["bdd_avancees", "systemes_exploitation"] 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] home = "right" # Configure layout for home page list = "left" # Configure layout for list pages diff --git a/content/bdd_avancees/1-introduction/images/schema-bdd_relationnel.svg b/content/bdd_avancees/1-introduction/images/schema-bdd_relationnel.svg new file mode 100644 index 0000000..ea9313c --- /dev/null +++ b/content/bdd_avancees/1-introduction/images/schema-bdd_relationnel.svg @@ -0,0 +1,793 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/bdd_avancees/1-introduction/index.md b/content/bdd_avancees/1-introduction/index.md new file mode 100644 index 0000000..6bedb13 --- /dev/null +++ b/content/bdd_avancees/1-introduction/index.md @@ -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. + +![Modélisation d'une base de donnéesrelationnelle](images/schema-bdd_relationnel.svg) + +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. diff --git a/themes/mainroad b/themes/mainroad index fbd4163..82bb440 160000 --- a/themes/mainroad +++ b/themes/mainroad @@ -1 +1 @@ -Subproject commit fbd4163bd076a82adf430116ac4e5f165df86c8f +Subproject commit 82bb440881efa8724fb1c49585cd4819b57eadc1