Bonsoir,
Envoyé par
pascalbuguet
Au niveau conceptuel (et nous y sommes) il est préférable de décomposer au maximum donc de créer une entité "dictionnaire" ou "lexique" .... pour éviter les redondances.
Non sequitur. Je ne vois pas la relation de cause à effet entre le fait de décomposer au maximum et créer une entité "dictionnaire". Expliquez-vous.
Par ailleurs, éviter les redondances est évidemment impératif, mais je ne vois toujours pas la relation avec ce qui précède.
Pardonnez-moi, mais on dirait du Molière (voyez Le médecin malgré lui).
Envoyé par
pascalbuguet
Au niveau logique et surtout physique (SQL) en fonction des jointures (très coûteuses) le modèle pourra être dénormalisé en 2NF.
Légende : une jointure n’est pas coûteuse a priori. Certaines jointures entre des tables de cent millions de lignes coûtent de l’ordre de la centaine de millisecondes. D’autres, entre des tables de dix mille lignes peuvent durer des heures. Tout dépend du rendement de l’effet I/O bound versus CPU bound, du filtrage des lignes, de l’organisation des index, du taux de désorganisation, du SGBD, etc. Mais mon langage de DBA de terrain vous déroutera peut-être.
Pour information, la table Presenter que je propose à cipic respecte la 5e forme normale et vous m’expliquerez ce que l’on peut lui reprocher.
Par ailleurs, on ne « dénormalise » pas un modèle, mais une table (si tant est que l'on prouve qu'il faille le faire). Et puis, pourquoi choisir de dénormaliser très précisément en 2NF plutôt qu'en une autre xNF ? Par exemple, de 5NF en 4NF ?
P.-S.
Merci de nous donner votre définition de la 2NF. En échange, je vous propose celle de la 5NF :
Une table T (en 1NF) est en 5NF (ou PJ/NF, Project/Join Normal Form) si et seulement si chaque dépendance de jointure non triviale à laquelle elle satisfait est une conséquence logique des clés candidates de T. (« Conséquence logique » signifiant en l’occurrence : pour chacune de ces dépendances de jointure *{R1, ..., Rm}, chaque Ri (1 ≤i ≤m) est une surclé de R).
Et à titre de complément :
Une table est en 1NF si chacun de ses tuples contient exactement une valeur pour chacun de ses attributs.
Partager