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 :

Table qui se référence elle-même ou simplicité ? [Entité-Association]


Sujet :

Schéma

  1. #1
    Invité
    Invité(e)
    Par défaut Table qui se référence elle-même ou pas ?
    Bonjour,

    Voilà je vous écrit aujourd'hui pour un petit soucis.
    Je met à jour une application que j'ai déjà développé il y a un petit moment et que j'aimerais simplifier.

    C'est pour faire de la facturation. La facture se compose d'articles qui sont rangés dans des titres et sous-titres pour un soucis purement de présentation.

    A l'époque, j'avais donc fait un schéma avec deux tables, l'une pour les titres et l'autre pour les articles, avec les bonnes relations entre elles pour qu'un titre puisse appartenir à un autre titre (donc la table "titres" faisait référence à elle-même) et pour qu' un article puisse appartenir à un titre.

    Aujourd'hui, je me demande si c'était vraiment nécessaire. En effet, je veux inclure une nouvelle donnée qui va en fait me permettre de savoir dans quel ordre je dois afficher mes titres.

    Je me demande alors si je ne peux pas faire sauter la relation de titres à titres, et afficher les titres juste dans le bon ordre, puisque c'est juste de l'esthétique.

    Je sais pas si j'ai été claire. En tout cas, merci par avance pour votre aide !
    Dernière modification par TheLeadingEdge ; 09/05/2009 à 09h31.

  2. #2
    Invité
    Invité(e)
    Par défaut
    En fait, je suis plus sure de devoir faire une table si compliqué pour les titres puisqu'ils ne sont là que pour faire jolis dans le contenu de ma facture. S'ils n'étaient pas là, cela ne changerait rien au final, ce n'est pas une donnée fondamentale.

    Je ne veux pas non plus les mélanger à la table des articles car les données n'ont rien à voir.

    Pour l'instant mon schéma ressemble à ça :


    Merci de votre aide.

  3. #3
    Invité
    Invité(e)
    Par défaut
    En fait je parle de faire plus simple, car quand il va falloir afficher la facture, avec mon système actuel, je dois faire de la récursivité (pour savoir quel titre appartientà quel titre et si je dois l'afficher en dessous de tel ou tel titre) etc etc et les articles et titres n'apparaissent pas forcément dans l'ordre que veut la personne.

    Donc c'est pour ça que j'ajoute un ordre, mais si j'ajoute un ordre, est-ce que j'ai besoin de m'embêter à faire de la récursivité pour mon affichage ? Surtout que les titres ne sont pas une données fondamentales mais juste là pour rendre la facture plus lisible, du style (en rouge j'ai les titres, et le reste ce sont les articles) :
    Fruits :
    • Pommes
    • Bananes
    Produits de beauté :
    • Gel Douche
    • Shampooing

    Personne pour me donner son avis ? Merci d'avance !

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 736
    Points : 52 447
    Points
    52 447
    Billets dans le blog
    5
    Par défaut
    A l'évidence en effet votre modèle est mal conçu car ce que vous avez fait est d'introduire une notion de "rayon" au sein des produits.
    Votre modèle en auto référence aurait pu être bon, dans le cas d'une nomenclature ou un produit eut lui même contenir un autre produit. Exemple : robot pinpin contenant un jeu de pile wonder, pile wonder pouvant elle aussi être vendue séparément....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Invité
    Invité(e)
    Par défaut
    En fait, je n'ai pas eu le choix pour les titres (ce que vous appelez "rayons").

    J'ai une liste d'articles qui, pour une question de lisibilité, doivent apparaître séparés par des titres qui eux-même peuvent être sous-titres d'autres titres.

    Si j'avais fait une table à part pour les titres, c'est parce que je ne voulais pas avoir une table qui mélangeait articles et titres en sachant que les articles sont créés à chaque nouvelle facture, car un article est toujours unique ...

    Que me suggérez-vous pour faire au plus simple et surtout au plus correct ?

    Merci !

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par poopsinou Voir le message
    car un article est toujours unique ...
    Vous ne vendez qu'une seule fois chaque article ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Invité
    Invité(e)
    Par défaut
    Comme les choses sont présentées : oui !

    C'est un peu spécial en fait : en réalité, on pourrait dire qu'il y aurait des catégories d'articles, mais elles ne nous serviraient qu'à nous donner le nom de l'article en général, car chaque article a au final sa propre désignation, son propre prix et quantité, n'est pas toujours composé de la même manière qu'un article de sa même catégorie, et les éléments qui les composent varient à chaque fois au niveau des prix.

    C'est en quelque sorte du sur mesure.
    Dernière modification par Invité ; 11/09/2008 à 11h48.

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Ce que je voulais dire, en reprenant ton exemple plus haut :
    "Dans ton entreprise, vous ne vendez qu'une seule fois des pommes et ensuite vous n'en vendez plus jamais ?"

    Ce qui se cache derrière ma question est qu'il faut distinguer les articles de leur présence ou non dans une facture.

    Généralement, une facture est composée d'informations propres à la facture (n° de facture, délai de paiement, n° du client...) et de lignes de factures (code article, quantité, prix de vente HT, code ou taux de TVA).

    Dans ton cas, les lignes de facture pourraient en plus être rattachées à l'identifiant d'un titre. Il serait ainsi possible de classer les lignes de facture par titre.

    Les titres peuvent eux-mêmes avoir un titre père et ensuite l'application qui génère les factures utilise les infos de la BDD pour mettre en forme tout ça correctement.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Invité
    Invité(e)
    Par défaut

    En fait, ce n'est pas pour vendre des fruits et légumes qu'on classerait très bien !!

    En fait, il s'agit d'articles sur mesure (aux dimansions souhaitées au millimètre par la personne, et avec tel et tel composant, etc etc) et donc unique.
    Ils ont chacun leur dénomination car ils doivent apparaitre selon la dénomination du client (et oui c'est pas toujours le plus simple) !!

    DOnc un article vendu une fois pour un client, ne sera peut-être plus jamais revendu, ou peut-être que si, mais il ne portera plus le même nom, d'où le fait que j'en fais des articles différents surtout qu'ils n'auront jamais le même prix (le prix dépend de trop de choses là) !!!!!!!!!

    Pour le modèle que tu décris avec la facture, article et titre, c'est ce que j'ai fait. Mais je me demandais juste s'il n'était pas bizarre d'avoir une table aussi complexe (qui fait référence à elle-même) juste pour des titres ...

    Et quand tu dis "lignes de factures", c'est pour le distinguer de l'article ? Car chez moi une ligne de facture équivaut à une article (enfin, y'a pas de distinction).

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par poopsinou Voir le message
    Et quand tu dis "lignes de factures", c'est pour le distinguer de l'article ? Car chez moi une ligne de facture équivaut à une article (enfin, y'a pas de distinction).
    Effectivement c'était pour ça mais avec tes explications je vois que ce n'est pas utile dans ton cas.

    Un petit détail : Dans ta table articles, le #titreParent est bien une clé étrangère venant de la clé primaire de la table Titres j'espère ! Moi je l'appellerais #idTitreClassement ou un truc dans le genre pour ne pas prêter à confusion avec la clé étrangère déjà présente dans la table Titres et qui porte le même nom.

    Sinon en conclusion je ne vois pas spécialement de modèle plus simple.
    A l'appli de facturation de gérer ça correctement ensuite.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  11. #11
    Invité
    Invité(e)
    Par défaut
    Donc, vous pensez que j'ai fait juste et qu'il n'y a pas de raison de chercher à le modifier ?

    Merci !

  12. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    J'ai édité mon message pendant que vous répondiez.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  13. #13
    Invité
    Invité(e)
    Par défaut
    Un petit détail : Dans ta table articles, le #titreParent est bien une clé étrangère venant de la clé primaire de la table Titres j'espère ! Moi je l'appellerais #idTitreClassement ou un truc dans le genre pour ne pas prêter à confusion avec la clé étrangère déjà présente dans la table Titres et qui porte le même nom.
    Tout à fait oui ! J'ai juste mis le même nom pour savoir ce que c'était en fait !

    Et bien merci pour vos réponses ! J'avais un peu peur de m'y être mal prise.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bon je me permets de réouvrir le sujet un mois après (j'avais fait une pause dans mon projet), car je viens de penser à quelque chose.

    Sachant que mes articles sont enregistrés une première fois dans une autre table, est-il possible de simplifier la chose comme suit pour la facture :



    (type_ligne correspondrait à "article" ou "titre". Ce qui simplifierait énormément le traitement je pense (notamment pour la saisie de la facture).

    Qu'en pensez-vous ?

  15. #15
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Dans ce cas les lignes de titre n'auront pas de prix ni de quantité (valeur NULL).
    C'est faisable comme ça je pense oui.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  16. #16
    Invité
    Invité(e)
    Par défaut
    Mais ce n'est pas un problème si ces deux lignes sont à null, non ?
    D'ailleurs la clé étrangère sur les id-repere ne sera pas toujours renseignée non plus (dans le cas d'un titre).

    Je pense que c'est plus simple, surtout qu'en fait cette table sert au corps de la facture, car en fait une facture va être faite en plusieurs fois (on ne facture pas tout d'un coup, on incrémente à chaque fois le nombre d'articles et on déduit le montant de la facture précédente, et ainsi de suite) et je pensais l'importer d'un fichier excel (déjà existant) qui remplirait mon formulaire de saisie à valider par la suite, donc pour gérer les titres, cela est beaucoup plus simple de faire comme je le veux dans la dernière table non ?

    Merci !

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 25/07/2012, 19h56
  2. [1.x] Table qui se référence elle-même
    Par floringg dans le forum Symfony
    Réponses: 2
    Dernier message: 17/07/2012, 10h24
  3. JFrame qui se superpose à elle-même
    Par Grulf dans le forum Agents de placement/Fenêtres
    Réponses: 37
    Dernier message: 18/06/2008, 17h40
  4. Réponses: 5
    Dernier message: 28/05/2008, 17h18
  5. Une iframe qui se supprime elle-même
    Par jibouze dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 19/12/2005, 11h11

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