Bonjour,
Donc, maintenant, la règle du jeu est définie.
Il apparaît, à l'étude de celle-ci, qu'il y a un choix à faire :- une table "fourre-tout" dans laquelle les séquences (num et ex) sont gérées par du code (c'est ce que tu as analysé, Brankorri, avec la présentation de ta table). Il s'agirait, en fait, d'un mega fichier Excel ;
- une base de données multi-entités (multi-tables, donc).
Si tu prends la première solution, le fil sera terminé avec la fourniture du code permettant de numéroter "numero" et "exemplaire" selon la règle du jeu.
La seconde solution fait apparaître plusieurs entités (plusieurs tables, donc) :
Table AUTEUR :
Id_auteur (clé primaire)
nom
etc...
Table LIVRE :
Id_livre (clé primaire)
titre
Type
Langue
Theme
Code
etc...
==> En effet, Q (Type/Langue/Theme/Code), se situe au niveau LIVRE.
Table AUTEUR_LIVRE :
Id_liaison (clé primaire)
Id_auteur
Id_livre
==> Id_auteur/Id_livre : index unique.
Table LIVRE_STOCKE :
Id_livre_stocke (clé primaire)
Id_livre
Date_arrivee (par exemple)
Avec, pour relations :
AUTEUR 1--->N AUTEUR_LIVRE, via Id_auteur
LIVRE 1--->N AUTEUR_LIVRE, via Id_livre
==> En effet, un livre peut avoir plusieurs auteurs, donc relation AUTEUR N<--->N LIVRE gérée, obligatoirement, par une table de laison.
LIVRE 1--->N LIVRE_STOCKE, via Id_livre
Le "numero" (num) n'a, peut-être, pas besoin d'être stocké car :
1 2 3
| SELECT Type,Langue,Theme,Code, count(*) FROM LIVRE
GROUP BY Type,Langue,Theme,Code
'==> te donne le nombre de LIVRE pour chaque Type/Langue/Theme/Code existant. |
L' "exemplaire" (ex) n'a, peut-être, pas besoin d'être stocké car :
1 2
| SELECT Id_livre, count(*) FROM LIVRE_STOCKE GROUP BY Id_livre
'==> te donne le nombre d"exemplaire pour chaque Id_livre existant. |
Partager