First commit
This commit is contained in:
commit
5c269302ed
59 changed files with 5613 additions and 0 deletions
43
content/bdd/1-introduction/files/bibliotheque_creation.sql
Normal file
43
content/bdd/1-introduction/files/bibliotheque_creation.sql
Normal file
|
@ -0,0 +1,43 @@
|
|||
CREATE SCHEMA Bibliotheque;
|
||||
SET search_path TO Bibliotheque, public;
|
||||
CREATE TYPE Bibliotheque.Sexe AS ENUM ('F', 'M');
|
||||
CREATE TYPE Bibliotheque.Etat AS ENUM ('Neuf', 'Bon', 'Use');
|
||||
CREATE TABLE Bibliotheque.Lecteur (
|
||||
num_lecteur serial NOT NULL,
|
||||
nom text NOT NULL,
|
||||
sexe Bibliotheque.Sexe NOT NULL,
|
||||
-- age devient date de naissance
|
||||
naissance date NOT NULL,
|
||||
ville text NOT NULL,
|
||||
-- clefs candidates
|
||||
PRIMARY KEY (num_lecteur)
|
||||
);
|
||||
CREATE TABLE Bibliotheque.Livre (
|
||||
isbn integer NOT NULL,
|
||||
titre text NOT NULL,
|
||||
auteur text NOT NULL,
|
||||
editeur text NOT NULL,
|
||||
annee interval YEAR NOT NULL,
|
||||
-- clefs candidates
|
||||
PRIMARY KEY (isbn)
|
||||
);
|
||||
CREATE TABLE Bibliotheque.Exemplaire (
|
||||
num_exemplaire serial NOT NULL,
|
||||
isbn integer NOT NULL,
|
||||
date_achat date NOT NULL,
|
||||
etat Bibliotheque.Etat NOT NULL,
|
||||
-- clefs candidates
|
||||
PRIMARY KEY (num_exemplaire),
|
||||
-- Clefs étrangères
|
||||
FOREIGN KEY (isbn) REFERENCES Bibliotheque.Livre(isbn)
|
||||
);
|
||||
CREATE TABLE Bibliotheque.Emprunt (
|
||||
num_exemplaire serial NOT NULL,
|
||||
num_lecteur serial NOT NULL,
|
||||
date_emprunt date NOT NULL,
|
||||
-- clefs candidates
|
||||
PRIMARY KEY (num_exemplaire, num_lecteur),
|
||||
-- Clefs étrangères
|
||||
FOREIGN KEY (num_exemplaire) REFERENCES Bibliotheque.Exemplaire(num_exemplaire),
|
||||
FOREIGN KEY (num_lecteur) REFERENCES Bibliotheque.Lecteur(num_lecteur)
|
||||
);
|
BIN
content/bdd/1-introduction/files/cours1.pdf
Normal file
BIN
content/bdd/1-introduction/files/cours1.pdf
Normal file
Binary file not shown.
41
content/bdd/1-introduction/files/schema_avions.sql
Normal file
41
content/bdd/1-introduction/files/schema_avions.sql
Normal file
|
@ -0,0 +1,41 @@
|
|||
-- schema de Base de données pour la gestion d'une compagnie aérienne.
|
||||
CREATE SCHEMA aerocremi;
|
||||
SET search_path TO aerocremi, public;
|
||||
|
||||
CREATE TABLE aerocremi.avion(
|
||||
-- Je pars du principe que le numéro de série est donné par le fabricant
|
||||
-- de l'avion et qu'il ne contient que des chiffres. Il ne peut donc pas
|
||||
-- être du type serial.
|
||||
num_serie integer NOT NULL,
|
||||
type text NOT NULL,
|
||||
capacite integer NOT NULL,
|
||||
PRIMARY KEY (num_serie)
|
||||
);
|
||||
|
||||
CREATE TABLE aerocremi.pilote(
|
||||
matricule serial NOT NULL,
|
||||
nom text NOT_NULL,
|
||||
anciennete date,
|
||||
PRIMARY KEY (matricule)
|
||||
);
|
||||
|
||||
CREATE TABLE aerocremi.vol(
|
||||
num_vol text NOT NULL,
|
||||
-- Je part du principe qu'il faut gérer les times zones sur les horaires
|
||||
-- de vol (logique pour une compagnie aérienne)
|
||||
-- https://www.postgresql.org/docs/current/static/datatype-datetime.html
|
||||
heure_depart time with time zone NOT NULL,
|
||||
heure_arrivee time with time zone NOT NULL,
|
||||
PRIMARY_KEY (num_vol)
|
||||
);
|
||||
|
||||
CREATE TABLE aerocremi.planning(
|
||||
num_planning serial NOT NULL,
|
||||
num_vol text NOT NULL,
|
||||
matricule integer NOT NULL,
|
||||
date_vol date NOT NULL
|
||||
PRIMARY KEY (num_planning),
|
||||
FOREIGN KEY num_vol REFERENCES aerocremi.vol(num_vol),
|
||||
FOREIGN KEY num_avion REFERENCES aerocremi.avion(num_serie),
|
||||
FOREIGN KEY matricule REFERENCES aecrocremi.pilote(matricule)
|
||||
);
|
BIN
content/bdd/1-introduction/files/td1.pdf
Normal file
BIN
content/bdd/1-introduction/files/td1.pdf
Normal file
Binary file not shown.
31
content/bdd/1-introduction/index.md
Normal file
31
content/bdd/1-introduction/index.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
title : "Base de données : Introduction"
|
||||
date: 2018-09-10
|
||||
categories: ["Base de données", "Cours"]
|
||||
---
|
||||
|
||||
Lors de ce cours, nous allons créer une application web de gestion d'un hôtel :
|
||||
gestion des réservation et des factures.
|
||||
|
||||
## Qu'est ce qu'une application web
|
||||
|
||||
C'est une application de type client <> serveur disponible via un navigateur
|
||||
web. Elle est conçue à partir d'un ensemble de sources (au sens code source)
|
||||
hétérogène : HTML, CSS et javascript côté client; PHP, Python perl etc
|
||||
côté serveur.
|
||||
|
||||
On compte 3 types d'applications web :
|
||||
|
||||
- **statique** (un site web basique)
|
||||
- dynamique **côté serveur**
|
||||
- dynamique *côté client et serveur**
|
||||
|
||||
## Processus de création d'une base de données
|
||||
|
||||
1- données du "monde réel"
|
||||
2- réel perçu
|
||||
3- données et contraintes
|
||||
4- modèle relationnel
|
||||
5- implémentation dans un SGBDR *(Système de Gestion de Base de Données
|
||||
Relationnelles)
|
||||
|
113
content/bdd/2-definitions/indev.md
Normal file
113
content/bdd/2-definitions/indev.md
Normal file
|
@ -0,0 +1,113 @@
|
|||
---
|
||||
title: "Base de données : définitions"
|
||||
date: 2018-09-17
|
||||
modify: 2018-09-24
|
||||
categories: ["Base de données", "cours"]
|
||||
---
|
||||
|
||||
## Le domaine
|
||||
|
||||
Il représente l'ensemble des valeurs autorisées pour une information. Cette
|
||||
notion est très proche [de domaine de définition](w_dom-def) en mathématiques.
|
||||
On le décompose en deux grandes familles.:
|
||||
|
||||
- **élémentaire** : les types de base comme les entiers, réels, chaines de
|
||||
caractères mais aussi les intervales ou les listes de valeurs
|
||||
- **structuré** : des types de valeurs plus structurée comme pas exemple la
|
||||
notion de point définit pat une composant `X` et `Y`.
|
||||
|
||||
[w_dom-def]:https://fr.wikipedia.org/wiki/Ensemble_de_d%C3%A9finition
|
||||
|
||||
## Le produit cartésien
|
||||
|
||||
Le produit cartésien des domaines $D_{1} D_{2}$ représente l'ensemble
|
||||
des valeurs contenue dans $D_{1}$ et $D_{2}$, il est noté
|
||||
|
||||
$$
|
||||
D_{1} \times D_{2}
|
||||
$$
|
||||
|
||||
## La relation
|
||||
|
||||
Elle représente un sousrensemble r du produit carthésien. Elle est caractérisée
|
||||
par un nom.
|
||||
|
||||
## Tuple ou n-tuple
|
||||
|
||||
Il représente une ligne dans une relation
|
||||
|
||||
## Attributs
|
||||
|
||||
Nom donné à un colonne. Il est composé d'un indentifiant et d'un domaine
|
||||
|
||||
## Schéma de relation
|
||||
|
||||
Il ets définis par un ensemble d'attributs U et un ensenble de contraintes. on
|
||||
le note courrament R(U), R(U) décrit l'intention de la relation. La relation
|
||||
(tableau + valeurs) définit une extention.
|
||||
|
||||
Une relation `r` est une instance finie d'un schema de relation notée `r:R(U)`,
|
||||
exemple :
|
||||
|
||||
```
|
||||
AlimentsPreferes(nom,type,origine,bio)
|
||||
```
|
||||
|
||||
## La base de données
|
||||
|
||||
Un schéma de base de données et un ensemble de schemas de relation liés par des
|
||||
dépendances référencielles (un type de contraines). Une base de données est
|
||||
alors un ensemble de relations (extensions) associées au schéma et verifiamts
|
||||
ses contraines.
|
||||
|
||||
## Le modèle relationnel
|
||||
|
||||
Il est définis en 1970 par *E. F. Codd* (IBM Research Lab) et se veut
|
||||
indépendant de la representation physique des données. Il a une assise
|
||||
mathématique forte ([algèbre relationnelle](w_algebre-r), [formes
|
||||
normales](w_form-norm)).
|
||||
|
||||
[w_algebre-r]:https://fr.wikipedia.org/wiki/Alg%C3%A8bre_relationnelle
|
||||
[w_form-norm]:https://fr.wikipedia.org/wiki/Forme_normale_(bases_de_donn%C3%A9es_relationnelles)
|
||||
|
||||
### Objectifs généraux
|
||||
|
||||
- Éliminer les comportements anormaux lors des mises à jour des données.
|
||||
- Éliminer les données redondantes.
|
||||
- Meilleures compréhension des relationssémantiques entres les données.
|
||||
|
||||
### Buts
|
||||
|
||||
Éliminer les anomalies de la relation universelle (tous les attributs sur toutes
|
||||
les colonnes) pour faciliter la manipulation des relation. En un mot normaliser
|
||||
les relations.
|
||||
|
||||
### Méthode
|
||||
|
||||
Décomposer la relation universelle en sous-relations qui ne souffre pas des
|
||||
anomalies de la relation universelle.
|
||||
|
||||
- conserve toutes les données
|
||||
- conserve un minimum de contraintes
|
||||
|
||||
### Les types de contraintes
|
||||
|
||||
- sur les attributs : valeur nulle autorisées (ou non), valeur imposée ...
|
||||
- sur les n-uplets (plusieurs valeurs) : l'exemple d'une bibliothèque, la date
|
||||
de retour d'un livre doit être suppérieure à la date d'emprunt.
|
||||
- sur les relations : clé, cardinalité
|
||||
- sur la base de données : clé étrangères
|
||||
- sur l'évolution temporelle de la base de données : exemple de l'état civil,
|
||||
on passe, dans l'ordre de célibataire à marié puis divorcé. On ne peut pas
|
||||
passer de célibataire à divorcé.
|
||||
|
||||
# La notion de clé
|
||||
|
||||
Une clé doit permettre de trouver un tuple dans une relation avec seulement une
|
||||
partie des attributs, dit plus simplement, identifier sans équivoque un
|
||||
enregistrement.
|
||||
|
||||
Du point de vue mathématique, il ne doit pas avoir deux fois le même éléments
|
||||
dans un ensemble : deux tuples d'une même relation ne peuvent être égaux.
|
||||
|
||||
Soit un ensemble $U\{A_{1}, A_{2}, ..., A_{n}\}$
|
Loading…
Add table
Add a link
Reference in a new issue