--- title: "Base de données avancées : Introduction" date: 2022-01-11 tags: ["définitions", "modèle relationnel", "relation"] 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 (*Structured 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.