# 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) 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) ```sql 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) ```sql create table bank ( "id" bigint primary key references holder(id), "name" text ); ```