[SQL] Nombre de champs, optimisation

Nombre de champs, optimisation [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 16-11-2005 à 16:50:58    

Salut à vous!
Ces jours ci je travaille sur la mise en place d'une base de donnée online pour mes collections (DVD en BD en loccurence).
J'ai gouté a certains scripts disponibles sur le net, mais ils sont soit trop compliqué pour moi (au niveau du code), soit mal adaptés.
Donc j'ai pris mon clavier et un petit éditeur, pour programmer mon propre site dynamique php/sql, avec interface tableau html/css.
 
Depuis ce matin je prépare donc les infos que je veux avoir, etc...
Par exemple, pour ma collection de BD, et pour pouvoir faire des recherches facilement, j'ai besoin d'énorméments de champs sur ma BDD.
Genre ID, Titre, Titre2, Collection, Tome, Auteur, Auteur2, Auteur3, Coloriage, Editeur, Couverture, Date, Date d'aqusisition, Résumé, Pret...
etc, etc, je dois en oublier qques uns.
Alors voila, est-ce raisonnable d'utiliser une seule table, avec disons une 30aine de champs et un bon millier d'entrées (voir plus si je commence a lister des BD que j'ai pas ^^) ?
 
Merci bien :)
 
Autre chose:
 
Si je ne fais qu'un seul champs "auteur", et qu'une BD a plusieurs auteurs, pourrais je par la suite obtenir une fléxibilité de tri et de recherche par auteur via php ? Ou alors vaut-il mieux faire un champ un auteur?

Reply

Marsh Posté le 16-11-2005 à 16:50:58   

Reply

Marsh Posté le 16-11-2005 à 17:16:27    

Il vaut mieux une table des auteurs et une table faisant le lien bd<->auteur.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 16-11-2005 à 17:17:43    

idem pour l'éditeur, et p-e d'autres choses de ce genre...ça devrait alléger ta table...;)
 
Sinon il n'y a pas de problème particulier à avoir une table de 30 champs, j'ai vu énormément plus... ;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 17-11-2005 à 02:41:02    

Tous tes champs que tu voudrais appeler blablaX c'est que probablement t'as besoin d'en faire une table à part comme le dit skeye ;)
 
Après au niveau perfs, si c'est pour toi ça ira largement même en version plombée :D
 
Mais de toutes façons mieux vaut prévoir tout au départ, donc divise bien en entités différenciables et clairement définies ;)  
 
Au final t'y gagnes à avoir 30 bd de X et un lien sur une table auteur que de répéter 30 fois X pour chaque bd ;) En place et en temps de saisie au moins, en temps séléction si tout est bien fait avec des index comme il faut :)
 
En gros différencie bien les protagonistes des propriétés et des actions ;) Donc te dire qu'un livre c'est quoi:
- un titre
- un auteur (ou plusieurs)
- un thème (ou plusieurs)
- un résumé (plusieurs????)
- une référence unique (ie le ISBN)
- un éditeur
- un prix
- un avis (lis ou pas, à chier ou à mourir, littérature de chiotte/rer ou intéressante...)
...  
 
Bref plus que te dire que tout est catalogué dès le départ et que t'auras pas besoin de rajouter pour le même livre ;)
 
Le problème est pas la taille (bien que ça soit limitant en performances mais pas pour 7 champs ;) ) mais ce que tu comptes en faire :)

Reply

Marsh Posté le 17-11-2005 à 09:41:37    

c'est pas compliqué, si une info se répéte trop souvent c'est probablement qu'une table est nécessaire :)

Reply

Marsh Posté le 17-11-2005 à 17:56:49    

merci pour vos réponses, même si je reste un peu dans le flou ^^
 
Pacque bon pour moi, une seule table c'est le plus simple au niveau de la programmation php.
Si par exemple je fais une recherche par auteur, ca va me chercher ttes les BDs dans la bdd ou la chaine de recherche est reconnue dans auteur1 auteur2 ou auteur3.
 
Sinon, comment m'y prendre?
 
Pacque quite à multiplier les tables...
Une table pour les BDs, une table pour les auteurs, une table pour les éditeurs, une table pour les séries...
J'suis un peu perdu :)

Reply

Marsh Posté le 17-11-2005 à 17:59:41    

Reprenons calmement (calmez vous, non mais alors).
Plutôt que de remplir une seule table avec des noms genre Auteur1: truc, Auteur2: machin, je crée une table avec auteurID, auteur. Et sur ma table des BDs j'indique simplement l'ID des auteurs, et pas leur nom? Mais je reste obligé d'avoir un champs Auteur1, un champs Auteur2 etc?

Reply

Marsh Posté le 17-11-2005 à 18:16:05    

Tu devrais peut-être consolider tes bases en DB et SQL avant de t'attaquer à la partie PHP.
 

Citation :

Pacque bon pour moi, une seule table c'est le plus simple au niveau de la programmation php.


Bof... Si tu fais un query avec jointure sur deux tables, du pt de vue PHP, c'est du pareil au même.

Citation :

Une table pour les BDs, une table pour les auteurs, une table pour les éditeurs, une table pour les séries...
J'suis un peu perdu


Beh oui, y'a rien de mal à ça, bien au contraire.  [:airforceone]
 
Vraiment, renforce un peu tes connaissances en design DB et en SQL avant de te lancer dans la partie PHP, au risque de finir comme trop de monde sur cette cat à faire une soupe immonde entre PHP et MySQL.    [:pingouino]  


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 17-11-2005 à 19:19:15    

gnarky a écrit :

Reprenons calmement (calmez vous, non mais alors).
Plutôt que de remplir une seule table avec des noms genre Auteur1: truc, Auteur2: machin, je crée une table avec auteurID, auteur. Et sur ma table des BDs j'indique simplement l'ID des auteurs, et pas leur nom? Mais je reste obligé d'avoir un champs Auteur1, un champs Auteur2 etc?


 
Tu ne stoqueras pas les ID des auteurs dans la table des BDs, mais tu feras plutôt une autre table : BD_a_auteur, qui contiendra des couples (ID de la BD / ID d'un auteur).

Reply

Marsh Posté le 17-11-2005 à 20:00:32    

Je vois bien l'idée.
Mais pour les BDs ayant plusieurs auteurs, j'fais comment?

Reply

Marsh Posté le 17-11-2005 à 20:00:32   

Reply

Marsh Posté le 17-11-2005 à 20:01:08    

gnarky a écrit :

Je vois bien l'idée.
Mais pour les BDs ayant plusieurs auteurs, j'fais comment?


plusieurs lignes dans la table qui fait le lien...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 17-11-2005 à 20:57:30    

ok...
bah dans ce cas...
ca va me faire du boulot ca j'vais me sentir obliger de faire des fiches d'auteurs etc, et du script en plus X(
J'suis deja pas encore très a l'aise avec une seule table a lister en php, mais si je dois appeler plusieurs tables j'vais galerer -_-;
 
Merci bien...
;)

Reply

Marsh Posté le 18-11-2005 à 01:23:35    

Un style union suffit, y'a rien de compliqué ;) Après au lieu d'avoir une table t'en a plus mais sur le résultat c'est identique au final :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed