IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Conseils sur la conception de base de donnée [WD25]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Points : 6
    Points
    6
    Par défaut Conseils sur la conception de base de donnée
    Salam alaikoum tous le monde,
    Actuellement, je développe une application de gestion de la formation en 2ème et 3ème cycle.
    Je rencontre quelque difficultés de conception de la base donnée.
    1. dans mon application, j'ai des étudiants en 3ème cycle qui sont, en même temps, des enseignants (soit dans notre établissement ou dans un autre établissement).
    2. certains enseignants étais des étudiants en 1er, 2ème et/ou 3ème cycles.
    3. un étudiants ou enseignant peut avoir 1 ou plusieurs N° téléphone ou adresse email. dans j'ai créer une table téléphone et une table émail, ces deux tables sont, évidement, donc
    j'ai les tables :
    Tab_enseignants (Mat_enseignant,Nom_enseignant,Prénom_enseignant,......)
    Tab_étudiants (Mat_étudiant, nom_étudiants, Prénom_étudiants,......)
    Tab_Téléphone (Id_tph, num_tph,mat_enseignant,mat_étudiant)
    Tab_émail (id_émail, adr_émail, mat_enseignant,mat_étudiant)

    les deux matricules (enseignants et étudiants) se répète aussi comme dans les tables Tab_Téléphone et Tab_émail, dans d'autre tables de ma base de donnée.

    Je fait appel a votre éxperience pour vous demander, est ce que je garde les tables (tab_enseignants et Tab_étudiants), comme ils sont ou bien fusionné ces deux tables et crée une table catégorie (tab_catégorie) relier a ma nouvelle table, cette table contient sois la catégorie enseignant, ou étudiants.

    je vous remercie d'avance pour tous conseil que vous me ferrais.

    Cordialement

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 393
    Points
    9 393
    Par défaut
    Une table individus.
    Au moins, tu n'auras pas de surprise, un individu reste un individu. Et l'idendifiant d'un individu va rester valable année après année.

    Et une table qui donnera la fonction occupée par chaque individu, pour une année donnée. Pour cette table là, il y a plein de choix.

    Pour un individu, et pour une année universitaire, on peut avoir une seule information (l'individu est simplement étudiant), ou bien plusieurs (l'individu est étudiant et prof ...)
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 805
    Points : 5 253
    Points
    5 253
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Un petit ajout, à la remarque de tbc92. S'il y a de nombreuses données spécifiques "Étudiant" et "Professeur" peux éventuellement créer des tables héritées de ta table "Individu" les données telles que l'état civil seront dans Individu et les données spécifiques seront dans "Étudiant" ou "Professeur" en fontion des cas. La PK de étudiant et celle de professeur sera alors la PK de Individu.
    Par ailleurs je ne comprend pas l'utilités des tables Télephone et Mail.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  4. #4
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 998
    Points : 2 524
    Points
    2 524
    Par défaut
    Citation Envoyé par youcef16dz Voir le message
    3. un étudiants ou enseignant peut avoir 1 ou plusieurs N° téléphone ou adresse email. dans j'ai créer une table téléphone et une table émail, ces deux tables sont, évidement, donc
    Tab_Téléphone (Id_tph, num_tph,mat_enseignant,mat_étudiant)
    Tab_émail (id_émail, adr_émail, mat_enseignant,mat_étudiant)
    Cordialement
    Une seule table devrait suffire (Tél.+EMail) avec Clef individu avec doublons.

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 393
    Points
    9 393
    Par défaut
    Un individu peut avoir 2 n° de télephone, + 1 email
    Et pourquoi pas un compte linkedin (ou FB ou...), qu'on pourrait considérer comme une 3ème voire 4ème méthode.
    Du coup, je verrais toutes ces informations dans une table externe :
    Id_Individu
    Type_contact (un mot clé parmi TELEPH, EMAIL, FB, LINKED ...) ou un identifiant 1=Téléph 2=Email 3=FB ...
    Le n° de tel, ou l'email , ou ...

    Si un individu a 2 téléph et 1 email, il aurait donc 3 lignes dans cette table.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Points : 6
    Points
    6
    Par défaut
    Salam alaikoum,
    Merci a tous pour vos réponse.
    à vrais dire les tables étudiants et enseignants continent pratiquement presque les mêmes informations, sauf pour quelque détails, par exemple un enseignant a un grade (Maitre assistant, Maitre de conférences, Professeur, Chargé de recherche, Maitre de recherche et Directeur de recherche).
    Pour étudiant j'ai besoin de savoir, pour les statistiques et la couverture social, s'il est travail ou pas et ou il travail le cas échéant.
    Nous avons des cas ou certain étudiants en 3ème cycle sont des enseignant dans notre établissement (Maitre assistant).
    1. Du fait que nous avons un système d'immatriculation des étudiants (que je ne peut pas changer) est différent de ceux des enseignants, ne faut t'il pas crée deux enregistrement pour une personne qui étudiant et qui est enseignant ?
    2. un enseignant peut être un enseignant proprement dit ou un chercheur dans un centre de recherche ou un hospitalo-universitaire dans un hôpital.
    3. certain des individus ont plusieurs email, mais pour les étudiants nous utilisons que leurs email professionnel mis a leur disposition par notre établissement.
    4. l'idée de fusionné les tables email et téléphone, je trouve qu'elle est intéressante, juste ajouter un une table type coordonnée (Tél., email,.....)
    5. l'individu enseignant peut encadré un ou plusieurs étudiants, ou ne pas encadré du tous, ou être membre du jury de soutenance.

  7. #7
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 375
    Points : 9 709
    Points
    9 709
    Par défaut
    Bonjour,
    Perso, je ferais une table "personnes" dans lequel il y aurait aussi bien les enseignants que les étudiants.
    Puis une table "enseignants" qui pointerait sur la table "personnes" et contiendrait les éléments propres au statut d'enseignant (comme le grade, ou s'il est membre du jury de soutenance, ...)
    Une autre table "etudiants" qui pointerait également sur la table "personnes" et contiendrait les éléments propres au statut d'étudiant.
    Ensuite pour les tables téléphones, mails, ... toutes ces tables (quelle que soit la solution utilisée - une table avec un type d'information ou une table pour chaque type de données), elles pointent toutes vers "personnes"

    Voilà mon avis, il vaut ce qu'il vaut.

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  8. #8
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 805
    Points : 5 253
    Points
    5 253
    Billets dans le blog
    1
    Par défaut
    On peut envisager un truc du style
    Nom : Enseignement.png
Affichages : 131
Taille : 14,5 Ko
    1-On crée l'individu
    2-Lorsque l'Individu "devient" Enseignant ou Etudiant, on récupère la PK de individu et on l'affecte à la table correspondante.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  9. #9
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 393
    Points
    9 393
    Par défaut
    Partant de la proposition de Voroltinquo :
    - On a une table individu. Nom, prénom, date de naissance. Cet individu peut être dans nos tablettes pendant 10 ans, successivement comme étudiant puis comme prof, ces informations ne changeront pas.

    - On doit aussi stocker quelque part ce que fait cet individu. Est-il étudiant , prof , autre .... ?
    Et là, la situation peut changer. Un individu peut être étudiant pendant une année, puis prof pendant l'année suivante.
    Et on a probablement envie d'avoir quelque part dans nos fichiers l'historique de chaque individu : X a été étudiant dans telle section , puis prof dans telle autre section.

    On va supposer que le niveau 'Année' suffit, c'est à dire que la situation de chaque individu ne change pas en cours d'année.

    Pour chaque individu, il faut donc identifier :
    - quelles informations sont permanentes.
    - quelles informations peuvent changer, mais on s'intéresse uniquement à la dernière situation. Et dans ce cas, on assimile ça à des informations permanentes.
    - pour quelles informations on veut avoir l'historique.

    Et du coup, dans les tables 'Etudiant' et 'prof', j'ajouterais une colonne 'Année scolaire'.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  10. #10
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    J'irai même plus loin dans le raisonnement : un individu peut être étudiant (4ème année de droit) et prof (de td en 1ère année de droit).
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Points : 6
    Points
    6
    Par défaut
    l'analyse est plus clair maintenant
    pour des raisons d'assurance social (assurance maladie) s'il travail pour pas
    est si l'étudiant pour raison de statistique il me faut connaitre :
    - est ce que il enseigne (dans notre établissement ou ailleurs)
    - son sexe
    - sa nationalité

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Points : 6
    Points
    6
    Par défaut
    Pour l'historique, je prévois une table inscription pour l'étudiant
    dans la table inscription il est mentionnée le diplôme préparé, an d'inscription (1ère année, 2ème année,.....), l'année universitaire, spécialité, et option.
    le cursus de l'étudiant s’arrête à la soutenance (magister, doctorat)
    exemple étudiant inscrit en Magister (2ème année) pour l'année universitaire 2020/2021, s'il soutien par exemple le 15 mars 2021, a partir de cet date il n'est pas étudiant en magister.
    Il pourra s'inscrire en 1ère année doctorat dans notre établissement ou dans un autre, s'il le désire, pour l'année universitaire suivante (2021/2022)

  13. #13
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 805
    Points : 5 253
    Points
    5 253
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par youcef16dz Voir le message
    l'analyse est plus clair maintenant
    pour des raisons d'assurance social (assurance maladie) s'il travail pour pas
    est si l'étudiant pour raison de statistique il me faut connaitre :
    - est ce que il enseigne (dans notre établissement ou ailleurs)
    - son sexe
    - sa nationalité
    Je pense que le problème auquel tu es confronté est la partie "est ce que il enseigne".

    [Enfonçage de porte ouverte]
    Un individu enseigne s'il est Enseignant.
    [Enfonçage de porte ouverte]

    C'est à dire que la clause
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Individu.PK_Individu IN (
    				SELECT 
    					Enseignant.PK_FK_Enseignant AS PK_FK_Enseignant
    				FROM 
    					Enseignant
    				)
    est vraie.
    Un CASE WHEN est tout indiqué
    REQ_Statut:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    SELECT 
    	Individu.PK_Individu AS PK_Individu,	
    	Individu.NDX_NomIndividu AS NDX_NomIndividu,	
    	Individu.NDX_Sexe AS NDX_Sexe,	
    	Pays.AK_NomPays AS AK_NomPays,
    		CASE 
    		WHEN Individu.PK_Individu IN (
    									SELECT 
    										Enseignant.PK_FK_Enseignant AS PK_FK_Enseignant
    									FROM 
    										Enseignant
    									) THEN 1
    		ELSE 0
    	END AS EstProf,
    		CASE 
    		WHEN Individu.PK_Individu IN (
    									SELECT 
    										Etudiant.PK_FK_Etudiant AS PK_Etudiant
    									FROM 
    										Etudiant
    									) THEN 1
    		ELSE 0
    	END AS EstEtudiant
    FROM 
    	Pays,	
    	Individu
    WHERE 
    	Pays.PK_Pays = Individu.FK_Pays

    Remarque
    Si on veut uniquement savoir si un étudiant précis enseigne, on peut utiliser le fait que lors de la création d'un Etudiant ou d'un Enseignant, leur PK est celle de l'individu. Donc un Etudiant est Enseignant s'il y a un tuple de Enseignant dont la PK est celle de l'étudiant concerné.
    Dans ce cas, il est intéressant d'avoir le nombre de tuple concernés (0 ou 1) le Nombre d'enregistrement se "transforme" alors en booléen
    REQ_EstProf :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT 
    	COUNT(Etudiant.PK_FK_Etudiant) AS EstProf
    FROM 
    	Etudiant,
    	Enseignant
    WHERE 
    	Etudiant.PK_FK_Etudiant = Enseignant.PK_FK_Enseignant
    	AND
    	Etudiant.PK_FK_Etudiant={pEtudiant}
    	GROUP BY 
    	Etudiant.PK_FK_Etudiant
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Si on veut uniquement savoir si un étudiant précis enseigne, on peut utiliser le fait que lors de la création d'un Etudiant ou d'un Enseignant, leur PK est celle de l'individu. Donc un Etudiant est Enseignant s'il y a un tuple de Enseignant dont la PK est celle de l'étudiant concerné.
    Dans ce cas, il est intéressant d'avoir le nombre de tuple concernés (0 ou 1) le Nombre d'enregistrement se "transforme" alors en booléen
    REQ_EstProf :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT 
    	COUNT(Etudiant.PK_FK_Etudiant) AS EstProf
    FROM 
    	Etudiant,
    	Enseignant
    WHERE 
    	Etudiant.PK_FK_Etudiant = Enseignant.PK_FK_Enseignant
    	AND
    	Etudiant.PK_FK_Etudiant={pEtudiant}
    	GROUP BY 
    	Etudiant.PK_FK_Etudiant
    Mais fait éliminer tous les étudiants qui ont fini leur cursus, pour ça j'ai prévue un champs dans l'enregistrement étudiant, qui indique sa situation, (en cours de formation, fin de cursus, abondons, décès)
    Aussi il faut sélectionner les étudiants qui ne travail pas, pour les déclaré à la caisse d'assurance sociale.

  15. #15
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 805
    Points : 5 253
    Points
    5 253
    Billets dans le blog
    1
    Par défaut
    il faut ajouter ces condition à ta requête principale. (e.g. une colonne DateDiplôme ou une colonne nDX_Inscrit, une colonne employeur etc ..)
    Inscrit pourra passer à faux une fois le diplôme obtenu. Avec la colonne employeur, on n'a plus à vérifier s'il est prof
    On ne sait pas si tu veux une liste ou le statut d'un étudiant. La sous requête de ma remarque n'est valable que pour un étudiant (du moins le cast vers booléen).
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Points : 6
    Points
    6
    Par défaut
    Salam alaikoum tous le monde.
    Messieurs je vous remercie pour vos conseils.
    ça étais un plaisir de partager avec vous ce file de discutions.
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/10/2005, 22h25
  2. [Conception] Cache base de donnée Versus cache FTP ?
    Par genova dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/09/2005, 18h39
  3. Réponses: 5
    Dernier message: 13/06/2005, 17h59
  4. Conception de Base de données (AutoIncrément oui ou non)
    Par matgel dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 16/04/2004, 08h47
  5. Recherche Livre / Conseils sur la conception de Base
    Par Yeuma dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 02/01/2004, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo