Aller au contenu

raisonnement qui conduit à la création d'une grosse table


Sujets conseillés

Posté

Bonjour à tous,

(j'espère ne pas me tromper de liste ...)

Le problème initial est assez simple, quoique si il l'était je n'aurais pas besoin de poster et/ou j'arriverais à poster un message compréhensible or je poste et j'ai du mal à formuler mon message ...

Mes capacités:

je sais créer une table sql simple et inter-agir sur elle depuis php mais il faut que ce soit basique !

Hors à mesure je complique la tâche et la d'un coup je me retrouve face à un mur que je n'arrive pas à contourner ...

Pour résoudre mon problème

Je pense que:

je dois créer une base qui contiendra plusieurs tables (3 !) ces tables seront croisées.

Je n'arrive pas du tout à savoir sur quel pied partir et comment faire, j'en arrive donc à vous exposer la situation qui me pose tant de souci pour savoir si une âme charitable pouvait éclairer mes lanternes sur la direction à prendre.

La situation :

Mr X est éleveur, pour présenter ses bêtes dans des conditions optimales de traçabilité il met leurs fiches en ligne.

Ces fiches comportent plusieurs rubriques:

- identité de l'animal

- identité du père

- identité de la mère

- grand père et mère paternel et maternel ...

Sachant qu'un même animal aura forcément sa propre fiche qu'il pourra être plusieurs fois père ou mère et également plusieurs fois grand père (ou ...)

(parfois mais rarement grand père paternel et grand père maternel, si si ils n'ont pas de complexe)

Le problème:

Pour attaquer la chose du bon pied et ne pas la recommencer 50 fois, il est conseillé de la penser avant de la créer ...

C'est la tout mon problème comme je n'ai pas les notions suffisantes pour penser le croisement de table, et qu'il serait absurde voir inutile de créer une table par animal avec tous les items a saisir un par un ...

Quelqu'un se sentirait il l'âme de perdre son temps avec un ignare de mon espèce pour simplement me mettre sur le bon mode de raisonnement face à ce genre de situation ?

Je ferais les recherches de mon côté pour ce qui est du croisement ... etc ...

Merci d'avance à ceux qui ont pris le temps de me lire et à ceux qui en prendrait à me répondre.

Cordialement Manuel

Ps: la fiche en question est visible à ici

(attention ceci est une adresse de travail elle a donc vocation a disparaitre)

Posté

Ne commence pas par te poser les questions de grand-parents.

Fais au plus simple : Chaque bête a forcément un père et une mère, au minimum. Il te suffit donc d'avoir une seule table.

Dans cette table, tu stocke l'identifiant de la bête, l'identifiant de son père, celui de sa mère, et c'est terminé.

Après effectivement, pour afficher les informations sur une bête il te faudra sélectionner les deux parents, puis les deux parents de chacun des parents pour obtenir les grands-parents

Posté

Merci de votre participation,

en fait j'ai du mal a simplifier autant le problème ...

Chaque fiche animal comporte des rubriques, celle de l'animal en question comporte 12 champs,

celle du père 22 champs, autant pour la mère et 8 champs pour chacun des grands parents.sans compter les id qu'il convient de rajouter en fonction du nombre de table et des croisements eventuels ...

C'est pour ca que le nom seul du père ou de la mère ne m'inquiète pas trop mais en appelant le nom du père il faut que les 22 champs qui lui sont associé soit affichable également.

Peut être est il tard et que la journée sur ce problème m'obscurcit l'esprit :blush:

Posté

Et bien une table pour la rubrique serait pas mal, surtout si il y a beaucoup de champs et si le nombre de champs varie ou est (sera) inconnu...

Une table animaux :

id_animal nom_animal code_pere code_mere

Une table rubriques :

id_rubrique code_animal libelle_rubrique valeur_rubrique

La table rubriques ainsi faite te permet de ne saisir que les enregistrement rééllement présents pour un animal (soit 2, 8, 22 ou plus ou aucun !). Et également d'avoir des noms de rubriques paramétrables.

Et le code :

SELECT * FROM rubriques JOIN animaux ON code_animal = id_animal WHERE id_animal = 12

Il te permet de récupérer les rubriques pour un animal donné.

Par contre pour récupérer les ascendants d'un animal, je pense qu'il faut passer par une boucle en testant code_pere code_mere récursivement.

Posté (modifié)

:thumbsup:

C'est dingue comme ca parait simple quand on l'a fait 5 ou 6 fois mais la première reste difficile à digérer.

J'ai fini par opter pour la solution suivante.

Dans le table ani je défini un "code" qui est l'identifiant national (donc unique) de l'animal.

j'ai ajouté des champs pour chaque lien de parenté dans lequel je donne le code national du parent ...

J'ai l'impression de parler une langue étrangère mais je me comprend ;)

Encore merci pour vos éclaircissements :blush:

Modifié par mac97000
Posté

dans la mesure ou tu peux avoir _plusieurs_ liens de parentés identiques (un animal plusieurs fois géniteur d'un autre), tu pourrais avoir :

une table animaux, avec une ligne par animal et toutes ses données

une table geniteur, avec une ligne par lien de parenté contenant les deux id (animal_geniteur_id, animal_enfant_id)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...