bank
This commit is contained in:
@@ -2,28 +2,38 @@ drop schema if exists bank cascade;
|
||||
create schema bank;
|
||||
set search_path TO bank;
|
||||
|
||||
/*
|
||||
/************************************************************************
|
||||
* Holder : table commune à tous les titulaires
|
||||
*/
|
||||
* bigint : entier sur 64 bits
|
||||
* primary key : clé primaire, identification unique de l'enregistrement
|
||||
* generated always as identity : numéro incrément automatique 1, 2, 3 ...
|
||||
* Le type est forcé aux 3 valeurs de l'énumération holder_type
|
||||
* current_timestamp date et heure courante. Version moderne de now()
|
||||
************************************************************************/
|
||||
create type holder_type as enum ('BANK', 'PERSON', 'COMPANY');
|
||||
|
||||
create table holder (
|
||||
"id" bigint primary key generated always as identity, -- identifiant unique
|
||||
"id" bigint primary key generated always as identity,
|
||||
"type" holder_type not null,
|
||||
"created_at" timestamp not null default current_timestamp -- date et heure de création
|
||||
"created_at" timestamp not null default current_timestamp
|
||||
);
|
||||
|
||||
/*
|
||||
/************************************************************************
|
||||
* Bank
|
||||
*/
|
||||
* Liée par références à titulaire (holder) pas d'incrément automatique
|
||||
* puisque c'est celui de titulaire
|
||||
************************************************************************/
|
||||
create table bank (
|
||||
"id" bigint primary key references holder(id), -- identifiant unique
|
||||
"id" bigint primary key references holder(id),
|
||||
"name" text not null
|
||||
);
|
||||
|
||||
/*
|
||||
/************************************************************************
|
||||
* Person
|
||||
*/
|
||||
* Liée par références à titulaire (holder) pas d'incrément automatique
|
||||
* on delete cascade : Lors de la suppression du titualaire, person est
|
||||
* supprimé aussi. Sans cela la suppression est interdite.
|
||||
************************************************************************/
|
||||
create table person (
|
||||
"id" bigint primary key references holder(id) on delete cascade,
|
||||
"firstname" text not null,
|
||||
@@ -31,9 +41,10 @@ create table person (
|
||||
"birthdate" date not null check (birthdate <= current_date - interval '15 years')
|
||||
);
|
||||
|
||||
/*
|
||||
/************************************************************************
|
||||
* Company
|
||||
*/
|
||||
*
|
||||
************************************************************************/
|
||||
create table company (
|
||||
"id" bigint primary key references holder(id) on delete cascade,
|
||||
"name" text not null,
|
||||
@@ -41,10 +52,19 @@ create table company (
|
||||
"created_at" date not null
|
||||
);
|
||||
|
||||
/************************************************************************
|
||||
* Company
|
||||
*
|
||||
************************************************************************/
|
||||
create table currency (
|
||||
"code" text primary key
|
||||
);
|
||||
|
||||
/************************************************************************
|
||||
* Exchange Rate
|
||||
* La clé primaire est sur les deux colonnes currency_code et date
|
||||
* Il n'y a qu'un seul taux de change par monnaie ET par jour
|
||||
************************************************************************/
|
||||
create table exchange_rate (
|
||||
"currency_code" text references currency(code) on delete cascade,
|
||||
"date" date ,
|
||||
|
||||
Reference in New Issue
Block a user