Bonjour,
d'une manière générale, j'ai toujours essayé de respecter les formes normales et le principe de l'atomicité des données lors de la conception d'un modèle relationnel. Je me suis souvent retrouvé avec des modèles très complexes et les requêtes qui en découlent (et qui d'ailleurs au final peuvent poser de légers problèmes de consommation des ressources).

Je me demandais s'il existait des moyens (propres ou non au SGBD) pour simplifier tout cela. Si je prends un cas d'étude simple pour lequel un 'document' peut être lié à plusieurs 'types', ex. : un 'document' peut être de type 'Roman' et 'Poésie'

En général, j'ai tendance à procéder ainsi, avec 2 tables + 1 table de jointure :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
document
d_id | d_titre
 
type
t_id | t_intitule
 
j_type
d_id | t_id
jeu de données qui donnerait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
document
d_id | d_titre
1 | Le Val de Rose
 
type
t_id | t_intitule
1 | Roman
2 | Poésie
 
j_type
d_id | t_id
1 | 1
1 | 2
Tout d'abord, pensez-vous qu'il s'agit d'une bonne méthode dans le cas où la table 'type' n'est liée à aucune autre table et qu'en plus un enregistrement ne contient qu'un champ de donnée (i.e. ici l'intitulé) ? Y a-t-il une meilleure méthode ou plus communément utilisée ?

Je suis en train de réfléchir à l'utilisation du type SET qui pourrait peut-être répondre à ce type de besoin.

Auriez-vous des avis ou conseils sur l'utilisation du type SET ou sur d'autres techniques qui pourraient exister et simplifier les modèles et les requêtes dans ce même cas d'étude ? Sinon connaissez-vous des désavantages au type SET ? (ressources, recherches partielles/totales, souplesse, problèmes d'index ...)

En vous remerciant d'avance.