28 lines
1.2 KiB
SQL
28 lines
1.2 KiB
SQL
-- Un dossier = une famille, N enfants. Ticket #119 évolution.
|
|
-- Table: un enregistrement par famille (lien via numero_dossier / id_parent).
|
|
CREATE TABLE IF NOT EXISTS dossier_famille (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
numero_dossier VARCHAR(20) NOT NULL,
|
|
id_parent UUID NOT NULL REFERENCES parents(id_utilisateur) ON DELETE CASCADE,
|
|
presentation TEXT,
|
|
type_contrat VARCHAR(50),
|
|
repas BOOLEAN NOT NULL DEFAULT false,
|
|
budget NUMERIC(10,2),
|
|
planning_souhaite JSONB,
|
|
statut statut_dossier_type NOT NULL DEFAULT 'envoye',
|
|
cree_le TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
modifie_le TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_dossier_famille_numero ON dossier_famille(numero_dossier);
|
|
CREATE INDEX IF NOT EXISTS idx_dossier_famille_id_parent ON dossier_famille(id_parent);
|
|
|
|
-- Enfants concernés par ce dossier famille (N par dossier).
|
|
CREATE TABLE IF NOT EXISTS dossier_famille_enfants (
|
|
id_dossier_famille UUID NOT NULL REFERENCES dossier_famille(id) ON DELETE CASCADE,
|
|
id_enfant UUID NOT NULL REFERENCES enfants(id) ON DELETE CASCADE,
|
|
PRIMARY KEY (id_dossier_famille, id_enfant)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_dossier_famille_enfants_enfant ON dossier_famille_enfants(id_enfant);
|