tables
This commit is contained in:
57
banque.tables.md
Normal file
57
banque.tables.md
Normal file
@@ -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
|
||||
);
|
||||
```
|
||||
Reference in New Issue
Block a user