Débutant Tables MySQL
Résolu/Fermé
Blopette
Messages postés
315
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
3 octobre 2012
-
16 avril 2008 à 21:09
Blopette Messages postés 315 Date d'inscription vendredi 24 août 2007 Statut Membre Dernière intervention 3 octobre 2012 - 17 avril 2008 à 15:41
Blopette Messages postés 315 Date d'inscription vendredi 24 août 2007 Statut Membre Dernière intervention 3 octobre 2012 - 17 avril 2008 à 15:41
A voir également:
- Débutant Tables MySQL
- Tables des matières word - Guide
- Mysql community server - Télécharger - Bases de données
- Logiciel de programmation pour débutant - Guide
- Tables ascii - Guide
- Le paquet « mysql-server » n'a pas de version susceptible d'être installée ✓ - Forum Debian
4 réponses
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
17 avril 2008 à 10:16
17 avril 2008 à 10:16
Bonjour,
Pour commencer félicitation pour ton message, clair, bien écrit et simple à comprendre, c'est pas souvent qu'on tombe sur quelqun qui explique si bien :D
Pour te répondre :
1/
JoueurID | SERIAL | rempli automatiquement à chaque nouvelle ligne ?
=> Oui, l'identifiant est généralement unique par définition, et doit donc être rempli automatiquement lors d'une insertion. (auto-increment). Il faut également que cette propriété soit définie comme la clef primaire de ta table.
Enreg | DATE | date d'enregistrement remplie automatiquement
=> Oui, libre à toi de l'écrire dans ta requête SQL d'insertion (le mieux je trouve) ou de calculer en PHP et de l'inclure comme variable dans ta requête d'insertion.
Pseudo | VARCHAR(25) | rempli à l'inscription par le membre via PHP ?
Mdp | VARCHAR(25) | rempli à l'inscription par le membre
Pays | VARCHAR(25) | rempli à l'inscription par le membre
Email | VARCHAR(25) | rempli à l'inscription par le membre
=> Oui, tout cela sont des variables issue de ton formulaire, qui devront être vérifiées et validée au préalable en PHP (pour éviter que l'utilisateur n'entre des données qui corrompt ta base de données). Ces variables seront passée à ta requête SQL d'insertion.
Avatar | VARCHAR(255) | le membre entre l'url d'une image pour qu'elle puisse s'afficher sur son profil grâce à PHP ?
=> Encore un oui, si tu as l'url de l'image, lorsque tu affichera ta page, il te suffira de faire une requête SQL pour récupérer les informations d'un utilisateur - dont l'url de l'avatar - et d'y inclure une balise image ayant pour source l'url en question.
Ex :
2) Si tu veux que tes utilisateurs puisse choisir une ou plusieurs catégories d'objet, il va falloir que tu les matérialise dans ta base de données, afin d'enregistrer les liens entre ces catégories et tes utilisateurs.
Pour ce faire, tu devra donc créer une table "categorie" qui regroupera certaines informations.
Par exemple :
- identifiant (numerique, auto-increment)
- label (varchar)
Ensuite tu pourra insérer directement tes catégories dans ta base, de manière à pouvoir lister sur une page PHP toutes tes catégories via une requête SQL SELECT sur ta base de donneés (dans cette nouvelle table). Ainsi tu as tes catégories en base et non en dur dans ton code PHP.
Reste ensuite à pouvoir faire un lien entre les catégories et les utilisateur.
Pour ce faire, il te suffit de créer une autre table qui symbolisera ce lien. Tu sais que dans la table utilisateur tu as un identifiant, unique pour chaque utilisateur, et de même dans ta table de catégorie.
Ta nouvelle table s'appellera par exemple 'utilisateur_cat' et regroupera les informations suivantes :
- utilisateur_identifiant (primary key)
- categrorie_identifiant (primary key)
Ces deux idendifiants ne doivent pas être en auto-increment puisque tu les replira toi même par des identifiants déjà connus (celui de l'utilisateur et celui de la catégorie sélectionnée)
Par contre, ces deux identifiants doivent être défini tout deux comme des clés primaires, puisque ce qui fait l'unicité dans cette table, c'est le couple (utilisateur_id,catégorie_id).
On est d'accord qu'un utilisateur ne peux pas sélectionner deux fois la même catégorie.
3) La par contre je te dirai non :)
Le mieux pour faire ce que tu veux c'est de créer une nouvelle table "jeu" qui aura pour propriétés :
- identifiant (int, auto-increment, primary key)
- label (varchar) => nom du jeu
- valeur (int) => contante de division, propre à chaque jeu
Ensuite, la donnée "score" elle n'est pas propre à jeu, mais plutôt au couple 'joueur-jeu'. Tu vois donc que cette données ne peux pas être inclue dans la table 'jeu' même.
Il faut, de la même manière que pour la table qui relie 'utilisateur' à 'categorie', faire une nouvelle table de liaison (que l'on appelle 'relation') qui reliera nos deux tables 'utilisateur' et 'jeu'. Elle se nomera 'score' par exemple et aura les propriétés suivantes :
- id_score (int, primary key)
- id_utilisateur (int, primary key)
- id_jeu (int, primary key)
- score (int)
De cette manière (sans prendre en compte ce qui est en gras), un joueur pourra n'avoir qu'un seul score / jeu. Si tu veux qu'il puisse en avoir plusieurs, il faudra inclure en plus un notion d'identifiant pour la table 'score' (ajouté en gras ci dessus). Ainsi, le couple (id_score,id_utilisateur,id_jeu) sera toujours unique.
Pour commencer félicitation pour ton message, clair, bien écrit et simple à comprendre, c'est pas souvent qu'on tombe sur quelqun qui explique si bien :D
Pour te répondre :
1/
JoueurID | SERIAL | rempli automatiquement à chaque nouvelle ligne ?
=> Oui, l'identifiant est généralement unique par définition, et doit donc être rempli automatiquement lors d'une insertion. (auto-increment). Il faut également que cette propriété soit définie comme la clef primaire de ta table.
Enreg | DATE | date d'enregistrement remplie automatiquement
=> Oui, libre à toi de l'écrire dans ta requête SQL d'insertion (le mieux je trouve) ou de calculer en PHP et de l'inclure comme variable dans ta requête d'insertion.
Pseudo | VARCHAR(25) | rempli à l'inscription par le membre via PHP ?
Mdp | VARCHAR(25) | rempli à l'inscription par le membre
Pays | VARCHAR(25) | rempli à l'inscription par le membre
Email | VARCHAR(25) | rempli à l'inscription par le membre
=> Oui, tout cela sont des variables issue de ton formulaire, qui devront être vérifiées et validée au préalable en PHP (pour éviter que l'utilisateur n'entre des données qui corrompt ta base de données). Ces variables seront passée à ta requête SQL d'insertion.
Avatar | VARCHAR(255) | le membre entre l'url d'une image pour qu'elle puisse s'afficher sur son profil grâce à PHP ?
=> Encore un oui, si tu as l'url de l'image, lorsque tu affichera ta page, il te suffira de faire une requête SQL pour récupérer les informations d'un utilisateur - dont l'url de l'avatar - et d'y inclure une balise image ayant pour source l'url en question.
Ex :
<img src="$url" ... />
2) Si tu veux que tes utilisateurs puisse choisir une ou plusieurs catégories d'objet, il va falloir que tu les matérialise dans ta base de données, afin d'enregistrer les liens entre ces catégories et tes utilisateurs.
Pour ce faire, tu devra donc créer une table "categorie" qui regroupera certaines informations.
Par exemple :
- identifiant (numerique, auto-increment)
- label (varchar)
Ensuite tu pourra insérer directement tes catégories dans ta base, de manière à pouvoir lister sur une page PHP toutes tes catégories via une requête SQL SELECT sur ta base de donneés (dans cette nouvelle table). Ainsi tu as tes catégories en base et non en dur dans ton code PHP.
Reste ensuite à pouvoir faire un lien entre les catégories et les utilisateur.
Pour ce faire, il te suffit de créer une autre table qui symbolisera ce lien. Tu sais que dans la table utilisateur tu as un identifiant, unique pour chaque utilisateur, et de même dans ta table de catégorie.
Ta nouvelle table s'appellera par exemple 'utilisateur_cat' et regroupera les informations suivantes :
- utilisateur_identifiant (primary key)
- categrorie_identifiant (primary key)
Ces deux idendifiants ne doivent pas être en auto-increment puisque tu les replira toi même par des identifiants déjà connus (celui de l'utilisateur et celui de la catégorie sélectionnée)
Par contre, ces deux identifiants doivent être défini tout deux comme des clés primaires, puisque ce qui fait l'unicité dans cette table, c'est le couple (utilisateur_id,catégorie_id).
On est d'accord qu'un utilisateur ne peux pas sélectionner deux fois la même catégorie.
3) La par contre je te dirai non :)
Le mieux pour faire ce que tu veux c'est de créer une nouvelle table "jeu" qui aura pour propriétés :
- identifiant (int, auto-increment, primary key)
- label (varchar) => nom du jeu
- valeur (int) => contante de division, propre à chaque jeu
Ensuite, la donnée "score" elle n'est pas propre à jeu, mais plutôt au couple 'joueur-jeu'. Tu vois donc que cette données ne peux pas être inclue dans la table 'jeu' même.
Il faut, de la même manière que pour la table qui relie 'utilisateur' à 'categorie', faire une nouvelle table de liaison (que l'on appelle 'relation') qui reliera nos deux tables 'utilisateur' et 'jeu'. Elle se nomera 'score' par exemple et aura les propriétés suivantes :
- id_score (int, primary key)
- id_utilisateur (int, primary key)
- id_jeu (int, primary key)
- score (int)
De cette manière (sans prendre en compte ce qui est en gras), un joueur pourra n'avoir qu'un seul score / jeu. Si tu veux qu'il puisse en avoir plusieurs, il faudra inclure en plus un notion d'identifiant pour la table 'score' (ajouté en gras ci dessus). Ainsi, le couple (id_score,id_utilisateur,id_jeu) sera toujours unique.
R4f
Messages postés
441
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
5 mai 2008
62
17 avril 2008 à 10:01
17 avril 2008 à 10:01
Salut Blopette,
Pour la structure de ta table, tu demandes à plusieurs endroits : via PHP ?
C'est étrange comme question. Oui, PHP doit tout faire tout seul comme un grand. Tu ne penses quand même pas donner un accès à la base de données à chacun de tes visiteurs pour qu'ils insèrent leurs données eux-mêmes ? ;-)
Tu n'indiques pas quel outil tu utilises pour accéder à ta base : PhpMyAdmin ?
Savoir avec quel outil tu le fais pourra faciliter les conseils futurs.
Raph
Pour la structure de ta table, tu demandes à plusieurs endroits : via PHP ?
C'est étrange comme question. Oui, PHP doit tout faire tout seul comme un grand. Tu ne penses quand même pas donner un accès à la base de données à chacun de tes visiteurs pour qu'ils insèrent leurs données eux-mêmes ? ;-)
Tu n'indiques pas quel outil tu utilises pour accéder à ta base : PhpMyAdmin ?
Savoir avec quel outil tu le fais pourra faciliter les conseils futurs.
Raph
Blopette
Messages postés
315
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
3 octobre 2012
273
17 avril 2008 à 12:32
17 avril 2008 à 12:32
Merci beaucoup pour vos réponses!
Comme je suis sous Linux, j'ai installé Mysql, et aussi Apache.
Pour le 1/ j'ai tout compris (\o/) merci!
Par contre dans le 2/, quand tu dis :
Je comprends qu'il faut que utilisateur_identifiant et categorie_identifiant soient définis comme clés primaires, mais si on ne les met pas en auto-increment, quel type de données ce sera? Est-ce qu'on peut les mettre en tant que (primary key) seulement?!
Grâce au 3/, j'ai enfin compris la notion de couple! :)
Merci beaucoup pour toutes ces informations! =)
Comme je suis sous Linux, j'ai installé Mysql, et aussi Apache.
Pour le 1/ j'ai tout compris (\o/) merci!
Par contre dans le 2/, quand tu dis :
Ta nouvelle table s'appellera par exemple 'utilisateur_cat' et regroupera les informations suivantes : - utilisateur_identifiant (primary key) - categorie_identifiant (primary key) Ces deux idendifiants ne doivent pas être en auto-increment puisque tu les remplira toi même par des identifiants déjà connus (celui de l'utilisateur et celui de la catégorie sélectionnée). Par contre, ces deux identifiants doivent être défini tout deux comme des clés primaires, puisque ce qui fait l'unicité dans cette table, c'est le couple (utilisateur_id,catégorie_id).
Je comprends qu'il faut que utilisateur_identifiant et categorie_identifiant soient définis comme clés primaires, mais si on ne les met pas en auto-increment, quel type de données ce sera? Est-ce qu'on peut les mettre en tant que (primary key) seulement?!
Grâce au 3/, j'ai enfin compris la notion de couple! :)
Merci beaucoup pour toutes ces informations! =)
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
17 avril 2008 à 13:59
17 avril 2008 à 13:59
Re,
Réponse au 2) :
Non il en faut pas que ces champs soient en auto-increment puisque c'est toi qui les rempli avec les id des utilisateur déjà créé, ainsi que des id des catégories déjà créée.
Images que tu mettes ça en auto-incrément, que va-t-il se passer ? Tu n'aura pas de correspondance entre les identifiant utilisateur de la table 'utilisateur_cat' et ceux de la table 'utilisateur'.
Le but est de créer un lien entre les tables 'utilisateur' et 'categorie', et ce lien est symbolisé par un enregistrement dans une troisième table, qui regroupe l'identifiant de l'utilisateur et de la catégorie qui sont lié.
Conclusion, lorsque tu ajoute un nouvel utilisateur, l'identifiant étant défini comme auto-increment, il sera généré automatiquement par SQL (et donc géré en interne). De même pour les catégories (mise à part que les catégories c'est toi qui va les créer à la main (ou par script) à l'avance, puisqu'il ne sera pas possible sur ton site de créer des catégories j'imagine).
Par contre, lorsqu'un utilisateur va sélectionner une catégorie, au niveau du code PHP dans ta page tu connaitra l'identifiant de l'utilisateur et de la catégorie, et tu pourra via une requête SQL insérer un nouvel enregistrement dans la table 'utilisateur_cat' pour symboliser ce choix de l'utilisateur.
Par la suite tu sera aussi en mesure, lorsque l'utilisateur se sera identifier sur le site, de retrouver les catégories qu'il a choisi (SELECT * FROM utilisateur_cat WHERE id_utilisateur = $id_utilisateur).
Réponse au 2) :
Non il en faut pas que ces champs soient en auto-increment puisque c'est toi qui les rempli avec les id des utilisateur déjà créé, ainsi que des id des catégories déjà créée.
Images que tu mettes ça en auto-incrément, que va-t-il se passer ? Tu n'aura pas de correspondance entre les identifiant utilisateur de la table 'utilisateur_cat' et ceux de la table 'utilisateur'.
Le but est de créer un lien entre les tables 'utilisateur' et 'categorie', et ce lien est symbolisé par un enregistrement dans une troisième table, qui regroupe l'identifiant de l'utilisateur et de la catégorie qui sont lié.
Conclusion, lorsque tu ajoute un nouvel utilisateur, l'identifiant étant défini comme auto-increment, il sera généré automatiquement par SQL (et donc géré en interne). De même pour les catégories (mise à part que les catégories c'est toi qui va les créer à la main (ou par script) à l'avance, puisqu'il ne sera pas possible sur ton site de créer des catégories j'imagine).
Par contre, lorsqu'un utilisateur va sélectionner une catégorie, au niveau du code PHP dans ta page tu connaitra l'identifiant de l'utilisateur et de la catégorie, et tu pourra via une requête SQL insérer un nouvel enregistrement dans la table 'utilisateur_cat' pour symboliser ce choix de l'utilisateur.
Par la suite tu sera aussi en mesure, lorsque l'utilisateur se sera identifier sur le site, de retrouver les catégories qu'il a choisi (SELECT * FROM utilisateur_cat WHERE id_utilisateur = $id_utilisateur).
Blopette
Messages postés
315
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
3 octobre 2012
273
>
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
17 avril 2008 à 15:41
17 avril 2008 à 15:41
Merci pour cette réponse complète ^^
phoenix08
Messages postés
3
Date d'inscription
jeudi 27 mars 2008
Statut
Membre
Dernière intervention
4 juillet 2008
17 avril 2008 à 12:45
17 avril 2008 à 12:45
J'aimerai savoir sil est possible de determiner par une commande sous console, le debit d'une interface
R4f
Messages postés
441
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
5 mai 2008
62
17 avril 2008 à 13:42
17 avril 2008 à 13:42
phoenix08, la question de cette discussion est très éloignée de la tienne, tu devrais sans doute lancer une nouvelle discussion (ça coûte pas plus cher ;-).
Bon, chez moi sous Linux, je fais :
Résultat de la commande :
Donc le débit de mon interface eth0 (première carte Ethernet) et de 100 Megabit par seconde (Mb/s) soit 12,5 Megaoctets par second (Mo/s).
Raph
Bon, chez moi sous Linux, je fais :
dmesg | grep -i eth[0-9] | grep link
Résultat de la commande :
[ 48.168000] eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 [ 1455.932000] eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 [ 6174.884000] eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 [15932.532000] eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 [20637.744000] eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
Donc le débit de mon interface eth0 (première carte Ethernet) et de 100 Megabit par seconde (Mb/s) soit 12,5 Megaoctets par second (Mo/s).
Raph