CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Creation d'une base de donnée

DébutPage précedente
1
Page suivantePage suivante
NicolasAuditore NicolasAuditore
MP
Niveau 11
21 juin 2016 à 18:53:49

Bonjour !

Je suis à la recherche d'aide pour commencer à faire des bases de données.
J'ai commencé à l'aide de WAMP. Pour débuter, j'ai commencé avec trois tables comme ceci

pokémon : 3 colonnes "num_pokedex_pk","non_pokemon_fr","nom_pokemon_jap"
Type: 2 colonnes "Type_pk","Type_pokémon"
Talent: 2 colonnes "talent_pk","talent_pokémon"

J'aimerais savoir comment mettre en relation les différents tables via une requête ( le but étant de l'intégrer dans un site ) et s'il existait des tutos pour sa. On m'a également parlé d'une table de jointure en remplaçant les pk par des fk mais je comprends pas trop comment faire :-(

Merci de votre aide et bonne soirée ! :-)

Ludovic Ludovic
MP
Niveau 28
21 juin 2016 à 19:28:41
CREATE TABLE IF NOT EXISTS UTILISATEURTYPE (
	UTILISATEURTYPE_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	UTILISATEURTYPE_TYPE VARCHAR(15) NOT NULL
);

CREATE TABLE IF NOT EXISTS UTILISATEUR  (
	UTILISATEUR_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	UTILISATEUR_NOM VARCHAR(50) NOT NULL,
	UTILISATEUR_MOT_DE_PASSE VARCHAR(40) NOT NULL,
	UTILISATEUR_UTILISATEURTYPE INT NOT NULL,
	FOREIGN KEY (UTILISATEUR_UTILISATEURTYPE) REFERENCES UTILISATEURTYPE(UTILISATEURTYPE_ID)
);

Euh, j'avais ça qui trainait en stock.

  • Une table UtilisateurType qui a une clé primaire UTILISATEURTYPE_ID
  • Une table Utilisateur qui a une clé primaire UTILISATEUR_ID et qui prend en clé secondaire UTILISATEUR_UTILISATEURTYPE la clé primaire de UtilisateurType.

Pour déclarer cette relation, on utilise FOREIGN KEY voilà.

Du coup, UTILISATEUR.UTILISATEUR_UTILISATEURTYPE pointe vers UTILISATEURTYPE.UTILISATEURTYPE_ID

Et si t'as trois types d'utilisateurs de définis (1 Administrateur, 2 Modérateur, 3 Forumeur par exemple)
Pour chaque utilisateur, tu pourras remplir dans le champs UTILISATEUR_UTILISATEURTYPE la valeur 1 (admin), 2 (modo) ou 3 (forumeur)

Ensuite tu peux écrire une relation du type

select 
   UTILISATEUR.UTILISATEUR_NOM
 , UTILISATEUR.UTILISATEUR_MOT_DE_PASSE
from
   UTILISATEUR inner join UTILISATEURTYPE
   on UTILISATEUR.UTILISATEUR_UTILISATEURTYPE = UTILISATEURTYPE.UTILISATEURTYPE_ID
where
   UTILISATEURTYPE.UTILISATEURTYPE_TYPE = 'Modérateur'
   and
   UTILISATEUR.UTILISATEUR_NOM like 'A%';

Je suis pas sûr que ma requête soit parfaitement juste, ça fait longtemps que j'ai pas fait ça. Et désolé pour les noms de variables à rallonge

En gros elle va te retourner le nom et le mot de passe des utilisateurs qui ont un statut Modérateur et qui ont un pseudo qui commence par A. J'espère que ça t'aide un peu

Message édité le 21 juin 2016 à 19:33:14 par Ludovic
NicolasAuditore NicolasAuditore
MP
Niveau 11
21 juin 2016 à 23:27:40

Ah d'accord :-)

Merci de ta réponse :-d

En prenant mon cas, je pourrais directement dans la table pokémon insérer une colonne "type_fk" et une colonne talent_fk" afin de faire directement la liaison dans cette table ? :question:

NicolasAuditore NicolasAuditore
MP
Niveau 11
26 juin 2016 à 14:06:22

:up:

Bonjour à tous !

J'ai suivit vos conseils et arrive maintenant à joindre deux tables l'une à l'autre :)

Seulement, je n'arrive toujours pas à trouver la requête adéquate pour une table de jonction en sachant que je dois avoir le type + le talent dans le même tableau. Je connais les requêtes pour avoir soit le type, soit le talent mais pas celle qui permettrait de les avoir tout les deux ...

J'ai essayé en faisant deux SELECT et en les liant via UNION ( en mettant id_type et id_talent dans la table pokemon ) mais sa fait une fois le colonne avec le type et sa refait la colonne avec le talent ...

SELECT pokemon.id_pokemon AS Numero_Pokedex, pokemon.pokemon_fr AS Nom_francais, pokemon.pokemon_jap AS Nom_japonais, type.type_pokemon AS Type

FROM pokemon
INNER JOIN type
ON pokemon.id_type = type.id_type
UNION
SELECT pokemon.id_pokemon AS Numero_Pokedex, pokemon.pokemon_fr AS Nom_francais, pokemon.pokemon_jap AS Nom_japonais, talent.talent_pokemon AS Talent
FROM pokemon
INNER JOIN talent
ON pokemon.id_talent = talent.id_talent

Quelqu'un aurait une idée ou un tuto sur les tables de jointure ?

Benekiki Benekiki
MP
Niveau 10
26 juin 2016 à 14:57:06

Il n'y a quelque chose qui ne va pas dans tes tables, il n'y a pas de lien possible
Par exemple sur ces trois tables ça aurait été possible car il y a l'id du pokedex en commun

Pokémon(id_pokedex_pk, nom_pokemon_fr, nom_pokemon_jap)
Type(id_pokedex_pk, Type_pk, Type_pokémon)
Talent: (id_pokedex_pk, talent_pk, talent_pokémon)

Ici tu peux faire des jointures etc car il y a une valeur commune, c'est impératif il me semble, sinon quelqu'un me corrigera

Par exemple

Select type_pk from Type,Pokémon WHERE Pokémon.id_pokedex_pk=Type.id_pokedex_pk)

Message édité le 26 juin 2016 à 14:57:27 par Benekiki
NicolasAuditore NicolasAuditore
MP
Niveau 11
26 juin 2016 à 17:58:22

C'est bon j'ai trouvé :noel:

Voici le bon code

SELECT pokemon.id_pokemon AS Numero_Pokedex, pokemon.pokemon_fr AS Nom_francais, pokemon.pokemon_jap AS Nom_japonais, type.type_pokemon AS Type, talent.talent_pokemon AS Talent

FROM pokemon
INNER JOIN type
ON pokemon.id_type = type.id_type
INNER JOIN talent
ON pokemon.id_talent = talent.id_talent

J'ai donc le Numéro du Pokédex, le nom français, le nom japonais, le type et le talent du pokémon sur un seul et même tableau ! :-)

Benekiki Benekiki
MP
Niveau 10
26 juin 2016 à 18:04:25

Je vois pas comment un pokémon peut avoir un type et un talent car tu n'as pas de champ pokémon ni dans type ni dans talent, alors je comprends pas comment ta requête peut marcher sauf si tu as modifié les tables

pokemon.id_type = type.id_type

Sur ta table un pokémon n'avait pas d'id type, j'imagine que tu l'as changée

NicolasAuditore NicolasAuditore
MP
Niveau 11
27 juin 2016 à 00:39:15

Affirmatif :ok:

Dans ma table pokemon j'ai maintenant un id_type et un id_talent afin de faire la liaison :-)

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment