Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1946 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  mysql +noob + plusieurs tables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

mysql +noob + plusieurs tables

n°1500600
krifur
Posté le 09-01-2007 à 00:31:29  profilanswer
 

Salut a tous,
 
je doit faire une base de donnees d'image, dans la table de base il y a un champ categorie de type enum:
catégorie    enum('dessin', 'image', 'photo') ;
 
ensuite et ca la ou je vois pas trop comment faire pour optimiser le tout, j ai 4 champ qui varie en fonction de la categorie choisit:
par ex:
 
categorie dessin: taille , auteur style annee ...
categorie image: format, chose ,truc,bidule...
 
comment je fait pour permettre d ajouter des champs differents en fonction d un champ predefinit ?
Faut il creer des tables en fonction de chaque categories? si oui faut il ajouter des cles etrangeres?
 
merci
 
mysql 5.0 serveur debian.
 

mood
Publicité
Posté le 09-01-2007 à 00:31:29  profilanswer
 

n°1500710
rufo
Pas me confondre avec Lycos!
Posté le 09-01-2007 à 11:48:35  profilanswer
 

en faisant un modèle de données qui prenne en compte ces contraintes... :o
 
Ce post peut t'aider : http://forum.hardware.fr/hfr/Progr [...] m#t1480675


Message édité par rufo le 09-01-2007 à 11:50:52
n°1500717
krifur
Posté le 09-01-2007 à 12:27:32  profilanswer
 

Salut,
je suis aller voir ton lien c est un peu complexe pour mon ptit pb  :D  
je reexplique le but de la manoeuvre , je pense pas que ca doit etre trop compliquee mais je m y connais pas assez pour voir ca clairement...
 
en gros j ai une table image comme ca:
 
images (id, nom,categorie) -- voila la table image  
 
et en fonction des categories:
 
dessin (taille , auteur style annee) --categorie dessin
image: (format, chose ,truc,bidule) --categorie image
 
suis obliger de creer une table par categories?
si oui par quels champs les liés?(j ai lu qu on pouvait ce passer de cle etrangere sous mysql)?
 
merci de vos eclaircissements

n°1500718
MagicBuzz
Posté le 09-01-2007 à 12:38:43  profilanswer
 

c'est cool, je réponds à des topics sans même être au courant :D
 
oui, tu crée une table par catégorie.
 
t'as donc une table "image", qui correspond à l'image "en général".
dedans t'aura un ID, un chemin d'accès et peut-être quelques autres infos communes (titre, uploadeur, gallerie, etc.)
 
ensuite, un champ "catérogie".
 
et effectivement une table "photo", une table "dessin" et une table "autrenomqueimageparcequecestdejapris".
 
leur identifiant sera simplement l'id de l'image dans la table principale. tu auras une foreign key photo(id) refenrences image(id) pour chaque table.

n°1500723
krifur
Posté le 09-01-2007 à 13:00:44  profilanswer
 

salut,

 

ok donc ca donne un truc comme ca:

 


images (id, nom,categorie) -- voila la table image  
 
et en fonction des categories:
 
dessin (taille , auteur style annee,#id) --categorie dessin
photo: (format, chose ,truc,bidule,#id) --categorie image

 

#-->clé etrangere
 en fait #id est a la fois cle etrangere et a la fois cle primaire pour chaque categorie ?
merci d'oter mes doutes :hello: mysql peut gere ca non?

 

merci

 



Message édité par krifur le 09-01-2007 à 13:33:03
n°1500734
rufo
Pas me confondre avec Lycos!
Posté le 09-01-2007 à 13:28:43  profilanswer
 

avoir une table image et images :/ bonjour la confusion après à la relecture...

n°1500735
krifur
Posté le 09-01-2007 à 13:32:44  profilanswer
 

effectivement... j ai editer, sinon la syntaxe est correcte ?
 
merci :jap:

n°1500752
MagicBuzz
Posté le 09-01-2007 à 13:52:13  profilanswer
 

oui c'est ça. id sera à la fois pk et fk. mysql le gère très bien.
ce ne seront pas des auto-incrément. et ne tu auras des trous, c'est normal.

n°1501247
krifur
Posté le 10-01-2007 à 14:28:43  profilanswer
 

petite precision,
 

Citation :

ce ne seront pas des auto-incrément


 
l id de la table images peut lui etre un auto increment, mais pas les id des "tables filles" photos et dessins?
c est cela ?
 
 
merci!

n°1501248
MagicBuzz
Posté le 10-01-2007 à 14:29:14  profilanswer
 

c'est ça

mood
Publicité
Posté le 10-01-2007 à 14:29:14  profilanswer
 

n°1501449
krifur
Posté le 10-01-2007 à 18:04:30  profilanswer
 

ok merci,
mais en fait je comprends pas trop l utilites des cle etrangeres est ce que cela simplifie les requetes (insert select) passées a la BDD ou est ce que ca sert juste comme contrainte d integrité(il ne pourra pas y avoir 2 numero d index identiques pour les 2 categories photos et dessins par exemple)?
 

n°1501469
MagicBuzz
Posté le 10-01-2007 à 18:57:40  profilanswer
 

pour simplifier, dans ton cas, tu devrais avoir ceci :
 
images (id, fichier, etc.)
dessin (id, images_id, auteur, etc.)
photo (id, images_id, modele_apn, etc.)
 
Hors, dans ton cas, un dessin n'est rattaché qu'à un fichier image. Idem pour une photo. Donc "images_id" est unique. Il peut être utilisé comme clé primaire, ce qui rend inutile les "id" dans "dessin" et "photo". Par contre, image_id ne sera pas séquenciel dans ces deux tables, puisqu'une même fichier est soit une photo, soit un dessin.
 
La FK quand à elle (donc dessin.images_id = images.id et photo.images_id = images.id) permet de lier physiquement le dessin ou la photo à l'image.
Ainsi, impossible de supprimer un enregistrement de "images" sans avoir au préalable effacé l'enregistrement "photo" ou "dessin" correspondant. De même, impossible de créer un enregistrement "photo" ou "dessin" qui ne référence pas un fichier existant.
 
Deplus, la FK est utile lors des requêtes récupérant des données à la fois de images et dessin par exemple, puisque le lien entre les deux est connu par le SGBD. Dans ton cas simple, c'est pas forcément très intéressant, mais dans un cas plus complexe, cela peut éviter au SGBD de s'emmêler les pinceaux et ralentir considérablement.

n°1501583
krifur
Posté le 11-01-2007 à 03:59:13  profilanswer
 

ok magicbuzz, merci de ces reponses,
2 ptites questions avant d aller dormir...
par defaut les tables crees par mysql sont de quel type myIsam?
est ce qu on peut creer des cle etrangeres avec des myIsam ou il faut plutot un type innoDB?
 
question subsidaire :o tu penses quoi de ce site http://ondras.praha12.net/sql/demo/, j ai essayer de creer des cles etrangeres avec mais ca a pas l air d avoir fonctionner...
 
 
merci :hello:  

n°1501633
MagicBuzz
Posté le 11-01-2007 à 11:20:57  profilanswer
 

- aucune idée
- aucune idée. je dirais qu'il vaut mieu être en innodb de toute façon
- ça a l'air pas mal comme truc :)

n°1501638
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-01-2007 à 11:29:54  profilanswer
 

- rtfm :o ( http://dev.mysql.com/doc/refman/4. [...] table.html )

Citation :

The ENGINE and TYPE table options take the storage engine names shown in the following table.
...
If a storage engine is specified that is not available, MySQL uses the default engine instead. Normally, this is MyISAM.
...


- innoDB c'est mieux surtout si tu as un vieux mysql

n°1501641
chani_t
From Dune
Posté le 11-01-2007 à 11:34:03  profilanswer
 

innodb, me semble t'il, a bien plus de possibilités (plus de champs, taille des champs plus importante etc..), mais , revers de la médaille, est moins rapide..

n°1501677
krifur
Posté le 11-01-2007 à 12:38:42  profilanswer
 

thx, j ai mysql  Ver 12.22 Distrib 4.0.24, for unknown-linux-gnu (mipsel)
 
du coup je vais passer en innodb.

n°1504513
fredko
Posté le 18-01-2007 à 10:28:21  profilanswer
 

MySQL ver 12.22^^ ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  mysql +noob + plusieurs tables

 

Sujets relatifs
PHP MysqlProblème de requête SQL - PHP - mysql
Lister les serveurs MySQLTables croisées et tri, petit soucis
Probleme connexion à distance (mysql)AJAX : Update d'une table mysql toutes les secondes sans refresh
Un site php/mysql pour les débutant ?Connexion à une base mysql à partir d'un ordinateur distant
[PHP/MySQL] Je sers la Science (moteur cataloguage recherche pdf)Comparaison de 2 bases MySQL
Plus de sujets relatifs à : mysql +noob + plusieurs tables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR