Files
sql/banque.tables.md
2025-11-15 14:33:46 +01:00

1.6 KiB

Implémentation du modèle

1. Les titulaires (holder)

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.

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.

create table person (
  "id" bigint primary key references holder(id) on delete cascade,
  "firstname" text not null,
  "lastname" text not null,
  "birthdate" date not null check (birthdate <= current_date - interval '15 years')
);

1.2 les sociétés (company)

create table company (
  "id" bigint primary key references holder(id) on delete cascade,
  "name" text not null,
  "registration_number" text unique not null,
  "creation_date" date not null
);

1.3 La banque (bank)

create table bank (
  "id" bigint primary key references holder(id),
  "name" text
);