Ce projet constitue le travail final du cours SQL. Il s'agit d'une base de données relationnelle simulant le système d'information d'une banque. Le projet permet de gérer les clients, les comptes, les employés, les agences et les transactions, tout en offrant des scripts pour la création, l'alimentation et l'interrogation de la base de données.
schema.sql: Définit la structure de la base de données (tables, clés primaires et étrangères, contraintes).script.sql: Contient des requêtes SQL pour interroger la base de données (extractions, agrégations, jointures).bank.db: Fichier SQLite contenant la base de données complète.customers.csv,accounts.csv,employees.csv,branches.csv,transactions.csv: Fichiers CSV utilisés pour peupler la base de données.CréateurBD.py,GénérateurCompte.py,GénérateurRandom.py: Scripts Python pour générer automatiquement des données réalistes.Projet SQL_DJAU_Mamadou.pdf: Document de conception détaillant le modèle relationnel et les choix techniques.README.md: Ce fichier.
La base de données est composée des entités suivantes :
- Customers : Informations personnelles des clients.
- Accounts : Comptes bancaires associés aux clients.
- Employees : Données des employés de la banque.
- Branches : Agences bancaires.
- Transactions : Historique des opérations financières.
Les relations entre ces entités sont définies à l'aide de clés étrangères pour assurer l'intégrité référentielle.
-
Cloner le dépôt :
git clone https://github.com/lmmddb/Projet-Final-CS50-SQL.git cd Projet-Final-CS50-SQL -
Créer la base de données :
sqlite3 bank.db < schema.sql -
Importer les données :
sqlite3 bank.db .mode csv .import customers.csv customers .import accounts.csv accounts .import employees.csv employees .import branches.csv branches .import transactions.csv transactions .exit
-
Exécuter les requêtes :
sqlite3 bank.db < script.sql
- Lister les clients ayant effectué des transactions supérieures à 10 000 € :
SELECT c.name, t.amount
FROM customers c
JOIN transactions t ON c.id = t.customer_id
WHERE t.amount > 10000;- Afficher le solde moyen par agence :
SELECT b.name, AVG(a.balance) as average_balance
FROM branches b
JOIN accounts a ON b.id = a.branch_id
GROUP BY b.name;Pour une description détaillée du modèle de données, des contraintes d'intégrité et des choix de conception, veuillez consulter le document Projet SQL_DJAU_Mamadou.pdf.