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

Schéma Discussion :

[MR]Spécialiser une entité


Sujet :

Schéma

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut [MR]Spécialiser une entité
    Voilà j'ai un petit souci d'analyse et je voudrais bien votre avis.
    J'ai un site de publicité qui rémunère ses membres pour visiter des sites d'annonceurs. Donc je dois gérer à la fois des membres et des annonceurs. j'ai créé une table membre qui contient tous les membres. A votre avis il vaut mieux séparer les membres des annonceurs ou pas ??? Sachant qu'un membre peut vouloir annoncer et qu'un annonceur peut éventuellement vouloir utiliser les fonctionnalités des membres.
    Alors comme choix j'ai
    1- créér deux tables une membre et une annonceur le problème c'est la redondance d'information dans le cas ou une même personne est annonceur et membre. De plus, il n'y a aucun lien entre le membre et l'annonceur (si c'est un membre qui devient annonceur donc il crée un compte membre et un compte annonceur il est impossible de les relier et savoir que c'est la même personne).
    2-créer une seule table qui contiendra tous les membres et les annonceurs avec un indicateur de type booléen qui permettra d'indiquer si c'est un membre ou un annonceur ou les deux. Du coup plus de redondances d'informations et le lien est évident puisque c'est une ligne de la table membre contient le compte membre et annonceur à la fois
    3- Une autre solution ??? que j'ai pas encore trouvé lol
    Qu'en pensez-vous ???

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    avec les données du problème telles que tu les a exposées, la deuxième solution est de loin la meilleure.

    Maintenant, elle peut être problématique si les annonceurs ont des champs en plus de ceux qu'ont les simples membres ; tout mettre dans la même table signifie que l'on aura des champs qui ne seront pas pertinents pour tous les enregistrements, ce qui n'est pas le signe d'une bonne conception... Il faudra donc placer ces champs supplémentaires dans une table "Annonceurs", et établir une relation de 1 à 1 entre la table "Annonceurs" et la table "Membres".

    Il y a deux façons d'implémenter ce lien :

    • en placant une clé étrangère dans la table "Annonceurs" qui "pointe" vers la table "Membres", et en déclarant cette clé étrangère comme clé primaire.
    • Si ton SGBDR le permet, en établissant une relation d'héritage en faisant hériter la table "Annonceurs" de la table "Membres"
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Idem GrandFather.

    La strategie "Une table par classe fille" est la plus traditionnelle dans ce probleme (c'est l'approche généralement utilisée par les O./R.M.).

    A noter qu'on peut tout de meme rajouter un champs discriminant dans la classe mere (meme si ce n'est pas necessaire). Ca facilite grandement le debug et ca permet de faire du controle de coherence
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    Les données seront presque les mêmes un pseudo, un mot de passe, une adresse email et un parrain. (il y a les champs euro contenant le montant en euro gagné et points qui ne s'applique pas aux annonceurs)
    Enfin je suis perdu pour trouver une solution correcte sachant qu'il faudrait que les membres et les annonceurs est la possibilité d'annnoncer pour le premier et de jouer pour le second.

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    S'il y a des champs spécifiques aux membres (montant gagné), alors il faut 3 tables : une table "Utilisateurs", qui contiendra les champs génériques communs à toutes les catégories, et des tables "Membres" et "Annonceurs" qui contiendront les champs spécifiques à ces deux catégories, et qui seront liées à la table "Utilisateurs" dans une relation de 1 à 1.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    De toute façon, merise dit il me semble de séparer les entités. On ne mettrait pas les clients et les fournisseurs ensemble et bien pour mon cas c'est pareil les annonceurs sont ceux qui font de la pub et me donne de l'argent pour çà et les membres ceux qui cliquent et à qui je reverse de l'argent.
    On ne peut pas mettre tout ensemble il me semble c'est comme mettre les chiens et les chats ensemble. Par contre, pour ce que tu disais je n'ai pas d'information supplémentaire pour ma table annonceurs contrairement à la table membre qui contient l'argent gagné.

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    410
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 410
    Points : 90
    Points
    90
    Par défaut
    Vu les problèmes rencontrés et étant donné que je veux que ce soit flexible. je pense que je vais créer une seul table des membre en indiquant si la personne est un membre ou un annonceur et chaque compte pourra accéder à toutes les fonctionnalités (membre et annonceur).

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

Discussions similaires

  1. [DOM] [Xerces] Insertion d'une entité
    Par Traroth dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/05/2008, 09h28
  2. une entité dépend d'elle même
    Par Danger dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 23/05/2005, 16h34
  3. mettre une entité date ou pas??
    Par faayy dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 12/04/2005, 09h00
  4. mettre une entité date ou pas et surtout comment!!!
    Par faayy dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/04/2005, 08h54
  5. [MCD]Faut-il une Entité Date ?
    Par Francis dans le forum Schéma
    Réponses: 2
    Dernier message: 17/01/2005, 18h48

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