diff --git a/banque.md b/banque.md index 6994ae1..ac8176e 100644 --- a/banque.md +++ b/banque.md @@ -30,51 +30,12 @@ Voir les adresses des serveurs [postgreSQL](https://sources.neotech.fr/Universit Voir la syntaxe de [postgreSQL](syntaxe.md) -### 1. Titulaires - -Création de la table `holder`. - -```sql -create table holder ( - "id" bigint primary key generated always as identity, - "type" text, - "created_at" timestamp -); -``` - -- entier sur 64 bits : `bigint` -- clé primaire : `primary key` -- incrément automatique : `generated always as identity` - -Création de la table `person`. - -```sql -create table person ( - "id" bigint primary key references holder(id), - "firstname" text, - "lastname" text, - "birthdate" date -); -``` - Créer un compte individuel pour _Françoise Zanetti_, née le 12 avril 1995. - Créer une entreprise nommée _Boulangerie de Valorgue_, créée le 19 août 2014, numéro d’immatriculation FR19803269968. - Ajouter un nouveau titulaire : _Justin Hébrard_ né le 11/03/1993. -```sql -create table company ( - "id" bigint primary key references holder(id), - "name" text, - "creation_date" date -); -``` -```sql -create table bank ( - "id" bigint primary key references holder(id), - "name" text -); -``` ```sql insert into holder (type) values ('BANK') returning holder; @@ -97,9 +58,7 @@ Il existe deux méthodes pour gérer le type. 2. utiliser une énumération `enum`. -```sql -create type holder_type as enum ('BANK', 'PERSON', 'COMPANY'); -``` + #### 1.2 Vérifications diff --git a/banque.tables.md b/banque.tables.md new file mode 100644 index 0000000..e08d21d --- /dev/null +++ b/banque.tables.md @@ -0,0 +1,57 @@ +# Implémentation du modèle + +## 1. Les titulaires (holder) + +```sql +create type holder_type + as enum ('BANK', 'PERSON', 'COMPANY'); +``` + +Création de la table `holder`. C'est une table commune à tous les titulaires qu'ils soient des individus ou des sociétés. Elle sert à donner un identifiant unique et défini le type de titulaire. + +```sql +create table holder ( + "id" bigint primary key generated always as identity, + "type" holder_type not null, + "created_at" timestamp not null default current_timestamp +); +``` + +- `bigint` : entier sur 64 bits +- `primary key` : clé primaire, identification unique de l'enregristrement +- `generated always as identity` : incrémentation automatique (1, 2, 3, 4, ...) +- `not null` : Il est obligatoire de spécifier une valeur. +- Le type est forcé aux 3 valeurs de l'énumération `holder_type` +- `current_timestamp` date **et** heure courante. Version moderne de `now()` + +### 1.1 Les individus (person) + +Création de la table `person`. + +```sql +create table person ( + "id" bigint primary key references holder(id), + "firstname" text, + "lastname" text, + "birthdate" date +); +``` + +### 1.2 les sociétés (company) + +```sql +create table company ( + "id" bigint primary key references holder(id), + "name" text, + "creation_date" date +); +``` + +### 1.3 La banque (bank) + +```sql +create table bank ( + "id" bigint primary key references holder(id), + "name" text +); +```