Nb tables dans 1 base

Résolu
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 22 nov. 2005 à 09:32
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 22 nov. 2005 à 17:19
Bonjour,

Une question, raisonnablement, combien de tables par base ne faudrait il pas dépasser pour un fonctionnement correct ?, y a t'il dailleur une limite ?, sachant que je peux en mettre de façon illimité sur le serveur en ligne de mon prestataire
"ce que je me dit c'est que chaque table étant "independante....", il n'empeche que si une base est trop sollicité, ça peut être genant peut être ?

18 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 nov. 2005 à 09:49
Hello,

ce n'est pas vraiment une question de nombre de tables...quelle que soit la base de données utilisée, ce qui prime, c'est une bonne structure, bien réflêchie. Ceci amène généralement des requêtes simples et allant au plus court pour extraire les informations importantes. Il faut quand même veiller à effectuer les bonnes requêtes : ne pas remonter 20 champs différents sur 6 tables, quand on peut faire la même chose sur 3 tables avec 4 champs...

Bref : une bonne structure (vraiment, c'est le plus important), de bonnes requêtes...et tu peux t'amuser avec 200 tables et 3 000 000 d'enregistrements, ça tiendra (sauf peut-être sous Acces...).
3
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
22 nov. 2005 à 09:55
merci pour cette confirmation
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 nov. 2005 à 12:46
Salut,



pour ce qui est des petites tables je ne suis pas entièrement d'accord.
Il y a de nombreux cas où il vaut mieux séparer une grosse table en
deux plus petites, mais bon je pense qu'on se comprend de toute façon.



a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 nov. 2005 à 13:04
J'ai rien dit sur les petites tables...lol. J'ai parlé de requêtes uniquement.



Si tu as les tables A, B, C, D, E, F

et que tu peux récupérer tes infos en passant par A, C et F
uniquement...c'est préférable plutôt que de passer par les 6 tables.
Uniquement en terme de requête : les 6 tables existent de toutes façons
dans ta base.



Je précisais parce que je le vois souvent : des requêtes immenses, avec
de multiples jointures, avec trop de champs remontés, alors qu'on a
besoin de moins de champs et que l'on peut récupérer ces champs en
interrogeant uniquement sur 3 tables. C'est une question de
connaissance du modèle utilisé, évidemment, et de compréhension,
évidemment, du fonctionnement d'une bdd. Mais crois-moi, en
environnement pro, tu vois des trucs délirants très souvent...;-)



Et pour continuer : il est en effet souvent préférable d'avoir
plusieurs petites tables, plutôt qu'une grosse. Mais ça dépend en fait
essentiellement des données dont tu auras besoin...et en quelle
quantité, et à quelle fréquence. Tout est question d'équilibre.

Par exemple, typiquement, tu as une table "entreprises".

Tu auras le nom, l'id, le domaine d'application, l'adresse téléphone,
etc..et ce que tu sors régulièrement parce que tu as un annuaire fait
ainsi, c'est le nom, et le domaine.

Bah tu peux créer une table entreprise, et une table entreprise_details
avec le reste des infos (que l'on obtiendra après avoir sélectionné une
entreprise dans la liste de toutes les entreprises, liste triée par
domaine). Parce que tu récupèreras souvent les noms, peu souvent les
détails complets. Mais bon ça reste un exemple, pas vrai dans tous les
cas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
22 nov. 2005 à 14:05
Merci pour ces infos
en gros j'utilise pour 1 entreprise 9 tables (reservation en ligne de chambres d'hôtel) mais en gros je requete 1 table / 1 tables, au maximum j'interroge 2 tables sur un meme page avec 2 requetes distincts, mais pour un affichage simultané des réponses
en fait je recupère en premier 3/4 infos sur l'hôtels dans la base "hotels" par exemple, que je garde tout au long du processus au travers de "pagex.php?hotel=$hotel&xxxx " voila, ensuite c'est table / table.....donc ça me va
ma question etait en fait, compte tenu que je pourrait avoir un nombre important d'hôtels répertorié dans ma base "hotels", chaque hotel a ensuite ses propre bases au nombre de 9 (prix, dispo, resa, stats...)
donc si j'ai par exemple 100 hotels, j'aurrai une table "hotels" avec 100 enregistrements et ensuite 900 tables ! et donc si j'ai en même temps 25 personnes qui fonct des requetes simultanées........! je reduits donc bien la sollicitation en eyant séparé mes tables 100 x 9 ??
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 nov. 2005 à 14:21
Hello,



si les données pour chaque hotel sont importantes...tu devrais fonctionner autrement.

Si les données sont saisies par tes clients, je te conseille même une
base par hotel, et pas une base commune, avec chacun ses tables et
sous-tables...heu...en fait je n'ai pas bien pigé comment tu
fonctionnais je crois, lol ?



Bref généralement, sur de gros volumes, on préfère separer le sbases :
une par client, si c'est le client qui gère évidemment. Sinon, si les
volumes ne sont pas très importants, pourquoi pas une seule base. Mais
dans ce cas, pourquoi 9 tables par client ? Les requêtes se feront sur
la même base, il n'y a que peu de gain, à mon sens. Et ça ne facilite
pas la maintenance de la base...si tu modifies une table (ajout d'un
champ), tu vas devoir en modifier 100, 1 par hotel ?

Note que ça se script, ça...avec une bonne règle de nommage.

Mouais, chais pas, tu connais mieux ton environnement que moi :-)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 nov. 2005 à 14:27
> " Si tu as les tables A, B, C, D, E, F
et que tu peux récupérer tes
infos en passant par A, C et F uniquement...c'est préférable plutôt que
de passer par les 6 tables."

bah en faisant une seule requête oui c'est préférable que d'en faire 6 ou alors j'ai pas compris ;-)

> "que je garde tout au long du processus au travers de "pagex.php?hotel=$hotel&xxxx ""

pourquoi tu mets pas ça en session ?

> "donc si j'ai par exemple 100 hotels, j'aurrai une table "hotels" avec 100 enregistrements et ensuite 900 tables !"

900 tables ? mais pourquoi ? tu stockes quoi dedans ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
22 nov. 2005 à 14:41
"pourquoi tu mets pas ça en session ?"
en fait la session, je m'en sert pour le processus de réservation client, à chaque connexion au system je lui affect un id session...

"que je garde tout au long du processus au travers de "pagex.php?hotel=$hotel&xxxx ""
en fait le "$hotel" represente l'id de l'hôtel pour le reconnaitre dans les tables, car les 9 table se nommes ; nomdelatable_$id
ainsi pour chercher une dispo il va dans la table "dispo_$id" $id étant l'hôtel que le client a selectionné

Après faire une base pour chaque hotels, c'est sur, mais bon 100 bases...ou plus......

mon interrogation portaie plus sur les capacités de sollicitation d'une base en simultané!

Enfin vous imaginez bien qu'un modul de reservation en ligne c'est un peu "tarabiscotté" comme on dit chez moi, alors je vous passe les détails ! ! !

allez voir et dites moi si c'est fluide, evidamment la demo c'est quand le client à déja retenu un hotel dans un portail et l'$id est 1 dans l'exemple: www.webotel.com
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 nov. 2005 à 15:03
"allez voir et dites moi si c'est fluide"

faudrait surtout savoir quelle machine se cache derrière et voir ton code pour qu'on puisse dire que c'est lent ou rapide. Un site sur un pentium 100 qui se charge en 0.5 secondes c'est qu'il est largement mieux codé que le même site (codé différememnt) qui se charge en 0.4 secondes sur un pentium 4.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 nov. 2005 à 15:12
Pour moi, ça fait beaucoup de tables...quand même.



Si tu tiens à fonctionner avec une seule base, et que TU gères tes
données, donc...je conseillerais l'emploi des mêmes tables pour tous
les hotels.

Tu ne te rends pas compte du boulot pour la maintenance.

Ni du boulot pour ton serveur sql au bout d'un moment...!



Pour la requête, Antho...heu...je vais faire un truc débile :



SELECT

TB1.NOM,

TB1.PRENOM

FROM

TABLE1 TB1,

TABLE2 TB2,

TABLE3 TB3

WHERE

(TB1.ID = TB2.ID) AND

(TB1.SOCIETE_ID = TB3.SOCIETE_ID) AND

(TB3.SOCIETE_NOM LIKE 'Danone') AND

(TB2.PERSONNE_VILLE = 'Paris') AND

(TB1.PERSONNE_ID = 32)



au lieu de faire



SELECT TB1.NOM, TB1.PRENOM FROM TABLE1 TB WHERE TB1.PERSONNE_ID = 32



(c'est débile et la requête est fausse hein lol). Débile, mais ça existe...! Et souvent.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 nov. 2005 à 15:13
ah ok je vois

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
22 nov. 2005 à 15:15
c'est chez nuxit.com
"Tous nos serveurs sont à base de processeurs Intel (Bi-Xeon, Pentium 4, Celeron...) cadencés à très haute fréquence, bénéficiant de la technologie Hyperthreading d'Intel qui permet un rendement maximal des processeurs."

....
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 nov. 2005 à 15:17
oui enfin ça c'est du pur marketing ... y'a combien de clients par serveur ? quels sont les temps moyens de génération de tes pages ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
22 nov. 2005 à 15:32
je n'ai pas plus d'infos sur le serveur a prioris, et pas cherché non plus !

je comprends pas bien où tu veux en venir avec les requetes malalam, enfin je suis pas un super pro et il doit y avoir encore des nuances qui m'echappes !

avoir les mêmes tables pour tous, pas possible, surtout pour les dispos, enfin compte tenue de comment j'ai monté mon modul......
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 nov. 2005 à 15:58
"avoir les mêmes tables pour tous, pas possible"

si c'est possible suffit de t'y prendre autrement ;-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 nov. 2005 à 16:03
si c'est possible suffit de t'y prendre autrement ;-)



Je ne peux que confirmer ;-)

Les dispos ? Tu utilises une bdd relationnelle...les relations, ça sert
à ça. Tu auras telle dispo pour tel id...mais pour tel autre id, les
dispos seront différentes.
0
laubro Messages postés 186 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 9 juillet 2013
22 nov. 2005 à 16:18
je connais pas les bdd relationnelle, faudrait que je trouve un tuto !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
22 nov. 2005 à 17:19
Lol, c'est ce que tu utilises, une base de données relationnelle. Mysql
en est une. La plupart des bdd utilisées à l'heure actuelle en sont.
0
Rejoignez-nous