Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1913 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Nombre de champs, optimisation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Nombre de champs, optimisation

n°1246930
gnarky
Sac à puces
Posté le 16-11-2005 à 16:50:58  profilanswer
 

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?

mood
Publicité
Posté le 16-11-2005 à 16:50:58  profilanswer
 

n°1246964
skeye
Posté le 16-11-2005 à 17:16:27  profilanswer
 

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 -
n°1246966
skeye
Posté le 16-11-2005 à 17:17:43  profilanswer
 

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 -
n°1247291
leflos5
On est ou on est pas :)
Posté le 17-11-2005 à 02:41:02  profilanswer
 

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 :)

n°1247361
orafrance
Posté le 17-11-2005 à 09:41:37  profilanswer
 

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

n°1247860
gnarky
Sac à puces
Posté le 17-11-2005 à 17:56:49  profilanswer
 

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 :)

n°1247863
gnarky
Sac à puces
Posté le 17-11-2005 à 17:59:41  profilanswer
 

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?

n°1247881
sircam
I Like Trains
Posté le 17-11-2005 à 18:16:05  profilanswer
 

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}
n°1247907
Beegee
Posté le 17-11-2005 à 19:19:15  profilanswer
 

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).

n°1247921
gnarky
Sac à puces
Posté le 17-11-2005 à 20:00:32  profilanswer
 

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

mood
Publicité
Posté le 17-11-2005 à 20:00:32  profilanswer
 

n°1247922
skeye
Posté le 17-11-2005 à 20:01:08  profilanswer
 

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 -
n°1247952
gnarky
Sac à puces
Posté le 17-11-2005 à 20:57:30  profilanswer
 

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...
;)

n°1248053
leflos5
On est ou on est pas :)
Posté le 18-11-2005 à 01:23:35  profilanswer
 

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 :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Nombre de champs, optimisation

 

Sujets relatifs
Site web perso et modification de freeware : SQL ok ? (PHP+SQL)[SQL] Disctinct sur plusieurs champs
création de base SQL Serveur en visual basic.net[Oracle/SQL] recuperer l'heure GMT
[SQL Server] ntext -> <texte long>Optimisation du temps d'execution d'une requete sous oracle
Le parametre numérique pour les champs de type numeric sert à quoi ?Optimisation de requete PL/SQL
Plus de sujets relatifs à : [SQL] Nombre de champs, optimisation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR