{"id":22439956,"url":"https://github.com/ibrahimalsabr/bd-parfumerie","last_synced_at":"2026-04-28T20:33:30.597Z","repository":{"id":40444615,"uuid":"486990233","full_name":"IbrahimAlsabr/BD-Parfumerie","owner":"IbrahimAlsabr","description":"Il s'agit d'un projet de base de donnée pour une boutique de parfumeur. ","archived":false,"fork":false,"pushed_at":"2022-10-05T07:03:22.000Z","size":805,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-27T09:30:41.739Z","etag":null,"topics":["database","delete","insert","python","relational-model","sqlite3","uml","update"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IbrahimAlsabr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-29T13:52:36.000Z","updated_at":"2022-08-02T21:14:20.000Z","dependencies_parsed_at":"2023-01-19T04:15:26.353Z","dependency_job_id":null,"html_url":"https://github.com/IbrahimAlsabr/BD-Parfumerie","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/IbrahimAlsabr/BD-Parfumerie","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IbrahimAlsabr%2FBD-Parfumerie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IbrahimAlsabr%2FBD-Parfumerie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IbrahimAlsabr%2FBD-Parfumerie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IbrahimAlsabr%2FBD-Parfumerie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IbrahimAlsabr","download_url":"https://codeload.github.com/IbrahimAlsabr/BD-Parfumerie/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IbrahimAlsabr%2FBD-Parfumerie/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32398705,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","delete","insert","python","relational-model","sqlite3","uml","update"],"created_at":"2024-12-06T01:16:27.812Z","updated_at":"2026-04-28T20:33:30.582Z","avatar_url":"https://github.com/IbrahimAlsabr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿\r\n# BD Parfumerie\r\nIl s'agit d'un projet de base de donnée de l'UE INF403 pour le parcours Informatiqe de déuxième année à l'université Grenoble Alpes.\r\n\r\n## Tableau De Contenu\r\n- [Aperçu](#aperçu)\r\n    - [Problématique](problématique)\r\n    - [Modèle UML](#modèle-uml)\r\n    - [Modèle Relationnel](#links)\r\n- [Installation de l'environnement](#installation-de-l'environnement)\r\n    - [Windows](#windows)\r\n    - [Linux](#linux)\r\n- [Préparation du projet](#préparation-du-projet)\r\n- [Utilisation](#utilisation)\r\n    - [Utilisation non-interactive](#utilisation-non-interactive)\r\n    - [Utilisation interactive](#utilisation-interactive)\r\n    - [Utilisation d'un IDE](#utilisation-d'un-ide)\r\n- [Notre Travail](#notre-travail)\r\n  - [Autour Fichiers](#autour-fichiers)\r\n  - [Créer avec](#créer-avec)\r\n  - [Resources et outils utiles](#resources-et-outils-utiles)\r\n- [Author](#author)\r\n- [Acknowledgments](#acknowledgments)\r\n\r\n## Aperçu\r\n### Problématique\r\nUne haute entreprise de commerce de parfums a informatisé ses données :\r\nproduits en stock, magasins, clients, promotions, etc. La base de données a été\r\nconstruite sous la forme suivante :\u003cbr\u003e\r\n\r\n\u003cb style=\"color: #15adc0\"\u003eLes Magasins :\u003c/b\u003e\r\nCette entreprise possède plusieurs magasins répartis sur différentes régions,\r\nchaque magasin est connu par un code le désignant, et une adresse postale. Il\r\npossède un certain stock de parfums et ses clients.\u003cbr\u003e\r\n\r\n\u003cb style=\"color: #15adc0\"\u003eLes Parfums :\u003c/b\u003e\r\nLe parfum est reconnu par un nom unique. Chaque parfum a une marque, un\r\nvolume, un prix, et un magasin où il est présent en une certaine quantité. Le\r\nparfum peut figurer plusieurs fois, mais dans différents magasins et/ou sous\r\ndifférents volumes.\r\n\r\n\u003cb style=\"color: #15adc0\"\u003eLes Clients :\u003c/b\u003e\r\nUn client est identifié par son nom et son prénom, auquel on ajoute sa date de\r\nnaissance et son adresse. Il fréquente un ou plusieurs magasins. On note la date\r\nde sa dernière fréquentation par magasin. Chaque client peut déclarer ou non un\r\nparfum préféré (pour par exemple être notifié en cas de réapprovisionnement\r\ndes stocks, ou d’une nouvelle version exclusive du parfum entrant sur le\r\nmarché). Un client est enregistré dans la base de données après une première\r\nvisite dans un des magasins.\r\n\r\n\u003cb style=\"color: #15adc0\"\u003eLes Promotions :\u003c/b\u003e\r\nTous les magasins appliquent ou non des promotions sur ces produits (au sein\r\nde l’entreprise entière). La promotion est identifiée par un code PROMO, un\r\npourcentage, le nom du produit/parfum sur lequel la promotion est applicable.\r\nUn produit possède un code promo maximum (pourcentage et validité\r\nmodifiable) et chaque code promo présent dans la base de donnée est valide\r\n(suppression automatique en fin de validité).\r\n\r\n\u003cb style=\"color: #15adc0\"\u003eLes Marques :\u003c/b\u003e\r\nLes grandes marques sont reconnues à part, par leurs noms, avec leurs adresses,\r\nleurs numéros de téléphone et les délais de livraison en jours (ce qui facilite le\r\nplacement de commandes).\r\n\r\n### Modèle UML\r\n- Live UML en Visual Paradigm : [here](https://online.visual-paradigm.com/app/diagrams/#diagram:proj=0\u0026external=https://pblemraton.uk-01.visual-paradigm.com/rest/diagrams/shares/diagram/ed46cf6f-4949-4ce9-83a5-3e1dda51a10f/content\u0026name=SQL-Parfumerie%20)\r\n\r\n![UML](doc/img//modele-uml.jpg?raw=true\")\r\n\r\n\r\n### Modèle Relationnel\r\n- Le fichier de Modèle Relationnel : [here](https://docs.google.com/document/d/1Cw8bvpX4cFWQaRBacey5u0Fc2OANktySvvRoH40Ka3U/edit?usp=sharing)\r\n\r\n\r\n## Installation de l'environnement\r\n### Windows \r\nInstaller Python 3 avec l'installeur disponible sur le site officiel:\r\n* 64 bits (à préférer): https://www.python.org/ftp/python/3.9.2/python-3.9.2-amd64.exe\r\n* 32 bits (au cas où): https://www.python.org/ftp/python/3.9.2/python-3.9.2.exe\r\n\r\nSuivre les étapes de l'installeur. S'assurer que l'option \"Ajouter à la\r\nvariable d'environnement PATH\" est bien cochée.\r\n\r\n### Linux\r\n#### Debian/Ubuntu\r\n\r\nDans un terminal:\r\n\r\n    sudo apt install -y python3 libsqlite3-dev\r\n\r\n## Préparation du projet\r\nUne fois Python installé, il faut installer les dépendances du projet (module\r\nPython SQLite3). Dans un terminal, une fois dans le dossier extrait de\r\nl'archive source:\r\n\r\n    pip install --user -r requirements.txt\r\n\r\n## Utilisation\r\nIl est possible d'utiliser le code de ce projet de deux façons.\r\n\r\n### Utilisation non-interactive\r\nDans un terminal:\r\n\r\n    python3 main.py\r\n\r\nCela va exécuter la méthode main contenue dans le script `main.py`.\r\n\r\n### Utilisation interactive \r\nDans un terminal, on peut exécuter `python3`, puis entrer le code nécessaire à\r\nl'exécution des différentes requêtes. C'est pratique pour faire des tests\r\nrapides:\r\n\r\n    $ python3\r\n    Python 3.9.2 (default, Feb 20 2021, 00:00:00)\r\n    [GCC 10.2.1 20201125 (Red Hat 10.2.1-9)] on linux\r\n    Type \"help\", \"copyright\", \"credits\" or \"license\" for more information.\r\n    \u003e\u003e\u003e import main\r\n    \u003e\u003e\u003e from utils import db\r\n    \u003e\u003e\u003e db_file = \"data/voile.db\"\r\n    \u003e\u003e\u003e conn = db.creer_connexion(db_file)\r\n    \u003e\u003e\u003e main.select_tous_les_bateaux(conn)\r\n    (1, '2013-04-13', 'Pirate', 1005)\r\n    (2, '2011-04-07', 'Pirate', 1006)\r\n    (3, '2017-04-07', 'Classique', 1007)\r\n    \u003e\u003e\u003e \r\n\r\n### Utilisation d'un IDE \r\nVous pouvez travailler avec un IDE pour rendre plus facile la prise en main et production de code.\r\n\r\nOn vous conseille PyCharm (version libre Community) : \r\nhttps://www.jetbrains.com/pycharm/ \r\nPour faire la liaison entre PyCharm et Python:\r\n\r\nAdd Configuration:\r\n![config1](https://github.com/IbrahimAlsabr/BD-Parfumerie/blob/main/doc/img/config_pycharm1.PNG?raw=true\") \u003chr\u003e\r\n\r\nAdd New Configuration -\u003e Python:\r\n![config2](https://github.com/IbrahimAlsabr/BD-Parfumerie/blob/main/doc/img/config_pycharm2.PNG?raw=true\") \u003chr\u003e\r\n\r\nPointer vers main.py:\r\n![config3](https://github.com/IbrahimAlsabr/BD-Parfumerie/blob/main/doc/img/config_pycharm3.PNG?raw=true\") \u003chr\u003e\r\n\r\nClicker sur Play pour exécuter le programme:\r\n![config4](https://github.com/IbrahimAlsabr/BD-Parfumerie/blob/main/doc/img/config_pycharm4.PNG?raw=true\")\r\n\r\n## Notre Travail\r\n\r\n### Autour Fichiers \r\nIci, dans ce fichier [creation_tableaux.sql](/data/creation_tableaux.sql)  on a crée la base de données en respectant les contraintes imposés dans le UML ci-dessus .\r\n\r\n\r\nDans ce fichier [insert_ok.sql](/data/insert_ok.sql) on a testé la base de données crées en insérant des données correctement.\r\n\r\n\r\nEt ici dans ce fichier [insert_not_ok.sql](/data/insert_not_ok.sql), on a testé la base de données crées en insérant des données incorrectement, pour vérifier que les contraintes imopsées sont bien respectées. \r\n\r\nAprès lier notre base de données avec Python, dans ce fichier [reqeutes.py](/reqeutes.py) on a fait des requetes en les écrivant dans des fonctions qui sont appelées dans ce fichier [main.py](/main.py).\r\n\r\nIci, dans ce fichier [update_donnee.py](/update_donnee.py) , on a créé des requetes dans des fonctions pour mettre la possibilité de mettre à jour les données à travers Python. \r\n\r\n\r\n### Créer avec\r\n[![HTML](https://img.shields.io/badge/SQLite-07405E?style=for-the-badge\u0026logo=sqlite\u0026logoColor=white)](https://www.sqlite.org/index.html) \r\n\r\n[![forthebadge made-with-python](http://ForTheBadge.com/images/badges/made-with-python.svg)](https://www.python.org/)\r\n\r\n\r\n### Resources et outils utiles\r\n- [SQL.sh](https://sql.sh/) \r\n- [Geeks for Geeks](https://www.geeksforgeeks.org/) \r\n- [Visual Paradigm Online](https://online.visual-paradigm.com/fr/)\r\n\r\n\r\n## Author\r\n\u003cb\u003e Ibrahim Alsabr \u003c/b\u003e\r\n\r\n[![GitHub](https://img.shields.io/badge/GitHub-100000?style=for-the-badge\u0026logo=github\u0026logoColor=white)](https://github.com/IbrahimAlsabr) [![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/in/ibrahim-alsabr-188939231/)  [![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge\u0026logo=twitter\u0026logoColor=white)](https://twitter.com/home?lang=fr) \u003cbr\u003e\r\n\r\n\u003cb\u003eBastien Riado \u003c/b\u003e\r\n\r\n[![GitHub](https://img.shields.io/badge/GitHub-100000?style=for-the-badge\u0026logo=github\u0026logoColor=white)](https://github.com/bastien-riado)\r\n\r\n## Acknowledgments\r\n* [Université Grenoble Alpes](https://www.univ-grenoble-alpes.fr/)\r\n\r\n* [Le prof de l'UE Mr Mario Cortes Cornax](https://www.linkedin.com/in/mariocortescornax/?originalSubdomain=fr)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibrahimalsabr%2Fbd-parfumerie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fibrahimalsabr%2Fbd-parfumerie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibrahimalsabr%2Fbd-parfumerie/lists"}