|
Publicité ' | ||||||||||||||||||||||||
|
|
#41 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Sauf que de manière générale les "tables" systèmes sont rarement des tables, mais plutôt des vues, et généralement des vues qui ne sont pas toujours bâties sur des tables (mais sur des données hétérogènes).
En tout cas en matière de vues, je préconise la remise à plat. Donc cette vue me parait parfaite ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#42 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Spécialiste en bases de données Inscription : septembre 2006 Messages : 2 887 ![]() |
Bonsoir SQLpro,
Je suis navré, mais il y a quelque chose que je trouve paradoxal dans ce que vous dites. D’une part, vous estimez qu’une table comportant une liste d’attributs n’est pas en première forme normale (ce qui est faux si l’on se réfère à la théorie relationnelle). Peu importe, au-delà de la 1NF, vous avez raison de dire que la structure d’une table comportant une liste de colonnes est à revoir. En effet, cette liste est figée et en plus, je vous cite : nous connaissons les problèmes que cela pose en général d'un point de vue requête comme au sujet des performances.Mais d’autre part, vous considérez la table Sysindexes aux 16 colonnes à laquelle j’ai fait allusion (et dans la documentation il y a bien écrit "table") comme une vue et vous la jugez en conséquence comme parfaite : bizarre, car cette mutation ne change rien aux problèmes que vous avez soulevés. Pour sa part, le catalogue de DB2 for z/OS est constitué de tables de base (y-compris une Sysindexes), hébergées dans des tablespaces bien concrets, elles sont bardées d’index bien concrets eux aussi, et je ne vois pas en quoi considérer ces tables comme des vues les rendraient "parfaites", pour reprendre l’adjectif que vous utilisez. Que tel ou tel SGBD fournisse une Sysindexes sous forme de vue parce que sous le capot on ne sait pas ce qu’il y a, ça ne me dérange pas, mais il ne faut pas inférer le général à partir de cas particuliers. Quant à la phrase suivante : "En tout cas en matière de vues, je préconise la remise à plat", merci à vous de nous en fournir la clé de lecture, car en l’état elle n’a strictement aucun sens.
__________________
_ 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
|
|
|
#43 | ||||||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Citation:
Citation:
Lorsque je parle de remise à plat, cela signifie la mise en relation de l'ensemble des tables décrivant un même objet, par des relations naturelles. Exemples : Soit la table T_TARIF_TRF (TRF_DATE, TRF_PRIX) avec les données suivantes : Code :
Code :
La vue permet cela mais introduit une forme de redondance. La lisibilité est assuré et les requêtes facilitées. De la même manière lorsque l'on veut obtenir TELEPHONE_1, TELEPHONE_2, TELEPHONE_3, rien n'empêche le développeur de créer une vue reproduisant cette approche et conserver un modèle fortement normalisé. Au final on obtient le meilleur des deux mondes... A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||||||
|
00
|
|
|
#44 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Spécialiste en bases de données Inscription : septembre 2006 Messages : 2 887 ![]() |
Citation:
Cela dit, bien que le catalogue de DB2 for z/OS ne fournisse pas ces vues (et qu'il soit par ailleurs constitué de tables), il n’en demeure pas moins qu’un DBA doit savoir les créer rapidement et sans difficulté, tout du moins pour les plus fondamentales : types, tables, colonnes, vues, contraintes (clés primaires et étrangères, contraintes de colonnes...). En effet, un DBA DB2 est rompu à ce genre d’exercice, car une des premières choses qu’il entreprend lors de l’installation d'un nouvel environnement, est la création des vues sur le catalogue dont les utilisateurs ont besoin, en restreignant bien entendu ceux-ci à ne voir que ce qui leur appartient. Le DBA DB2 connaît pratiquement par cœur la plupart des tables du catalogue (une soixantaine). Pour en revenir à la portabilité de l’application, au nom du principe de l’indépendance physique, je suppose que la norme SQL n’est pas concernée par ce qui se passe sous le capot mais qui représente la partie la moins triviale du travail, à savoir le choix de l’organisation des espaces physiques, des index, des plans d’application et packages, la préparation de l’exploitation ses données statistiques du catalogue, etc. Au nom du principe d’interchangeabilité, du point de vue du l’utilisateur, une table ou une vue c’est bonnet blanc et blanc bonnet, tant pour Codd que pour Date (C.J. Date, The Relational Database Dictionary) : «The principle that there should be no arbitrary and unnecessary distinctions between base and virtual relvars : i.e., virtual relvars should "look and feel" just like base ones as far as users are concerned.»La normalisation s’applique donc aux vues. Et n’oublions pas que la théorie relationnelle n’impose pas mais encourage seulement à respecter la 2NF et ses suivantes. On est bien d’accord. La redondance est licite, mais au nom du principe de fermeture, ce que demande la théorie relationnelle est qu’une table ne soit pas un sac (qu’il s’agisse d’une table de base ou d’une vue), donc en l’occurrence qu’il n’y ait pas de tuples en double, ce qui se règle par la présence d’une clé candidate (disons primaire) pour une table (ou vue) définie par l’instruction VAR (en Tutorial D tout du moins), ou par inférence de la part du système. Exemple : Si T_TARIF_TRF n’est pas un sac mais une table, alors elle est dotée d’une clé candidate, laquelle est préservée dans la vue associée (du moins selon la théorie relationnelle). Même chose pour les téléphones, un système est à même d’inférer la clé de la vue. A noter que la mise en place d’une liste de colonnes pour les téléphones n’entraîne pas de viol de 1NF.
__________________
_ 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
|
|
|
#45 | |||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Citation:
De plus vous confirmez que pour la vue : Citation:
J'avoue cependant qu'une certains confusion règne sur le concept de vue.... Il y a, au nom de la théorie, le schéma externe qui correspond à un assemblage de vues et de table destinées aux utilisateurs finaux..... Ce que d'ailleurs vous confirmez : Citation:
Ceci étant totalement contradictoire, il est normal de penser que les vues ont été faites pour introduire sciemment une redondance calculée et donc échapper à la normalisation. D'ailleurs les SGBDR sont plus permissifs encore puisque certains acceptent de créer des colonnes calculées (persistante ou non) qui constituent en fait des ersatz de vue incorporées à des tables ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|||
|
00
|
|
|
#46 | |||||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Spécialiste en bases de données Inscription : septembre 2006 Messages : 2 887 ![]() |
Citation:
Tout d'abord, à moins d'être en total désaccord avec Ted Codd et Chris Date, auquel cas on en restera là — on sortirait en effet du cadre du Modèle relationnel de données —, on doit convenir qu'une vue est bien une table. Je cite Date à nouveau (Cf. "Date on Database - Writings 2000-2006", page 440) : Une vue est une table... Et n’importe quel motif avancé selon lequel les vues sont différentes des "tables", trahit une profonde méconnaissance du modèle relationnel. Malheureusement, cette méconnaissance est trop largement répandue (elle foisonne par exemple dans la norme SQL).Je cite aussi Ted Codd ("The Relational Model for Database Management - Version 2" page 18) : Une vue est une R-table virtuelle, définie en termes d'autres R-tables, et représentée seulement par l'expression qui la définit.Qui plus est, une vue représente un opérande pour chaque opérateur relationnel, au même titre que n'importe quelle table. Je poursuis à mon tour, en restant dans le cadre du Modèle relationnel : considérons les deux types non scalaires suivants : table de base et table dérivée (ou vue). Toujours d'un point de vue relationnel, on peut considérer ces deux types comme étant en fait des sous-types d’un type plus général appelé table (terme qu'il faudrait remplacer selon le contexte par ceux de variable relationnelle (relvar) et relation, mais peu importe ici). Supposons maintenant — en utilisant le langage Tutorial D — que l’on définisse deux tables, disons de base : VAR Fournisseur BASE RELATION {FourId, FourNom}Par définition, et en vertu de la propriété de fermeture, on sait que par jointure naturelle des deux tables on obtient une table dérivée T qui a pour schéma : T {NoCde, FourId, DateCde, FourNom}Cette table (dans laquelle {NoCde} est clé candidate) enfreint la 3NF parce que, le déterminant FourId de la DF {FourId} → {FourNom} n’est pas clé candidate. Considérons maintenant l’instruction : VAR FourCom VIEW Commande JOIN Fournisseur ;Nous définissons ainsi une table dérivée FourCom ayant pour en-tête : FourCom (NoCde, FourId, DateCde, FourNom)et pour clé {NoCde}, et dans laquelle traîne évidemment la DF {FourId} → {FourNom}, faisant que FourCom enfreint elle aussi la 3NF. Ça n’est pas pour autant qu’il faille se sentir coupable et s’interdire de créer des vues de ce type ! Je répète une fois de plus que la théorie relationnelle n’impose pas mais encourage seulement à ce qu'on respecte la 2NF et ses suivantes. En l’occurrence, il n’y a pas péril en la demeure à les enfreindre, puisque même si l’on effectue l’insert d’une ligne dans la table dérivée FourCom, un système conforme à la théorie relationnelle sait parfaitement mettre à jour les tables de base Fournisseur et Commande. Citation:
Citation:
Une propriété ne peut qualifier qu’un seul objet ou une seule relationÇa reste du Merise, méthode dont l'utilité n'est plus à démontrer, mais qui ne propose pas d’algèbre, ce qui change bien des choses. Considérez par exemple l’opérateur JOIN, utilisé pour la jointure naturelle : a JOIN ba et b étant des relations ayant n attributs en commun (même nom, même type). Si l’on suivait Merise à la lettre, n devrait être égal à 0 et la jointure naturelle dégénèrerait alors en produit cartésien (lequel peut du reste être perçu comme n’en étant qu’un cas particulier). De la même façon, il faudrait évacuer de la norme la version SQL de la jointure naturelle : Table1 NATURAL JOIN Table2Toujours dans le même sens, aucune clé étrangère ne pourrait plus porter le même nom que la clé de la table de référence, etc. Bref, si Merise a ses lois concernant la construction des MCD, nous n'avons pas à les imposer à la théorie relationnelle : pas de mélange SVP. Citation:
Citation:
En tout état de cause, rappeler que les vues sont faites pour simplifier la vie des utilisateurs en général et des développeurs en particulier, en encapsulant la complexité, comme vous l’avez judicieusement illustré avec la vue réalisée à partir de la table T_TARIF_TRF, rappeler que les vues sont utilisées pour cacher certaines données, qu’elles permettent de normaliser la présentation du catalogue relationnel (comme vous l'avez signalé à propos du schéma INFORMATION_SCHEMA), qu’elles servent pour assurer l’indépendance logique, j’en passe en des meilleures, voilà un bon argumentaire pour justifier l'utilisation des vues. Mais avancer comme argument qu’il s’agit au départ "d’échapper à la normalisation" (2NF et au-delà ajouterai-je), voilà qui relève d'une démarche surprenante et non conforme à l'esprit du Modèle relationnel de données. Il s'agit d'un sophisme, car ce modèle n’impose le respect que de la 1re forme normale et elle seule, selon laquelle : Vu du SGBD, les valeurs des domaines sur lesquels chaque relation est définie doivent être atomiques.Et à cela on ne peut échapper. A cette occasion, je redis encore que cette définition de la 1NF, due à Ted Codd, impliquée directement ou indirectement par les définitions des formes normales suivantes, n’a bien entendu strictement rien à voir avec, par exemple, la définition fausse et absconse à la sauce DB2 (Cf. DB2 Version 9.1 for z/OS, Administration Guide, "Entity normalization" (sic) que je traduis) : Une entité relationnelle satisfait à la contrainte de première forme normale si chaque instance d’entité contient une seule valeur, jamais d’attributs qui se répètent. Les attributs répétitifs, souvent appelés groupes répétitifs, sont des attributs distincts, mais il s’agit fondamentalement du même. Dans une entité conforme à la première forme normale, chaque attribut est indépendant et unique quant à sa signification et à son nom.Je note au passage que, à supposer qu'elle viole la 1NF de Codd, si une table (ce que le rédacteur nomme "entité relationnelle") respecte la 1NF fausse et absconse, elle peut indûment et en toute impunité subir allègrement l’épreuve de la 2NF et suivantes : "Une table est en 2NF si elle est en 1NF et si, etc."), mais ce genre de bug logique nous entraîne vers des terrae incognitae fort éloignées du Relationland. Au contraire, si une table respecte la 1NF de Codd et enfreint la 1NF fausse et absconse, on lui interdit de subir l'épreuve de la 2NF : au lieu de dériver, cette fois-ci on marche sur la tête. Comme je vous l'ai déjà dit, je vous accorde qu'il faut faire attention à ce qu’un ensemble de colonnes d’une table de base ne puisse constituer une liste, mais ceci relève du savoir-faire dans la conception des MCD et MLD et ne concerne en rien le Modèle relationnel de données.
__________________
_ 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
|
|
|
#47 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Vous partez d'un postulat faux au départ qui est qu'une table est une relation. Ceci est faux....
Certes nous somme d'accord pour dire qu'une vue n'est en fait qu'un type de table (et la norme SQL les considère ainsi à juste titre puisque les vues sont recensées dans la vue INFORMATION_SCHEMA.TABLES)... Néanmoins une table n'a rien à voir avec une relation (au sens algébrique du terme) et s'accrocher à tout prix à la notion de relation n'a pas de sens. Le fait que Codd admet le NULL pour les tables et l'interdit dans l'algèbre relationnel nous montre que la différence est en fait très importante. Or dans vos débats vous tentez d'imposer une vision trop proche de l'algèbre relationnel, qui n'est en fait qu'un support (et non la vérité) des tables d'un SGBDR. En fait, c'est toute la différence entre la théorie et la pratique, et c'est un vieux débat, initié par Codd lui même (exemple la 6e forme normal : toute table se représente par un ensemble de colonne formant la clef assortie d'au plus une unique colonne non clef), puis repris par Chris Date, Pascal Fabian, Hugh Darwen (pour le côté pro relationnel) ou Joe Celko, Peter Chen et bien d'autres (pour le côté SQL / SGBDR)... A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#48 | |||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Spécialiste en bases de données Inscription : septembre 2006 Messages : 2 887 ![]() |
Citation:
Tout au plus, une table peut-elle être perçue comme l’avatar d’une relation (ou d’une relvar), elle en est une image, elle en a le goût mais ça n’en est pas, etc. Évitons soigneusement tout amalgame. Citation:
Plaît-il ? Quand on veut travailler le sujet des bases de données relationnelles avec une grande rigueur, on ne peut que faire référence au Modèle Relationnel de Données, comme l’ont fait Codd, Date, Darwen et McGoveran, Fagin, Rissanen, Maier, Delobel et Adiba, Ullman, Valduriez et compagnie. Je suis navré, mais la relation est au coeur de ce modèle. Ni vous ni moi n’y pouvons rien, il en est ainsi depuis 1969 et les gens que j’ai cités sont des êtres sensés. Bien sûr, le Modèle relationnel a régulièrement évolué et continuera à le faire (heureusement, il n’est pas figé), mais en raison de ce qui différencie une relation d’une table, c’est "s’accrocher" à tout prix à l’avatar de la relation qui serait dénué de sens. Au fait, quel est l’objet de votre remarque ? Que reprochez-vous aux relations, c'est-à-dire au Modèle Relationnel de Données ? Qu’elles soient fidèles au principe de fermeture ? Qu’elles soient toujours identifiées ? Qu’elles ne puissent pas donner lieu à des sacs ? Que leur en-tête soit systématiquement un ensemble d’attributs et toujours formé de façon régulière ? Que le Modèle relationnel ne soit pas laxiste ? Que seul le Sorry Query Language et ses tables seraient sensés et dignes d’intérêt ? Quelque chose m’échappe. J’ai l’impression d’assister à une inversion des valeurs. Citation:
Citation:
Je ne veux pas non plus mélanger modèle (c'est-à-dire le Modèle Relationnel de Données) et implémentation (c'est-à-dire les SGBD dits relationnels). Et puis, si je ne faisais pas référence ici à la matrice relationnelle, qui donc le ferait ? Je ne cherche pas à imposer quoi que ce soit, mais à montrer aux plus jeunes l'intérêt, la nécessité qu'il y a à connaître un minimum de théorie autrement que d’un point de vue strictement scolaire et sec. Libre à eux ensuite de se désintéresser des aspects théoriques. Quant à prétendre que l’algèbre relationnelle n’est qu’un support, voulez-vous dire qu'elle ne serait qu'un faire-valoir, un impedimentum qu'il faudrait supporter bon gré mal gré ? Qu’elle peut être remplacée par autre chose ? Mais dans ce cas, il faudra supprimer la lettre R du terme SGBDR. Quant à votre énoncé "l’algèbre relationnelle n’est pas la vérité des tables", qu’entendez-vous par là ? L’algèbre relationnelle serait-elle coupable de faire mentir les tables ? J’avoue rester perplexe face à cette affirmation pour le moins bizarre. Citation:
Et voilà que maintenant vous attribuez à Codd une 6e forme normale. Décidemment... Quoi qu’il en soit, quelque chose ne va pas dans la définition que vous donnez. Je la reproduis donc (tout en conservant le terme "table", ça n’est pas un problème) : Toute table se représente par un ensemble de colonne formant la clef assortie d'au plus une unique colonne non clef1) Considérons en ce sens une table T1 dont l’en-tête est composé de trois attributs A, B et C et dont la clé est composée du couple {A, B} : T1 {A, B, C}Supposons que la couverture minimale des dépendances fonctionnelles de T1 soit représentée par l’ensemble de dépendances fonctionnelles suivant : DF1 : {A, B} → {C}Du fait de DF2, T1 viole la BCNF, donc la 6NF, ce qui invalide votre définition. 2) Considérons le cas d’une table T2 dont tous les attributs font partie de la clé : T2 {A, B, C}Cette fois-ci, toutes les dépendances fonctionnelles sont triviales, en vertu de quoi T2 respecte la BCNF. Supposons maintenant qu’il existe la dépendance multivaluée : DM1 : {A} →→ {B} | {C}Alors T2 viole la 4NF, ce qui invalide à nouveau votre définition. 3) Et si l’on suppose que DM1 n’existe pas et que T2 respecte la 4NF, mais qu’en revanche il existe la dépendance de jointure : DJ1 : * {{A, B}, {B, C}, {C, A}}Alors cette dépendance de jointure n’est pas triviale et T2 viole la 5NF. Ainsi, on voit bien qu'on ne peut pas faire l'économie de la théorie qui, en plus de permettre de faire avancer les choses, sert aussi de garde-fou. Faire du trapèze volant c'est chouette, mais sans filet ça craint. Bien qu’elle ne soit pas valide, votre définition est toutefois intéressante dans la mesure où elle est facile à comprendre, donc à retenir, tout comme l’énoncé proposé par Kent, synthétisant fort élégamment la 2NF et 3NF (pour une table respectant bien entendu la 1NF) : Un attribut non clé doit représenter un fait concernant la clé, toute la clé et rien que la clé.Mais il est évident que, si cette définition vaut elle aussi par son côté didactique, elle n’en demeure pas moins incomplète et il est facile à son tour de l’invalider. Pour faire fonctionner correctement votre définition, il faudrait donc préciser que la table respecte d’abord la 5NF. A l'instar de Date, vous pourriez aussi la reformuler ainsi, à la façon de la 5NF : Une table est en 6NF si et seulement si elle ne satisfait à aucune dépendance de jointure non triviale.Et pour ne pas effrayer les gens avec des gros mots du genre "5NF", "dépendance de jointure", vous pourriez écrire par exemple : Si une table comporte une clé simple et au plus un attribut non clé, alors cette table est en 6NF (par clé simple, j’entends clé mono-attribut).Ça n’est jamais qu’un prolongement d’une des définitions de la 5NF, fournie par Fagin et Date pour un cas particulier : Si une table est en 3NF et si chacune de ses clés candidates est simple, alors cette table est en 5NF.Évidemment, ces définitions sont très spécifiques car elles ne prennent pas en compte les tables dont une clé est composée de plus d'un attribut, mais c’est toujours ça de pris comme disait ma grand-mère. Puisque vous parlez de la 6NF et pour essayer d'en terminer, commentons la définition qu’en donne Chris Date dans son ouvrage "An Introduction to Database Systems" (et déjà proposée ci-dessus) : Une relvar est en 6e forme normale (6NF) si et seulement si elle ne satisfait à aucune dépendance de jointure non triviale — sachant qu’une dépendance de jointure est triviale si et seulement si au moins une de ses projections (éventuellement U_projections) met en jeu l’ensemble des attributs de la relvar.Pour être un peu plus précis, les dépendances de jointure dont il est question sont en fait des dépendances de jointure généralisées et ainsi définies : Soit R une relvar, soit A, B, ..., Z des sous-ensembles d’attributs de R, et ACL une liste d’attributs de R, dont les valeurs sont des intervalles. On dit alors que R satisfait la dépendance de jointure généralisée (JD) : USING (ACL) * {A, B, ..., Z}si et seulement si l’expression USING (ACL) ◀ R = R’ ▶est vraie pour toute valeur de R. (R’ est la U_jointure des U_projections de R sur A, B, ..., Z, et cette U_jointure et les U_projections en question mettent en jeu une spécification USING de la forme USING (ACL)). Etc. Évidemment, ça devient un peu difficile, mais tant qu’à traiter de la 6NF, autant le faire avec rigueur. Je ne chercherai pas à commenter outre mesure, car il faudrait d'abord expliquer à ceux qui ne la maîtrisent pas ce qu’est la 5NF, puis reproduire le chapitre 23 de l’ouvrage susmentionné, et cela représente indéniablement trop de conditions préalables pour aller plus avant. Je rappellerai quand même que l’expression USING (ACL) ◀ R = R’ ▶est un raccourci pour (UNPACK r1 ON (ACL)) = UNPACK r2 ON (ACL))Sachant que chaque attribut figurant dans ACL doit être un attribut de type intervalle. Dans tout cela, le but de la manœuvre n’est pas de produire systématiquement des tables ayant au plus un attribut non clé, ça serait particulièrement inefficace et coûteux, voire dangereux (comme dans le cas des bases de données dans lesquelles les relations ne seraient que binaires, voir à ce sujet le paragraphe 30.3 de l’ouvrage de 1990 de Codd). Pour passer au plan pratique, le but visé avec la 6NF est clairement la simplification des tables dans lesquelles, pour faire (très !) court, on a essentiellement des dates de début et de fin (en théorie représentées sous forme intervallaire). Autrement dit, il s’agit de simplifier la programmation de la gestion des historiques et apparentés, en isolant dans des tables normalisées en 6NF les données évoluant dans le temps, à leur rythme propre. Ceux qui conçoivent les MCD et les MLD dans les établissements financiers, dans la distribution, etc., diront que, comme pratiquement chaque donnée est datée, cela aurait pour effet de multiplier le nombre de tables, mais après mûre réflexion de leur part, ils y regarderont peut-être à deux fois. Mais il s’agit encore là d’un autre débat, chaque chose en son temps. C’est tout pour cette fois-ci...
__________________
_ 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
|
|
|
#49 |
|
Membre du Club
![]() Inscription : juillet 2005 Messages : 178 ![]() |
Je suis entrain de regarder sql 2008 mais je ne vois ou je ne comprends l'évolution du point
7) nouveau type "hiérarchie" (arbres). C'est quoi ? |
|
|
00
|
|
|
#50 |
|
Membre Expert
![]() ![]() |
|
|
00
|
|
|
#51 | |
|
Membre régulier
![]() Jacinthe Administrateur de base de données Inscription : juillet 2003 Messages : 238 ![]() |
Bonjour,
Je n'arrive pas à retrouver de l'information concernant le point 10. Savez vous ou je pourrais en trouver? Citation:
__________________
Rien n'est impossible à celui qui n'a pas à le faire DBA. Je travaille avec SQL-9, SQL-10 De retour d'un congé de maternité de 13 mois (mars11-avril12)
|
|
|
00
|
|
|
#52 | ||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Je me suis mal exprimé... Regardez du côté de CREATE TYPE
Exemple : Code :
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com