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

Langage PHP Discussion :

Fusionner 4 tables !


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2011
    Messages : 24
    Points : 31
    Points
    31
    Par défaut Fusionner 4 tables !
    Salut,

    Voilà j'ai 4 tables sql :

    - Orc
    - Troll
    - Humain
    - Loup-Garou

    Dans ses 4 tables, j'ai une dizaine de champs dont la moitié son pareil :

    - id
    - sexe
    - taille
    - poid

    et d'autres :

    - orc
    -- oreilles
    -- nez

    - Troll
    -- peau
    -- pieds
    -- mains

    ...etc

    Je souhaite fusionner ses tables en une, comme cela :

    - Personnages
    -- id
    -- sexe
    -- taille
    -- poid
    -- différences

    Le champ différences permettrai de rassembler tous les champs différents des autres tables en une.

    Je ne sais pas trop comment faire, car il faut que je garde le nom des champs ainsi que leurs valeurs, j'ai des champs avec beaucoup de texte.

    J'ai pensé a tout parser en json et insérer les données dans le champ différences, mais je ne sais pas trop si ça se fait.

    Merci de votre aide

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Pour ma part, je ferais comme ceci:

    Ta table principale:
    - Personnages
    -- id
    -- sexe
    -- taille
    -- poid
    -- id_differences

    Et une table des différences car tu peux avoir n champs en fonction du personnage:
    - Differences
    -- id
    -- id_differences
    -- nom_difference
    -- valeur_difference

    Les valeurs seront assez simple à récupérer dans ce cas ...

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2011
    Messages : 24
    Points : 31
    Points
    31
    Par défaut
    La table va se charger comme une mule en peu de temps avec ce système, ça n'impactera pas les performances?

    Et puis c'est bordélique nan?

  4. #4
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Pourquoi pas faire simplement une table avec touts les champs possibles en rendant simplement non obligatoires celles qui ne sont pas commun a tous?

    Ensuite tu gère dans tes requêtes suivant la race les champs que tu Select.

  5. #5
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Citation Envoyé par TrAsHeR Voir le message
    La table va se charger comme une mule en peu de temps avec ce système
    En prenant ton système de base, ta table personnage sera comme celle que tu as identifié en premier (et que j'ai gardé).

    Ensuite la découpe sera d'avoir plusieurs champs pour chaque différence au lieu d'avoir un champ unique contenant tout et qui risque d'être saturé

    Et puis c'est bordélique nan?
    Bein ça, moi je trouve que non mais j'ai peut être pas tout comprendo

    En dernier, faire qu'un champ pour y mettre toutes les différences (en utilisant json ou pas) ça je trouve mais ça reste mon avis

  6. #6
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Salut,

    Quand on a ce type de donnée, en SQL on fait comme ceci


    Personnage
    -- id
    -- sexe
    -- taille
    -- poid
    -- id_differences

    Orc
    -- id
    -- oreilles
    -- nez

    - Troll
    -- id
    -- peau
    -- pieds
    -- mains

    Ceci est la spécialisation d'entité. La table personnage donne de nouveau élements.

    Et si par la suite tu inventes un type genre "Homme des montagne", ça n'affecte en rien ta construction de base, tu n'auras qu'une table à rajouter.

    Pour faciliter les traitements en PHP, dans la table Personnages, tu peux ajouter un champ "type" pour savoir dans quel table allé chercher.

  7. #7
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut
    tu imagines une table par notion

    Une table type perso
    une table accessoire
    et
    une table perso avec idtype
    Une idperso - idaccessoire

    Comme ça si tu rajoute un type ou un accessoire, ça n'impacte pas le reste

    Le coup de mettre tous les champs possibles, ça risque de prendre de la place pour rien car tu aura des notions inutiles sur chaque enregistrement

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2011
    Messages : 24
    Points : 31
    Points
    31
    Par défaut
    Désolé du retard

    Merci pour vos réponses, ça peut en effet le faire !

    Et si j'ajoute un champs infos et je met tout en jSon dedans ça peut le faire ?

  9. #9
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 152
    Points : 248
    Points
    248
    Par défaut
    Citation Envoyé par Nowwis Voir le message
    Salut,
    Quand on a ce type de donnée, en SQL on fait comme ceci

    Personnage
    -- id
    -- sexe
    -- taille
    -- poid
    -- id_differences

    Orc
    -- id
    -- oreilles
    -- nez

    - Troll
    -- id
    -- peau
    -- pieds
    -- mains
    Oulalala, on ne fait absolument jamais ce genre de choses
    Ca rend toute relation entre les tables totalement impossible.
    On fera donc plutôt:

    Personnage
    -- id
    -- sexe
    -- taille
    -- poid

    PK sur id

    DifferencesTypes
    --id
    --Designation

    PK sur id

    Differences
    --idPerso
    --idType
    --valeur

    PK sur le couple idPerso/idType, ca évitera les 4 yeux

    cardinalités:
    1,n sur la relation personnage-differences
    1,n sur la relation DifferencesTypes-Differences


    Là au moins si ça te chante tu sort toutes les infos en une seule requete.


    Et si j'ajoute un champs infos et je met tout en jSon dedans ça peut le faire ?
    Techniquement oui.
    Idéologiquement non.

    Une bdd n'a pas vocation a héberger du json, du xml, du html, des images (on le vois encore parfois en 2012) ou que sais-je.
    Ca marche très bien, mais si on est un peu intégriste, ca fait mal au derrière.

Discussions similaires

  1. fusionner 2 tables
    Par sawati dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 02/07/2006, 15h55
  2. fusionner 2 tables de structure différente
    Par Rcanada dans le forum Access
    Réponses: 9
    Dernier message: 21/04/2006, 09h54
  3. Fusionner deux tables
    Par rdjema dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2005, 18h42
  4. Fusionner 2 tables Access
    Par zangel dans le forum Access
    Réponses: 7
    Dernier message: 02/11/2005, 08h33
  5. fusionner 2 tables dont les champs sont identiques mais.....
    Par NoobX dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/10/2005, 16h12

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