First commit

This commit is contained in:
Yorick Barbanneau 2018-10-12 23:06:04 +02:00
commit 5c269302ed
59 changed files with 5613 additions and 0 deletions

View 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)
);

Binary file not shown.

View 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)
);

Binary file not shown.

View 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)

View 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}\}$