Bibliothèque
Le
Yannick VOYEAUD

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--76bDiC5SSCcwRi379BxqLAED9LLvMWeEO
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Bonjour,
Si vous trouvez un meilleur titre mettez-le.
Voici mon soucis:
Gestion d'une bibliothque
Certains ouvrages comportent plusieurs auteurs
J'ai cre une table spcifique pour les auteurs
Dans la table principale que me conseillez-vous de faire et pourquoi?
1) Un seul champ auteur avec sparation par des virgules (ou autres (et=
pourquoi))
2) Autant de champs auteurs que ncessaire (en changeant le nom bien s=
r)
Dans le cas 1 comment procderiez-vous pour interroger la base sachant
que je dois pouvoir afficher selon la demande
a) un auteur avec TOUS les ouvrages o il est participant
b) un ouvrage avec TOUS les auteurs concerns
Vos rponses me seront utiles pour d'autres champs qui sont aussi dans
ce cas de figure mais que j'ai trait avec une valeur gnrique peu=
satisfaisante mon gut.
Merci de mettre des exemples comments car je m'essaye aux jointures et=
c'est plutt neuf pour moi.
Amitis
--
Yannick VOYEAUD
Nul n'a droit au superflu tant que chacun n'a pas son ncessaire
(Camille JOUFFRAY 1841-1924, maire de Vienne)
http://www.voyeaud.org
--76bDiC5SSCcwRi379BxqLAED9LLvMWeEO
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"
--BEGIN PGP SIGNATURE--
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Icedove - http://www.enigmail.net/
iQEcBAEBAgAGBQJUEE39AAoJEGnJBaLV5Tw9s4UIAILnnXrkmT9gEG0TKEZeNpuM
eNjzL5pqf7MPRpNsICQvEy5NUMc0zRhrCWu5aQF6NTEJHcwinMFj0ZU6PFWzwvnt
80oXUFq24TneX9s8DLe17wj6rW6S8gfV9N6/64K3+F6PMqyr14z1eo7pqjMlkG5A
b7bsYXFlQqRvfC4W+RsjFPP/AyYD2Mx90WGAZkYmh6MeXWkrhj8rCIWDyImcM1/2
7wfMXJraTpe6bAM0250Nmj5QrfLqbp4sxNiSxDBjlSzUz/nW5kXNgLO3/mrENH/F
glOksZqwtLQTANSUbqL2yRhT7EXeDOB9+FrRrxYwQUS8z3pWcHQxPEIEMQZ7L8M=
=h8YH
--END PGP SIGNATURE--
--76bDiC5SSCcwRi379BxqLAED9LLvMWeEO--
--76bDiC5SSCcwRi379BxqLAED9LLvMWeEO
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Bonjour,
Si vous trouvez un meilleur titre mettez-le.
Voici mon soucis:
Gestion d'une bibliothque
Certains ouvrages comportent plusieurs auteurs
J'ai cre une table spcifique pour les auteurs
Dans la table principale que me conseillez-vous de faire et pourquoi?
1) Un seul champ auteur avec sparation par des virgules (ou autres (et=
pourquoi))
2) Autant de champs auteurs que ncessaire (en changeant le nom bien s=
r)
Dans le cas 1 comment procderiez-vous pour interroger la base sachant
que je dois pouvoir afficher selon la demande
a) un auteur avec TOUS les ouvrages o il est participant
b) un ouvrage avec TOUS les auteurs concerns
Vos rponses me seront utiles pour d'autres champs qui sont aussi dans
ce cas de figure mais que j'ai trait avec une valeur gnrique peu=
satisfaisante mon gut.
Merci de mettre des exemples comments car je m'essaye aux jointures et=
c'est plutt neuf pour moi.
Amitis
--
Yannick VOYEAUD
Nul n'a droit au superflu tant que chacun n'a pas son ncessaire
(Camille JOUFFRAY 1841-1924, maire de Vienne)
http://www.voyeaud.org
--76bDiC5SSCcwRi379BxqLAED9LLvMWeEO
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"
--BEGIN PGP SIGNATURE--
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Icedove - http://www.enigmail.net/
iQEcBAEBAgAGBQJUEE39AAoJEGnJBaLV5Tw9s4UIAILnnXrkmT9gEG0TKEZeNpuM
eNjzL5pqf7MPRpNsICQvEy5NUMc0zRhrCWu5aQF6NTEJHcwinMFj0ZU6PFWzwvnt
80oXUFq24TneX9s8DLe17wj6rW6S8gfV9N6/64K3+F6PMqyr14z1eo7pqjMlkG5A
b7bsYXFlQqRvfC4W+RsjFPP/AyYD2Mx90WGAZkYmh6MeXWkrhj8rCIWDyImcM1/2
7wfMXJraTpe6bAM0250Nmj5QrfLqbp4sxNiSxDBjlSzUz/nW5kXNgLO3/mrENH/F
glOksZqwtLQTANSUbqL2yRhT7EXeDOB9+FrRrxYwQUS8z3pWcHQxPEIEMQZ7L8M=
=h8YH
--END PGP SIGNATURE--
--76bDiC5SSCcwRi379BxqLAED9LLvMWeEO--
Catalogue de livres ?
et pour le groupe sur les bases de données peut-être ?
2 questions :
D'abord, y a-t-il intérêt à rechercher 2 auteurs en même temps ?
Je dirais que non.
Ensuite, y a-t-il des auteurs homonymes ? Dans le catalogue d'une
bibliothèque nationale, on peut trouver des auteurs homonymes et il y
a parfois la date de naissance ou de décès pour les distinguer.
Je ferais 3 tables : auteurs, livres et auteurs_livres, chaque
auteur et livre ayant un numéro de référence. Les auteurs peuvent
avoir une année de naissance et de décès, mais aussi d'autres
informations comme le courriel, la région, etc. À partir d'une
recherche par auteur, on pourrait alors montrer les livres de
chacun.
L'inconvénient à une seule table, à mon avis, c'est que si on
recherche un auteur avec un nom partiel et un prénom partiel,
on pourrait avoir trop de faux résultats. Par exemple, je recherche
un Jean Martin, et je trouve une fiche avec Jean Dupont; Pierre
Martin.
Il y a des ouvrages collectifs. Un directeur de publication et
par exemple 10 ou 20 auteurs d'articles. Cela devient lourd à
gérer si on veut isoler ensuite les oeuvres d'un auteur.
Je regarderais quelques bibliothèques en ligne. J'aime bien le
catalogue Iris de la BAnq, http://iris.banq.qc.ca/iris.aspx puis
recherche avancée.
En saisissant mon nom, je trouve des homonymes nés en 1943 et 1958.
En cliquant sur un livre au hasard puis sur l'auteur, je trouve
les autres avec le même auteur, donc sans les homonymes.
Denis
Yannick VOYEAUD (Wed, 10 Sep 2014 15:11:24 +0200 - fr.comp.lang.php) :
Pour moi, il s'agit plus d'un problème de modélisation d'une structure
de bases de données que de PHP, qui aurait plus eu sa place dans le
groupe consacré aux SGBD, mais bon.
Voici comment je procéderais avec MySQL, sachant qu'il y a à peu près
autant de solutions que de développeurs, et d'autres moteurs de gestion
de bases de données :
Un champ comportant les informations délimitées par un séparateur,
pourquoi pas, ça permet d'avoir un nombre d'auteurs variable ; mais
c'est pénible ensuite en termes de traitement et d'interrogation.
Dans ce cas, tu t'imposes un nombre fini d'auteurs, disons 5, ce qui a
deux inconvénients :
- dans la plupart des cas, il n'y en a qu'un, donc tu vas trimballer
inutilement des variables vides ;
- si par malheur tu as 6 auteurs, ça coince.
Je ne procèderai pas parce que c'est le bronx :)
Je créerais 3 tables :
- une table des ouvrages ;
- une table des auteurs ;
- une table de liaison ouvrages/auteurs.
- Table des auteurs : auteurs
aut_id : identifiant unique (éventuellement l'auto-incrément)
aut_nom : le nom de l'auteur
aut_prenom : le prénom de l'auteur
etc.
- Table des ouvrages : ouvrages
ouv_id : indentifiant unique (éventuellement l'auto-incrément)
ova_id : identifiant unique de l'ouvrage dans la table de
liaison
ouv_titre : le titre de l'ouvrage
ouv_categorie : sa catégorie
ouv_resume : un bref descriptif
etc.
- Table de liaison : ouvrages_auteurs
ova_id : identifiant unique (éventuellement l'auto-incrément)
ova_ouv_id : (=ouv_id) identifiant de l'ouvrage
ova_aut_id : (=aut_id) identifiant de l'auteur
-> Interrogation de la table des auteurs
-> récupération de son identifiant unique
-> interrogation de la table de liaison
-> recherche de toutes les occurrences de l'identifiant unique de
l'auteur
-> Pour chaque occurrence, lecture de la table des ouvrages et
affichage de l'ouvrage.
-> Interrogation de la table des ouvrages
-> récupération de son identifiant unique
-> interrogation de la table de liaison
-> recherche de toutes les occurrences de l'identifiant unique de
l'ouvrage
-> Pour chaque occurrence, lecture de la table des auteurs et
affichage de l'auteur.
Tu as la logique, si elle te convient, il ne te reste plus qu'à coder :)