|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Mise à jour du 14/07/2011
Bonsoir, Voici la 3e partie de mon article sur la normalisation des bases de données, partie qui traite des quatrième, cinquième et sixième formes normales. Comme il n’y a pas de normalisation en 7NF par projection/jointure (sauf chez les farfelus), l’article est achevé, aux quelques modifications près d’usage que je peux toujours être amené à effectuer suite à vos observations. Bonne lecture ! Mise à jour du 12/10/10 Bonjour, Voici la 2e partie de mon article sur la normalisation des bases de données, partie qui a trait à la 2NF, la 3NF et la BCNF. Concernant la 4NF, la 5NF et la 6NF, c’est pratiquement au point et j’espère que tout sera bouclé d’ici la fin de l’année. J’ai aussi complété la 1re partie et adopté parfois un ton un peu polémique, par exemple en ce qui concerne l’optimisation : il peut donc y avoir des réactions, aussi ai-je mon casque lourd à portée de main... Bonne lecture ! fsmrel 23/05/2009 Citation:
|
|
|
|
40
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Philippe VialatteArchitecte technique Inscription : juillet 2004 Messages : 3 051 ![]() |
Bel article
(il va falloir que je me l'imprimes et que je me le lise a tête reposée...)Tiens, ça fait plaisir, cet article va me permettre de taper encore plus fort sur les doigts de mes petits camarades Ca me rappelle mes cours de sgbd avec Miranda il y'a quelques années (vive la fac a Sophia, le soleil, les palmiers, et les bases de données )Vivement la fin de relecture des 4nf et 5nf |
|
10
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Bonjour,
Merci Philippe pour ce premier commentaire et pour votre compliment. Au sujet de Serge Miranda : Le 29 septembre 1987, au Palais des congrès à Paris, Ted Codd, Chris Date animent un séminaire dont je vous laisse deviner le thème. La foule des grands jours est présente (a priori vous étiez un peu trop jeune pour vous joindre à la noble compagnie...) Serge Miranda était assis bien sagement au fond de la salle (immense est bondée). Codd s’adresse à nous à peu près en ces termes : « Hommage à Serge Miranda, dont le SGBD Campus est le seul que nous avons retenu comme étant totalement relationnel ».
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
10
|
|
|
#4 |
|
Membre éprouvé
![]() Inscription : mai 2004 Messages : 377 ![]() |
Excellent papier, un des meilleurs (à mon sens) sur le sujet.
Ca ne se lit pas aussi facilement qu'un polar de la série noire, mais l'effort vaut largement le coup. Une question bête : pourquoi ne pas aller jusqu'à la 6NF ? Est-ce parce que son explication est franchement mathématique ? Yvan
__________________
Une solution n'est valable que dans un contexte donné |
|
|
10
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Merci à vous Yvan,
La 6NF ? J’ai hésité. En tous cas, les mathématiques ne sont pas partie prenante dans cette affaire. Quoi qu'il en soit, our le moment, je préfère m’abstenir. En effet : 1) Chris Date traite de la 5NF en 5 pages et demies (An Introduction to Database Systems, 8th edition, pages 386-391) or le sujet n’a pas la réputation d’être simple. En ce qui concerne la 6NF, si l’on tient compte des étapes préparatoires, Date a besoin de 47 pages (c'est-à-dire tout le chapitre 23 de l’ouvrage cité) pour faire le tour complet de la question, mais sans l'approfondir... 2) La 6NF présente essentiellement de l’intérêt dans le contexte des bases de données dans lesquelles le temps joue un rôle majeur (date de début, date de fin, donnée par donnée pour prendre un très grand raccourci). Mais déjà, nombre de problèmes sont résolus si au niveau du MCD on isole les données « datées » pour lesquelles la date de fin est connue (ce que Date appelle les données intervallaires de type « durant » (during) par opposition aux données pour lesquelles la date de fin n’est pas connue, dites de type « depuis » (since). Ainsi, dans votre entreprise vous avez pu faire partie de tel et tel services de telle date à telle date, mais vous êtes actuellement affecté à tel service depuis telle date, sans limitation dans le temps. Voyez par exemple la réponse que je fais à Fayred (Historiser deux entités et leurs relations) : la date dernière date d’embauche n’est pas mêlée avec l’historique, ce qui sémantiquement parlant est sain. Au minimum, j’évacue le problème des dates marquées à NULL ou valorisées de façon vaseuse, dans le genre 31/12/9999 et dont il faut tenir compte dans les requêtes : dans les banques, assurances, organismes de retraite, etc., les développeurs SQL sont régulièrement confrontés à de tels impedimenta. 3) Traiter les données temporelles (et plus généralement intervallaires) conduit à étendre l’algèbre relationnelle, de façon significative (nouveaux opérateurs, entre autres PACK et UNPACK), généraliser tous les opérateurs classiques, Projection, Jointure, Union, Intersection, Différence, etc. Ainsi, la jointure généralisée U_JOIN de deux relations r1 et r2 est un raccourci de l’expression hermétique (si l’on n’a pas lu les 30 premières pages du chapitre 23 mentionné) : PACK (( UNPACK r1 ON (ACL)) JOIN (UNPACK r2 ON (ACL))) ON (ACL)Et je n’ai guère envie d’entreprendre ici la rédaction d’un paquet de pages d’explication. J’espère que vous me comprenez et compatissez. Bref, le mieux est de se focaliser sur la modélisation des données dans leur dimension temporelle, en ayant à l'esprit les mots magiques during et since, auquel cas on peut parvenir à la 6NF (à condition de respecter la 5NF), comme M. Jourdain est parvenu à la prose sans le savoir. Et pour s’en assurer, lire et relire le fameux chapitre 23. Les plus courageux étudieront l’ouvrage commis par Date, Darwen et Lorentzos : Temporal Data and the Relational Model, lequel va encore plus en profondeur.
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
20
|
|
|
#6 |
|
Membre éprouvé
![]() Inscription : mai 2004 Messages : 377 ![]() |
Merci pour cette réponse.
Elle pourrait figurer -au moins partiellement- en intro ou en conclusion dans le tuto, pour ne pas laisser le lecteur avec un sentiment d'incomplétude. Au lieu d'un manque, cela devient "la 6NF ne sera pas traitée ici, et voici pourquoi". Mais ce n'est qu'une suggestion. Yvan
__________________
Une solution n'est valable que dans un contexte donné |
|
|
10
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
D'accord Yvan, à l’occasion de la publication du prochain chapitre, j’ajouterai un petit couplet sur la 6NF, reprenant en gros mon précédent message.
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Bonjour,
Voici la 2e partie de mon article sur la normalisation des bases de données, partie qui a trait à la 2NF, la 3NF et la BCNF. Concernant la 4NF, la 5NF et la 6NF, c’est pratiquement au point et j’espère que tout sera bouclé d’ici la fin de l’année. J’ai aussi complété la 1re partie et adopté parfois un ton un peu polémique, par exemple en ce qui concerne l’optimisation : il peut donc y avoir des réactions, aussi ai-je mon casque lourd à portée de main... Bonne lecture ! fsmrel
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
10
|
|
|
#9 | |||||||||
|
Invité de passage
![]() Inscription : février 2003 Messages : 3 ![]() |
Citation:
Pour la vue sur les factures non réglées, je veux bien que vous utilisiez not exists de préférence à une jointure externe, après tout, chacun ses petites manies, mais la vue permettant de présenter toutes les factures tourne au vice. Cette vue fait l’union de 2 recherche des factures avec une jointure (ou son équivalent en not exists). Il me semble plus naturel de faire une jointure externe. Cette vue permet même de répondre aux trois problématiques (si IdReglement est null c’est qu’aucun règlement n’est associé à cette facture et donc que la facture n’a pas été réglée), il n’est pas nécessaire de multiplier les vues. Et si cela vous semble un peut trop détourné, il est même possible de créer un champ dédié, par exemple : Code :
decode(y.IdReglement,null, 'Non Réglé', 'Réglé') as Regle Code :
Bravo pour l’article.
|
|||||||||
|
|
00
|
|
|
#10 | ||||||
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Bonsoir Gorwen, et merci pour vos commentaires.
Citation:
Citation:
Code SQL :
Dans la pratique, le choix final se fera en réalité sur la base d’un prototypage des performances (déjà un EXPLAIN (DB2, ORACLE, TERADATA), ou un SHOWPLAN (SQL Server), etc.) devrait déjà permettre de fournir de bonnes indications). (Notez que la performance des applications est un sujet auquel je suis sensible, voyez par exemple le paragraphe 3.8 et l’annexe F.3). Peu importe la teneur du code encapsulé dan l’instruction CREATE VIEW. En effet, on peut le modifier à volonté, cela reste transparent pour ceux qui se servent de la vue (utilisateurs, applications). Cela dit, la vue FACT_STATUT est à considérer ici dans son acception mathématique, c'est-à-dire l’UNION de deux ensembles, celui des factures réglées et celui des factures non réglées. J’aurais pu aussi coder directement la vue FACT_STATUT sans y faire mention des deux autres vues. Évidemment, l’utilisation d’EXCEPT et UNION fait que le code est un peu plus verbeux qu’avec un OUTER JOIN, mais comme je l’ai dit, quand on en arrive au côté pratique des choses, si d’après le prototypage des performances la jointure externe s’avère plus efficace, on pourra bien sûr la mettre en œuvre, et cela restera transparent pour les utilisateurs, le code étant encapsulé dans la vue. Une observation quand même : La vue que vous proposez est source de NULL pour les attributs IdReglement, DateReglement, MontantReglement : l'utilisation de la fonction COALESCE permettrait d’éviter cela et de garantir que le résultat soit un ensemble. Un point de détail : DECODE n’est pas une fonction reconnue par la norme, il serait préférable d’utiliser par exemple CASE ou COALESCE. De mon côté, je compléterai probablement ainsi cette partie de l’article : Les habitués de SQL préfèreront sans doute directement coder ainsi la vue FACT_STATUT :
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
||||||
|
|
20
|
|
|
#11 | |||
|
Invité de passage
![]() Inscription : février 2003 Messages : 3 ![]() |
Citation:
Citation:
Citation:
Merci encore pour votre réponse. J'attends la suite de votre article avec impatience. |
|||
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() ![]() arnaud technicien méthodes, dév web, dév & admin SGBD Inscription : juillet 2002 Messages : 642 ![]() |
bonjour bonjour,
juste un petit mot pour dire qu'il est fort dommage qu'on ne puisse pas imprimer ce document pour une lecture "offline".
__________________
Que la Force soit avec vous ! en perpétuelle autoformation : MySQL, PostgreSQL, Python. autoentrepreneur : assistance informatique et internet dans l'oise sur le bassin creillois. |
|
00
|
|
|
#13 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Philippe VialatteArchitecte technique Inscription : juillet 2004 Messages : 3 051 ![]() |
Citation:
(attention tout de même, il y'à 100 pages )
|
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() ![]() arnaud technicien méthodes, dév web, dév & admin SGBD Inscription : juillet 2002 Messages : 642 ![]() |
c'est ce que je fais toujours mais là y a un soucis car l'icone imprimer est grisée, voir pj
__________________
Que la Force soit avec vous ! en perpétuelle autoformation : MySQL, PostgreSQL, Python. autoentrepreneur : assistance informatique et internet dans l'oise sur le bassin creillois. |
|
00
|
|
|
#15 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Philippe VialatteArchitecte technique Inscription : juillet 2004 Messages : 3 051 ![]() |
ok, j'ai rien dit
|
|
00
|
|
|
#16 |
![]() ![]() |
Euh... je viens de cliquer sur Version PDF en bas du sommaire et j'ai pu télécharger le document PDF normalement.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
00
|
|
|
#17 |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Pouvez-vous essayer à nouveau ?
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
00
|
|
|
#18 |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Et ça n'est pas fini, il reste à venir la 4NF, la 5NF et la 6NF...
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
00
|
|
|
#19 |
|
Expert Confirmé Sénior
![]() ![]() ![]() François de Sainte MarieSpécialiste en bases de données Inscription : septembre 2006 Messages : 3 621 ![]() |
Attention !
L'article publié est une version obsolète, je viens donc d'effectuer la mise à jour qui s'impose . Quant au PDF c'est bien le dernier (j'aurai quand même deux ou trois bricoles à affectuer).
__________________
_ Faites simple, mais pas plus simple ! (A. Einstein) E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire ») => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale ») __________________ Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !) |
|
|
00
|
|
|
#20 |
|
Membre Expert
![]() ![]() |
Bonjour
J'imagine la discussion entre un prof et un étudiant "ceinture blanche" qui tombe sur cet article. Nous attendons impatiemment la "fin".
__________________
Le monde est trop bien programmé pour être l’œuvre du hasard… |
|
10
|
Copyright © 2000-2013 - www.developpez.com