Aller au contenu

Structure d'un base de donnée


Sujets conseillés

Posté

Salut

après de nombreuse réflexion je vais surement me lancer dans les bases de données au moins pour voir.

Mais n'ayant pas de recul j'aimerais avoir vos avis avertis sur le sujet.

Au départ je vais pas me retrouver dans le cas de figuere "classique" du catalogue du style affiche le ballon, bleu, a moins de 10 euros lol

ca va etre encore plus simple lol

ca vas etre des pages dont les variables ne seront pas des données (prix, couleur;...) mais plutot des bloc de texte (d'un autre coté ca change rien au ploblème).

L'idée est donc d'avoir un page qui affiche différents bloc de texte.

Du style présentation de ma home page perso lol

avec accueil, présentation, contact...

Comment dois je m'y prendre au niveau de la structure de ma base de données

Je crée une seule table car toutes les pages sont sur le meme principe y a que le corps du texte qui change

dans le colonnes je met quelques variables (IDpage,titre, texte, images)

et chaque ligne represente une page

du style enregistrement 1 correspond a la page accueil

2eme ligne page présentation

3eme page contact

Ou au contraire faut fair une table par type de page

une table accueil, une table presentation, une table contact...

J'aimerais avoir vos avis sur l'organisation des tables car je pense que c'est plus simple quand on a un peut de recul.

merci a tous

Posté

Bonjour,

Tu peux faire ainsi :

Table 'texte' : ID / Titre / Texte / Date / ID_Categorie

Table 'Categorie' : ID / Nom

Dans la table texte : Tous tes textes (un par enregistrement) avec un ID_Categorie correspondant à ci-dessous

Dans la table catégorie : 1 - Accueil / 2 - Présentation

Et dans ta page php 'Accueil' par exemple :

Select a.* from texte a inner join categorie b on a.ID_categorie = b.ID where b.nom = 'accueil'

Ci-dessus, le 'a' et le 'b' sont des alias de tables. C'est à dire que je les renome le temps de la requete. Si je n'avais pas fait cela, voici la requête :

Select texte.* from texte inner join categorie on texte.ID_categorie = categorie.ID where categorie.nom = 'accueil'

Ce qui est un peu plus long.

Bon courage

Portekoi

Posté

Si tous mes textes sont dans la meme table

imaginons que mon site grossisse et qu'ils soit beaucoup visiter.

Je passe toujours d'une extreme a l'autre pour bien comprendre les impacts des choix

si j'ai 200 requette pour consulter 200 pages différentes la BD va t elle suivre

ou dans ce cas faut multiplier les tables

en gros que toutes les requets porte sur la meme et seule table a t il un impact sur les performences ou autres ?

Ou ce qui compte c'est le nombre de requetes et non le fait qu'elles porte sur une seule table ou sur des tables différentes ?

Posté

Ce qui compte c'est ca strucuture. Lorsque tu requetes, il faut utiliser les index / Clés lors de tes jointures.

De plus avoir une table va provoqué une redondance certaine. il vaut donc mieux séparé les données qui risque d'être répétitives sans pour autant tout virer. :)

Ah oui, et pour l'histoire des 200 requêtes, cela dépend de la structure comme dis ci-dessus mais aussi de la configuration serveur.

Posté

Voila j'ai définit ce que je souhaite faire

Une page accueil.php

dans la quelle je vais inclure

$intro (1 bloc au hazard parmis parmis un certain nombre de bloc texte)

$corps (1 bloc au hazard parmis parmis un certain nombre de bloc texte)

$fin (1 bloc au hazard parmis parmis un certain nombre de bloc texte)

Comme ca j'ai une page accueil aléatoire qui va chercher 3 varaibles au hazard dans ma base de donnée

je commence a comprendre l'intéret des BD

idem pour presentation.php idem pour contact.... idem pour toutes les autres pages...

Et en plus je peux en retour enregistré des info du style bloc intro_accueil affché une fois....

Dans ce cas plus complexe comment structurer la BD

Posté

Pour une base de données un peu plus complexe, tu as plusieurs méthodes, dont merise :

http://www.commentcamarche.net/merise/concintro.php3

Ca peut paraitre complexe, au début, mais ca va tout seul après. :)

Lorsque ca devient 'vraiment très compliqué', ben... tu décomposes en sous ensembles moins complexes.

Sinon ::

Tu as quelques articles/exemples, ici :

http://www.webmaster-hub.com/publication/rubrique17.html

Si tu as une question, n'hésites pas ;)

Posté (modifié)

Merci

Concernant Merise pour le moment je suis pas assez familiarisé avec le jargon informatique pour suivre toutes les subtilitées.

Petite question, aller un de plus :whistling:

Si je souhaite afficher un bloc texte (intro, corps et bas de page) au hazard

1°) il faut mieux

creer un table "intro" et prendre au hazard une ligne de la table

creer un table "corps" et prendre au hazard une ligne de la table

creer un table "bas d epage" et prendre au hazard une ligne de la table

2°) ou il faut mieux

creer un table "texte" avec une colonne "intro", une colonne "corps", une colonne "bas de page"

et prendre au hazard une ligne pour "intro"

et prendre au hazard une ligne pour "corps"

et prendre au hazard une ligne pour "bas de page"

(seul prob il faut surement le meme nombre "d'intro" que de "corps" et que de "bas de page".

3°) ou il faut mieux

creer un table "texte" avec une colonne "intro", une colonne "corps", une colonne "bas de page"

et ne pas enregistrer des varaibles dans "intro", "corps'" et "bas de page"

mais plutot des tableaux ou

$intro contient X "intro"

$corps contient Y "corps"

$basdepage contient Z "bas de page"

et on prend au hazard une valeur dans chaque tableau.

Wouw j'ai le cerveau qui fume

Donc pour commencer est ce que les 3 méthodes sont possibles, car n'ayant aucune pratiques, ca se trouve je fais fausse route.

Si c'est OK quels sont les avantages et les inconvégniants des différentes méthodes, car je commence a comprendre qu'il y a 50 façons de faire la même choses et que chaque méthode a ses pour et ses contres. Cela est souvant liée à d'autres paramètres (grosseur du site...) mais pour faire un choix faut connaitre des + et les -

Et si vous avez bien compris ce que je voulais faire, il existe surement encore une autre méthode plus efficace...

Modifié par stever34
Posté

Stevers34 : je ne dis pas que mon schéma est le meilleur, loin de là mais essai déjà avec ca pour te faire la main.

Installe toi EasyPhp, et fais des tests. :)

Posté

mais bien sur je veux pas que l'intro1 soit affiché avec corps1 et avec basdepage1 les trois partie de la pages doivent être indépendantes

Posté

Avec le schéma que je t'ai donné, ils sont indépendants.

Il te suffit de faire une requête du type

SELECT Texte FROM Table WHERE Type = 'intro' ORDER BY RAND()

, pour avoir une intro aléatoire.

Posté

si j'ai 1000 intro

et 2 corps de texte

j'ai donc 1000 ligne

Alors quand je selection un corps de texte il prend au hazard parmis les 1000 lignes d'ou d eforte chances d'être vide ou il est super balaise et il ne prend au hazard que parmis les 2 existantes

Posté

Quel est ton but? Afficher un texte au hasard?

Non? Et bien dans ce cas, à toi de nommer de facon unique tes intros et faire ainsi :

SELECT Texte FROM Table WHERE Type = 'intro' and Id = 'Mon_intro1'

ou

SELECT Texte FROM Table WHERE Type = 'intro' and Id = 'Mon_intro2'

Ou encore mieux, tu mets une relation entre tes intros et tes corps de texte....

Cherche un peu par toi même! Tu verras, tu apprendras bien plus vite en commettant des erreurs...

Posté

Non, si tu as 1000 intros et 2 corps de texte, avec le format que je t'ai proposé, tu as ... 1002 lignes.

Et comme les textes sont les seuls à être associés au type 'corps', il suffit de limiter ta recherche à ce type.

Posté

derniere question apres je me lance dans un peu de programmation et decouvrir par des cas concret.

Mais avant j'aimaerais avoir votre avis et critiques constructives sur les différentes méthode 1°), 2°), 3°) + méthode Portekoi + méthode captain_torche

Fort de ces explications et soulagé de toutes ces question je me lancerai en toute connaissance de cause ???

wroum wroum

Posté

La méthode (dans les derniers messages) est identique.

La seule différence est que ma requête va chercher un enregistrement au hasard, alors que celle de Portekoi va en chercher un précis (quand on connait son Id).

Posté

je voulais aussi parler de mes pseudo méthodes.

Savoir en quoi et pourquoi elles sont pas bonnes pour bien comprendre mes fausses pistes.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...