Bonsoir à nouveau,
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
elsuket
Hé bien celui qui a créé la base de données devrait savoir que dans une base de donnée relationnelle, il y des .... relations.
Hum... Tout dépend du sens que vous donnez au mot « relation ».
Je reprends la définition donnée par Ted Codd, père du Modèle Relationnel de Données (cf. l’article sur la normalisation) :
Le terme de relation est utilisé ici dans son acception mathématique. Étant donnés les ensembles S1, S2, ..., Sn (non nécessairement distincts), R est une relation sur ces n ensembles si c'est un ensemble de n-uplets, le 1er élément de chacun d'eux tirant sa valeur de S1, le 2e de S2, et ainsi de suite (de manière plus concise, R est un sous-ensemble du produit cartésien S1 X S2 X ... X Sn). On fera référence à Sj comme étant le jième domaine de R. Suite à ce qui vient d'être énoncé, on dit que R est de degré n. Les relations de degré 1 sont souvent dites unaires, celles de degré 2 binaires, de degré 3 ternaires, et celles de degré n n-aires.
Je cite encore Codd (Information Principle) :
Toute l’information contenue dans une base de données relationnelle est représentée d’une seule façon : par des valeurs prises par les attributs au sein des n-uplets au sein des relations.
Si donc pour vous le mot « relation » représente bien ce que Codd a défini, on est d’accord et dans ces conditions, la relation coddienne prend le nom de table en SQL (un peu abusivement, car la norme SQL permet qu’une table puisse légalement contenir des doublons — la clause PRIMARY KEY est en effet facultative pour une table de base et pour une table résultat, la clause DISTINCT l’est aussi — ce qui du fait de sa nature, est impossible dans le cas d’une relation quelle qu’elle soit).
En revanche, si pour vous le mot « relation » exprime un lien entre tables, alors il n’a pas d’équivalent formel dans le modèle de Codd : disons qu’on établit des liens explicites, par le canal des contraintes d’intégrité référentielle, sinon ces liens sont implicites du fait du caractère strictement associatif du Modèle Relationnel de Données (voyez l’opération de jointure).
![Citation](https://forum.developpez.be/images/misc/quote_icon.png)
Envoyé par
elsuket
Donc ne pas en mettre c'est faire du COBOL, avec des fichiers, comme il y a 40 ans.
Hum... A cette époque, avec COBOL on utilisait le SGBD hiérarchique IMS-DL/1 (IBM), qui permettait de garantir l’intégrité d’entité (clés de type unique) de façon déclarative, l’intégrité référentielle grâce aux RULES P (Physical Pairing), L (Logical Pairing), V (Virtual Pairing) affectées à ce que l’on appelle en DL/1 des relations logiques. Et l’on claquait des index comme on voulait. Il est convenu de dire que DL/1 est du type hiérarchique, mais il était loisible de bâtir une structure en réseau grâce aux relations logiques. Je parle à l’imparfait, car ça fait près de 25 ans que je n’ai plus pratiqué DL/1 et je ne sais pas comment il a évolué... Mais comme toujours et partout, on notera que certains ont le souci de l’intégrité des données en la sous-traitant au SGBD, alors que d’autres ne procèdent que de manière applicative, que ce soit avec ce brave vieux COBOL ou avec les langages en vogue d'aujourd'hui ou de demain.
Pour la petite histoire, le chiffre d’affaires d’IMS doit bien représenter son petit milliard de dollars (à vérifier auprès d'IBM).
Partager