par
sanspseudo » 13 juin 2006, 16:39
Bonjour,
Pour commencer, je tiens à préciser que je ne connais pas assez PHP pour te donner les syntaxes, mais coté base de données j'ai une petite expérience.
Tu te retrouves confronté à un problème récurrent de hiérarchie.
Pour ton cas :
Tout cheval à un père et une mère
Tout père est un cheval, il à donc un père et une mère
Tout mère est un cheval, elle à donc un père et une mère
Même raisonnement pour les grands parents et les poulains à venir.
Donc, je mettrais en place une table 'Cheval' constituée de la façon suivante :
Champ 1 : 'Id cheval' de type numérique auto incrément
Champ 2 : 'Sexe' de type caractère ( M ou F )
Champ 3 : 'Nom' de type caractère
Champ 4 : 'Date naissance' de type date
Champ 5 : 'id du père' de type numérique
Champ 6 : 'id de la mère' de type numérique
Ceci avec 2 auto jointures :
- du champ 5 vers le champ 1
(chaque info du champ 5 (sauf les ?) doit exister dans le champ 1)
- du champ 6 vers le champ 1
(chaque info du champ 6 (sauf les ?) doit exister dans le champ 1)
Donc voici la table cheval :
Code : Tout sélectionner
|id|sexe|nom|date naiss|id père|id mère|
|--|----|---|----------|-------|-------|
| 1| M | A | | ? | ? |
| 2| F | B | | ? | ? |
| 3| M | C | | 1 | 2 |
| 4| F | D | | 1 | ? |
| 5| M | E | | ? | 2 |
| 6| M | F | | ? | ? |
| 7| F | G | | 6 | 2 |
| 8| F | H | | 6 | 4 |
| 9| M | I | | 5 | 8 |
|10| M | J | | 6 | 8 |
Remarque : les ? correspondent à des informations que tu n'as pas. A force de remonter les branches tu finiras bien par avoir des informations qui te manque. Selon les bases de données c'est la valeur Null, empty, ...
En suite il suffit de lire les informations dans la table :
Le cheval C dont l'id est 3 n'est père d'aucun cheval
La jument B dont l'id est 2 est mère 3 chevaux (C, E et G : 2 males, 1 femelle)
Si j'ai bien compris ton problème, pour moi c'est la structure idéale.