JeuWeb - Crée ton jeu par navigateur
BDD_jointure et besoin de "sous_jointure" - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : BDD_jointure et besoin de "sous_jointure" (/showthread.php?tid=2930)

Pages : 1 2


BDD_jointure et besoin de "sous_jointure" - biboum - 21-08-2008

Bon chacun son niveau...^^ Je vois des sujets dont j'en comprend même pas le sens^^. Vu que je débute, j'ai des problèmes simple...logique.

Mon problème se passe au niveau de la BDD.
J'avais déjà eut un soucis au même niveau dans un autre post de la partie débug. Je pense que c'était ce que voulais me dire les gens qui m'y répondaient...mais j'avais pas encore assez d'expérience et de comphréension pour comprendre et savoir faire ce qu'il me disait. Aujourd'hui j'ai besoin de refondre ma BDD.
Actuellement c'est composé ainsi :

id l pays l région1 l population1 l région2 l population2 l région3lpopulation3...


Bref c'est lourd d'autant qu'aujourd'hui j'ai un autre soucis qui se pose, j'aimerai intégré pour chaque région un score qui lui soit propre. Donc il va falloir que l'id_région1 soit joint à région1 qui corresponde avec population1... Mais donc cela sous-entend que pour chaque région corresponde une table. N'y a t'il pas plus simple ? Moins lourd parce que là le serveur àvec des tables à répétition il va quand même sacrément souffrir...Bref comment faire de bonne table et de bonne jointure ?


RE: BDD_jointure et besoin de "sous_jointure" - Sephi-Chan - 21-08-2008

En fait, il faut que tu organises tes tables selon une relation 1, n.

C'est à dire que tu as une table Pays et une table [font=Regions[/font].

Citation :Pays :
pays_id
nom
Citation :Regions :
region_id
nom
score
pays_id

Ainsi, il devient très simple de récupérer les informations :

Code :
SELECT    P.pays_id,
        P.nom as pays_nom,
        R.region_id,
        R.nom as region_nom,
        R.score
FROM    pays P
LEFT
JOIN    region R
ON        R.pays_id = P.pays_id;

Cela va te sortir un jeu de résultat de ce genre :
Citation :1 : France : 1 : Ile-de-France : 35
1 : France : 2 : Languedoc-Roussillon : 21
2 : Suisse : 3 : Valais


Sephi-Chan


RE: BDD_jointure et besoin de "sous_jointure" - biboum - 21-08-2008

Donc il faudrait aussi que je crée une nouvelle table avec la population ?

Citation :Pays :
pays_id
nom


Citation :Regions :
region_id
nom
score
pays_id

Citation :region_id
population

? Ca me parait tellement simple ...


RE: BDD_jointure et besoin de "sous_jointure" - Roworll - 21-08-2008

Citation :Donc il faudrait aussi que je crée une nouvelle table avec la population ?
Ca dépend.
Si la population est directement attachée à la région, tu peux l'intégrer directement comme une colonne dans ta table de région.

Par contre, si tu veux gérer plusieurs type de population par région, il te faudra une table supplémentaire.


RE: BDD_jointure et besoin de "sous_jointure" - biboum - 21-08-2008

Ha oui ce que j'avais pas compris taleur...c'est que l'id_pays fais la liaison avec la région, et l'id_région fais sa liaison avec d'autres élements...

En effet le fait d'integrer la population directement avec les régions fais moins de liaison inutile...mais dans le cas où il y a jusqu'à 50régions par pays, cela ne va pas justement empecher d'avoir une lecteur claire ? parce que ca ferait 50régions différentes, mais 180pays...donc on va dire une moyenne de 20régions par pays donc 3600régions, donc 3600population, 3600scores, ...diviser tout ca en table différente, facilitera t'il la lecture en base de donnée et l'exécution des requetes ? Le plus éfficace pour le serveur quoi...


RE: BDD_jointure et besoin de "sous_jointure" - Ter Rowan - 21-08-2008

tu auras probablement plus de chance de comprendre avec un tuto pour apprendre la modélisation de "base" que ce que je vais écrire mais bon.

globalement la démarche doit être la suivante

tu identifies les différents objets que tu vas manipuler

pays, région, population, etc...


une fois fait tu identifies les liens entre tes objets

lien entre pays et région
lien entre région et population


une fois que tu as la liste de tes liens tu te poses la question pour chaque lien de la "cardinalité" le 1, n de sephi.

Est ce qu'il y a plusieurs régions dans un pays ?
Est ce qu'il y a plusieurs pays pour une région ?

tu as trois cas :
1) [plusieurs régions dans un pays] ET [plusieurs pays dans une région]

alors tu as trois tables :
une table pays (avec id pays)
une table région (avec id région)
une table lien pays région (avec id pays ET id région)

2) [plusieurs régions dans un pays] et [un seul pays dans une région]

alors tu as deux tables :
une table pays (avec id pays)
une table région (avec id région et id pays)

3) [une seule région dans un pays] et [plusieurs pays dans une région]

alors tu as deux tables :
une table pays (avec id pays et id région)
une table région (avec id région)

concernant la population

il faut te poser diverses questions :
y a t il plusieurs populations dans une région (ex cheval, chien, homme) dans ce cas tu dois créer un nouvel objet type de population et recommencer la moulinette vu plus haut (ceci peut se discuter, tu peux aussi, si les types de population sont figés, considérer n colonnes de population par la suite de ce que je vais dire)

maintenant imaginons il n'y a qu'un type de population.

dans le cas 1) [plusieurs régions dans un pays] ET [plusieurs pays dans une région]

si tu as une valeur de population pour la région entière (pas de split par pays) alors tu mets dans la table Région
si tu as une valeur de population par couple [région pays] alors tu mets dans la table de lien Pays Région

dans le cas 2) [plusieurs régions dans un pays] et [un seul pays dans une région]

alors tu mets la donnée dans la table région

dans le cas 3) [une seule région dans un pays] et [plusieurs pays dans une région]

si tu as une valeur par pays tu mets la donnée dans la table pays sinon, tu mets la donnée dans la table région

en espérant avoir un peu aidé Smile

A noter, c'est la "base" pour manipuler des bases de données. Donc ne fait rien de poussé tant que ces notions ne deviennent pas "triviales" pour toi, tu passeras sinon ton temps à refaire et défaire

bon courage Smile


RE: BDD_jointure et besoin de "sous_jointure" - biboum - 21-08-2008

Oulalalalala Mais tu me fais quoi Rowan :p
Je pensais avoir eut une illumination et compris ce que les précédents me disaient et voilà que tu arrives ^^

Je ne suis pas sur que la façon comment tu visualises la chose me soit déjà accéssible. Je garde bien sur un lien pour ce que tu dis...je pense que le jour où j'aurais encore un peu cheminé je me souviendrai de ce post et de ta réponse auquel j'y trouverais le sens caché, ...Mais là...j'ai rien compris.Désolé Confused
M'enfin je vais continuer dans l'optique de Sephi-chan et de roworll, quitte à devoir refaire et défaire par la suite, mais au moins le cheminement fera son cours et j'en apprendrais toujours...
Merci beaucoup Rowan, je me sens un peu idiot de pas pigé ce que tu racontes en fait...


RE: BDD_jointure et besoin de "sous_jointure" - Ter Rowan - 21-08-2008

biboum a écrit :Merci beaucoup Rowan, je me sens un peu idiot de pas pigé ce que tu racontes en fait...
n'est idiot que celui qui reste sur ses positions sans s'ouvrir, pas celui qui cherche à comprendre Smile

y a deux possibilités pour ta non compréhension :

- soit je ne me suis pas expliqué suffisamment clairement (vocabulaire peut être, ou démarche), c'est bien possible

- soit tu as raté ce que sous entend l'ensemble de tous nos posts (sephi, rowolf)

essaies de modéliser cet exercice :

je veux créer un jeu simulant l'industrie automobile

il existe plusieurs sociétés (peugeot, bmw , etc...)
et chaque société à différents modèles de voiture
de plus chaque voiture a un prix de vente et un coût de production

décrit nous le modèle de tout cela Smile

à vos copies


RE: BDD_jointure et besoin de "sous_jointure" - biboum - 21-08-2008

je veux créer un jeu simulant l'industrie automobile

il existe plusieurs sociétés (peugeot, bmw , etc...)
et chaque société à différents modèles de voiture
de plus chaque voiture a un prix de vente et un coût de production

décrit nous le modèle de tout cela 2

à vos copies

Base de donnée => Industrie automobile (passionnant le nom du jeu :p)

Citation :Société :
id_société
nom des sociétés (peugeot, bmw, renault)

Citation :modèle de voiture :
id_société
modèle voiture
id_modèle

Citation :production :
id_modèle
cout de vente
cout de production

Dans mon idée formuler au dessus, il y a une table société et un champ "nom". Il y a une table "modèle de voiture" lié avec un id_société à la table "société", le nom des modèle de voiture et un autre champ qui correspond au modèle de voiture.
Et enfin une troisième table "production" qui est lié par "id_modèle" à la table "modèle voiture" où il y a les couts de production et de vente en fonction de chaque modèle. Après il s'agira de lier tout ca dans les instructions.
Si je suis le résonnement que j'ai compris j'en arrive à ca.


RE: BDD_jointure et besoin de "sous_jointure" - Ter Rowan - 21-08-2008

t y es presque

explique moi pourquoi cette table :

Citation :production :
id_modèle
cout de vente
cout de production

ou retrouves tu le id_modèle de manière unique ?