Choix du type de bdd ( SQL, NOSQL ou autre...)
Bonjour, alors ma question concerne la création du bdd pour une entreprise qui gère différents services avec des employés qui possèdent un login unique et qui doivent répondre à des demandes de clients... Les clients peuvent payer en plusieurs fois ou en une seule fois donc il y a un montant payé et un montant restant pour chaque client et chaque demande.
Le schéma que j'ai fais c'est que j'ai crée une table Employé avec comme clé primaire Login et comme attributs nom, prénom, numéro de tel de l'employé.
Une table client avec comme clé primaire un ID_client, un montant payé, un montant impayé... et une clé étrangère ID_employé ( j'ai fait un modèle meurise avec les cardinalités puis je suis passé au modèle relationnel ).
Et une dernière table que j'ai appelé Tâche qui concerne les tâches, leur type etc.
Le soucis c'est que plusieurs employés peuvent travailler sur une seule tâche et un client peut demander plusieurs tâches.
Du coup je vois pas en quoi faire une bdd relationnel serait intéressant dans ce cas, comment empêcher la redondance ( un employé sur plusieurs tâches).
Merci d'avance.
Bonsoir Yanis et désolé pour le petit délai dans la réponse.
Alors pour éviter la redondance dans ta base de données relationnelle, tu peux utiliser une relation de type "N-N" entre les tables employés et tâches.
Pour ça, tu peux créer une table intermédiaire qui relie ces deux tables (par exemple "employee_tasks").
Cette table comportera deux clés étrangères, l'une référençant la table employé et l'autre la table tâche. Tu pourrais ainsi enregistrer toutes les tâches effectuées par chaque employé, sans avoir à dupliquer des informations.
En utilisant cette relation, tu pourras éviter la redondance d'informations dans ta base de données, même en utilisant une BDD relationnelle, ça n'est pas du tout incompatible :)
Je te recommande également de définir des clés primaires et des clés étrangères de manière à garantir l'intégrité de tes données et à éviter les erreurs de saisie ou de mise à jour.
Je te déconseille par exemple d'utiliser l'adresse mail en tant que clé primaire mais plutôt d'utiliser une clé primaire auto-incrémentée.
L'adresse e-mail peut en effet changer. Si une personne modifie son adresse e-mail, cela signifie que tu devras mettre à jour toutes les occurrences de cette adresse e-mail dans ta base de données. Les clés primaires auto-incrémentées sont aussi plus rapides à utiliser et à gérer pour ta BDD.
Pour toutes ces raisons il est préférable d'utiliser une clé primaire auto-incrémentée comme identifiant unique de l'enregistrement dans la table, et de stocker l'adresse e-mail en tant que champ séparé dans la table.
Ça te permet de mettre à jour facilement l'adresse e-mail de l'utilisateur sans avoir à mettre à jour la clé primaire de l'enregistrement.
Voilà j'espère que ça te permet d'y voir un peu plus clair, n'hésite pas si tu as besoin de plus d'infos spécifique sur la façon dont tu pourrais mettre en place la table intermédiaire, mais je pense que ça te donne suffisamment de pistes pour déjà essayer des solutions de ton côté :)
Joyeuses fêtes !
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte