Nombre de champs, optimisation [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 16-11-2005 à 17:16:27
Il vaut mieux une table des auteurs et une table faisant le lien bd<->auteur.
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...
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
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
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
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
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?
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... |
Beh oui, y'a rien de mal à ça, bien au contraire.
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.
Marsh Posté le 17-11-2005 à 19:19:15
gnarky a écrit : Reprenons calmement (calmez vous, non mais alors). |
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).
Marsh Posté le 17-11-2005 à 20:00:32
ReplyMarsh Posté le 17-11-2005 à 20:01:08
gnarky a écrit : Je vois bien l'idée. |
plusieurs lignes dans la table qui fait le lien...
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...
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
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?