# Modélisation d'un système bancaire ## Objectifs - Concevoir un **modèle relationnel** à partir d’un scénario réaliste. - Utiliser les **contraintes d’intégrité** pour garantir la cohérence des données. - Manipuler des **jointures** et des **relations n–n**. - Comprendre la notion d’**héritage logique** en base de données. ## Contexte Une banque locale souhaite informatiser la gestion de ses comptes et de leurs titulaires. Chaque compte peut appartenir à une ou plusieurs personnes physiques ou morales. Vous êtes chargé(e) de concevoir et d’implémenter le schéma relationnel de base permettant de gérer : 1. Les clients de la banque, appelés titulaires (_holders_), 2. Les comptes bancaires (_accounts_), 3. Le lien entre les titulaires et les comptes. ## 1. Les titulaires Un titulaire (_holder_) peut être une personne physique (_person_) ou une entreprise (_company_). ### 1.1 Exemple de données - une personne nommée _Françoise Zanetti_, née le 12 avril 1995. - une entreprise nommée _Boulangerie de Valorgue_, créée le 19/08/2014, numéro d’immatriculation FR19803269968. ### 1.2 Analyse - Quelles informations faut-il conserver pour tous les titulaires ? - Quelles informations sont spécifiques à chaque type de titulaire ? - Comment représenter cette distinction en base relationnelle ? > [!TIP] > Indice : on peut utiliser une table abstraite `holder`, puis des tables `person` et `company` qui héritent logiquement de celle-ci. ### 1.3 Contraintes à respecter - Chaque `person` ou `company` doit correspondre à exactement un seul `holder`. - La suppression d’un `holder` doit supprimer automatiquement la ligne correspondante dans `person` ou `company`. - Le type doit être contraint à `'PERSON'` ou `'COMPANY'`. ### 1.4 Vérifications Lister tous les titulaires. Supprimer un titulaire, vérifier que cela supprime l'individu ou la société correspondante. ### 1.5 Réflexion 1. Pourquoi séparer `person` et `company` ? 2. Pourquoi ne pas tout mettre dans une seule table holder ? 3. Quelle contrainte empêche d’insérer une person sans holder ? ### 1.6 Pour aller plus loin La banque souhaite désormais que toute personne titulaire d’un compte ait au moins 15 ans à la date de création de sa fiche. ## 2. Les comptes - Chaque titulaire peut détenir un ou plusieurs compte. - Un compte bancaire doit pouvoir appartenir à un ou plusieurs titulaires (compte individuel / compte joint). - Chaque compte dispose d’un numéro de compte (_account number_) unique, d’un solde, d'une date d'ouverture et une date de clôture. - Le solde des comptes ne peuvent être négatifs. - Dans le cas d'un compte joint, les parts de propriété d'un compte doivent pouvoir être précisées. ### 2.1 Exemple de données - Créez un compte individuel pour Françoise Zanetti. - Ajouter un nouveau titulaire : Justin Hébrard né le 11/03/1993. - Créez un compte joint pour Françoise et Justin.