Précédent   Forum du club des développeurs et IT Pro > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Actualité déjà publiée
 
Outils de la discussion
Publicité
'
Vieux 12/10/2009, 19h46   #1
Emmanuel Lecoester
Responsable WinDev
 
Avatar de Emmanuel Lecoester
 
Emmanuel Lecoester
Inscription : février 2003
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Emmanuel Lecoester
Âge : 37
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : février 2003
Messages : 1 467
Points : 3 107
Points : 3 107
Envoyer un message via MSN à Emmanuel Lecoester Envoyer un message via Skype™ à Emmanuel Lecoester
Par défaut Contraintes FOREIGN KEY SQL vs code client

Qui n'a jamais débattu avec un collègue sur l'utilité de l'utilisation ou non de clés étrangères dans le SGBD.

Ce nouvel article de sqlpro nous permet d'aborder ce sujet à partir de cas pratiques.

http://sqlpro.developpez.com/article/fk-sql-vs-appli/

Et vous cet article vous a-t-il convaincu ?
__________________
Emmanuel Lecoester
=> On recrute des rédacteurs WinDev
Emmanuel Lecoester est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/10/2009, 01h39   #2
fsmrel
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Homme François de Sainte Marie
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 3 620
Détails du profil
Informations personnelles :
Nom : Homme François de Sainte Marie
Localisation : Autre

Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 3 620
Points : 9 095
Points : 9 095
Ça me rajeunit de 20 ans...

Dès que DB2 nous permit enfin d’assurer l’intégrité référentielle, je l’ai mise en œuvre d’office (c’était en 1988, et à l’époque aucun SGBD n’avait encore suivi les recommandations de Codd et de Date à ce sujet). Par contre, nombre de ceux qui la réclamaient à grands cris, se sont abstenus, trouvant tout à coup qu’elle pouvait poser a priori des problèmes de performance, mais sans qu'ils effectuent les travaux de prototypage ad-hoc... C’est du passé, mais il reste toujours quelques irréductibles, et ceux-là doivent avoir bien des orphelins dans leurs tables, même s’ils sont persuadés du contraire (j'ai pu m'en assurer, à coups d'audits...)

A noter que le père du concept formel d’intégrité référentielle est — comme par hasard — Ted Codd (voyez Extending the Database Relational Model to Capture More Meaning).
__________________
_
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 !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2009, 07h04   #3
mikedavem
Expert Confirmé Sénior

 
Avatar de mikedavem
 
Homme David BARBARIN
Inscription : août 2005
Messages : 4 137
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 4 137
Points : 8 373
Points : 8 373
Bon au contraire de fsmrel ca ne rajeunit pas de 20 ans ... j'étais encore trop petit à ce moment là

Un très bon article comme d'habitude que devrait lire n'importe quel éditeur d'ERP. J'ai encore vu il y a un an une entreprise qui utilisait un ERP où aucune integrité référentielle au niveau base n'était implémenté et ceci sur DB2 .... C'était l'application qui gérait cela .... La conséquence ? Simple , une mauvaise qualité de données (doublons, enregistrements orphelins) ... et des problèmes de maintenance qui s'en suivent ...

++
__________________
Blog | Articles SQL Server | Profil MVP
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2009, 09h43   #4
spdev666
Membre habitué
 
Inscription : septembre 2008
Messages : 101
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 101
Points : 116
Points : 116
Très bon argumentaire (en même temps, j étais déjà convaincu ).

Par contre, ce serait intéressant qu un "anti - FOREIGN KEY" défende son point de vue.
spdev666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2009, 10h23   #5
ILP
Membre éclairé
 
Avatar de ILP
 
Homme Lionel PLAIS
Développeur informatique
Inscription : mai 2002
Messages : 220
Détails du profil
Informations personnelles :
Nom : Homme Lionel PLAIS
Âge : 27
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2002
Messages : 220
Points : 311
Points : 311
Envoyer un message via MSN à ILP Envoyer un message via Skype™ à ILP
Un article à distribuer auprès de mes collègues. Là je dois importer des données dans une base de données Firebird (qui accepte les contraintes FOREIGN KEY). Je n'ai aucune clé primaire, encore moins de clé étrangère.
Et cerise sur le gâteau : les index des tables sont enregistrées dans une table MAX_ID, avec un champ pour chaque table. La valeur de ces champs étant incrémentées à chaque INSERT .
Je suis désespéré .
ILP est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/10/2009, 10h58   #6
doc malkovich
Responsable Approche théorique du décisionnel
 
Avatar de doc malkovich
 
Homme
Consultant en Business Intelligence
Inscription : juillet 2008
Messages : 1 386
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : juillet 2008
Messages : 1 386
Points : 2 962
Points : 2 962
Par défaut BI

Snif, et le décisionnel alors ?
Un exemple pertinent où les FK sont gérées dans le code ?
En effet, on "nettoie" les données dans l'ODS, et on capture les enregistrements défaillants ...
doc malkovich est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2009, 13h32   #7
SQLpro
Rédacteur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 12 074
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 12 074
Points : 21 669
Points : 21 669
Salut,

Citation:
Envoyé par john malkovich Voir le message
Snif, et le décisionnel alors ?
Un exemple pertinent où les FK sont gérées dans le code ?
En effet, on "nettoie" les données dans l'ODS, et on capture les enregistrements défaillants ...
C'est pas une bonne méthode.... Mieux vaut utiliser une base tampon pour faire l'alimentation et que les lignes rejetées restent dans la base tampon.
Dès lors il y a toujours un décisionnel clean et au pire on peut voir les lignes "défaillantes" en prévoyant des vues qui font l'UNION ALL des tables entre les deux bases....

Comme quoi il existe TOUJOURS une solution pour bien faire les choses !

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 * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/10/2009, 14h11   #8
doc malkovich
Responsable Approche théorique du décisionnel
 
Avatar de doc malkovich
 
Homme
Consultant en Business Intelligence
Inscription : juillet 2008
Messages : 1 386
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : juillet 2008
Messages : 1 386
Points : 2 962
Points : 2 962
Hello mr sqlpro !

Citation:
Envoyé par SQLpro Voir le message
Mieux vaut utiliser une base tampon pour faire l'alimentation et que les lignes rejetées restent dans la base tampon
yaisse, c'est ce qu'on appelle l'ODS dans notre jargon de décisionneux
mais si on garde les rejets dans cette base tampon, tu es d'accord qu'il n'y a pas de FK sgbd sur cette base ? sinon adios les rejetos ...
après au niveau perfs on a aussi tendance à virer les FK du coup chez nous ...
c'est un cas particulier ( il faut dire que la bi c'est un peu particulier ) ...
ou alors j'ai loupé un truc ...
doc malkovich est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 13/10/2009, 15h17   #9
Jester
Membre chevronné
 
Avatar de Jester
 
Inscription : septembre 2003
Messages : 735
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 735
Points : 777
Points : 777
Citation:
Envoyé par john malkovich Voir le message
yaisse, c'est ce qu'on appelle l'ODS dans notre jargon de décisionneux
mais si on garde les rejets dans cette base tampon, tu es d'accord qu'il n'y a pas de FK sgbd sur cette base ? sinon adios les rejetos ...
après au niveau perfs on a aussi tendance à virer les FK du coup chez nous ...
c'est un cas particulier ( il faut dire que la bi c'est un peu particulier ) ...
ou alors j'ai loupé un truc ...
En BI on peut aussi faire en sorte de faire pointer les rejetons sur une ligne bidon et du coup on peut garder les FK.

Ne serais-ce que pour comprendre les schéma, ça me semble essentiel.
Jester est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 13/10/2009, 15h48   #10
doc malkovich
Responsable Approche théorique du décisionnel
 
Avatar de doc malkovich
 
Homme
Consultant en Business Intelligence
Inscription : juillet 2008
Messages : 1 386
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : juillet 2008
Messages : 1 386
Points : 2 962
Points : 2 962
Citation:
Envoyé par Jester Voir le message
En BI on peut aussi faire en sorte de faire pointer les rejetons sur une ligne bidon et du coup on peut garder les FK.
Oui mais justement pour créer cette ligne bidon il ne suffit pas d'avoir une FK ... Il faut simuler la FK dans le code pour la créer, c'est ce qui est fait dans la plupart des ETL ...
doc malkovich est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2009, 16h16   #11
fsmrel
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Homme François de Sainte Marie
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 3 620
Détails du profil
Informations personnelles :
Nom : Homme François de Sainte Marie
Localisation : Autre

Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 3 620
Points : 9 095
Points : 9 095
Citation:
Envoyé par Jester Voir le message
En BI on peut aussi faire en sorte de faire pointer les rejetons sur une ligne bidon et du coup on peut garder les FK.
Une clé étrangère est un moyen de garantir l’intégrité référentielle. Si j’ai perdu les liens entre 20000 contrats (vente d’automobiles) et leurs titulaires, vais-je bricoler un lien vers un titulaire bidon ? Ça serait pervertir l’intégrité référentielle, qui en fait n’existerait plus. Rien de tel pour mettre la clé sous la porte.

Citation:
Envoyé par Jester Voir le message
Ne serais-ce que pour comprendre les schéma, ça me semble essentiel.
Pour comprendre les schémas (MCD) on représente les liens entre entités-types. Concernant les schémas (MLD), si on tire un lien c’est qu’on établit l’intégrité référentielle, et il n’y a pas lieu d’établir des clés primaires « bidons » servant de référence pour des clés étrangères « bidons » elles aussi.
__________________
_
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 !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/10/2009, 16h40   #12
Jester
Membre chevronné
 
Avatar de Jester
 
Inscription : septembre 2003
Messages : 735
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 735
Points : 777
Points : 777
Citation:
Envoyé par fsmrel Voir le message
Une clé étrangère est un moyen de garantir l’intégrité référentielle. Si j’ai perdu les liens entre 20000 contrats (vente d’automobiles) et leurs titulaires, vais-je bricoler un lien vers un titulaire bidon ? Ça serait pervertir l’intégrité référentielle, qui en fait n’existerait plus. Rien de tel pour mettre la clé sous la porte.
Dans un monde parfait on a toutes les données, elles sont propres et on a une doc qui va bien avec un beau modèle.

Si une filiale intégrée ne stockait pas les titulaires, c'est la vie. Mais si on doit calculer l'augmentation des ventes, ça ne joue pas donc j'aurais tord d'avoir virer ces données car les chiffres seraient faux.

On doit pouvoir choisir au cas par cas si l'impureté de ces données pose problème ou non.
Jester est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 13/10/2009, 17h08   #13
fsmrel
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Homme François de Sainte Marie
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 3 620
Détails du profil
Informations personnelles :
Nom : Homme François de Sainte Marie
Localisation : Autre

Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 3 620
Points : 9 095
Points : 9 095
Par défaut Garbage in, Garbage out

Citation:
Envoyé par Jester Voir le message
Dans un monde parfait on a toutes les données, elles sont propres et on a une doc qui va bien avec un beau modèle.

Si une filiale intégrée ne stockait pas les titulaires, c'est la vie. Mais si on doit calculer l'augmentation des ventes, ça ne joue pas donc j'aurais tord d'avoir virer ces données car les chiffres seraient faux.
La modélisation est faite pour prendre en compte les problèmes a priori et pas a posteriori, à coups de solutions plus ou moins vaseuses, façon lignes « bidons ». Si l’on sait que l’on aura à prendre en compte des contrats dont on ne connaît pas les titulaires, on modélise la chose, mais certainement pas avec des pseudo PK/FK. C’est l’ABC du métier de concepteur.

L’objectif reste bien d’avoir une base de données propre, décrite par un modèle pertinent. Quant à la doc, il n'est pas interdit de la maintenir à jour.
__________________
_
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 !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2009, 10h08   #14
Waldar
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 6 276
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 35
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2008
Messages : 6 276
Points : 13 568
Points : 13 568
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Je pense que Jester parlait d'insérer dans une table client une ligne CLIENT INCONNU avec un code reconnaissable ('.' ou -1 par exemple) sur laquelle faire pointer du CA.
On reste alors dans une relation PK/FK classique, le CA est bien représenté dans les tableaux de bord des directeurs, et rien n'empêche une alimentation ultérieure de corriger la donnée.

Personnellement au niveau du DWH, comme il s'agit d'un aggrégateurs de différentes sources les liens PK/FK sont primordiaux et même si je gère les rejets et recyclages dans une structure dédiée, je laisse les contraintes d'intégrité pour les raisons évoquées dans ce post.

Dans les datamarts, alimentés exclusivement à partir de ce DWH, "forcément" les contraintes sont validées. Utilisant Oracle, j'ai suivi une de leur préconisation : déclarer les FK en DISABLE NOVALIDATE RELY. Je demande à Oracle de me croire sur parole et de faire comme si les FK étaient validées. Je gagne ainsi du temps à l'alimentation et je profite des optimisations en restitutions.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2009, 10h24   #15
hatifnatte
Futur Membre du Club
 
Développeur informatique
Inscription : juillet 2006
Messages : 34
Détails du profil
Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juillet 2006
Messages : 34
Points : 18
Points : 18
A propos de l'article, je trouve qu'on ne gagne rien à dire que celui qui n'utilise pas les contraintes référentielles est stupide. Ce n'est pas un argument sérieux.
Sans cela l'article aurait été parfait.
hatifnatte est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/10/2009, 10h56   #16
_skip
Expert Confirmé Sénior
 
Avatar de _skip
 
Homme
Développeur d'applications
Inscription : novembre 2005
Messages : 2 562
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : Suisse

Informations professionnelles :
Activité : Développeur d'applications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2005
Messages : 2 562
Points : 6 396
Points : 6 396
Citation:
A propos de l'article, je trouve qu'on ne gagne rien à dire que celui qui n'utilise pas les contraintes référentielles est stupide. Ce n'est pas un argument sérieux.
Sans cela l'article aurait été parfait.
Oui c'est un peu la marque de fabrique de l'auteur j'ai l'impression. C'est vrai que ce n'est pas vraiment nécessaire...

Sinon je suis convaincu de la nécessité des FK, j'ai d'ailleurs insisté pour que mon ancien employeur renonce à SQLite, même pour une petite application.

Sur ce genre de base, il suffit généralement d'une ou deux requêtes SELECT avec un NOT IN(...) sur les tables les plus fréquemment affectées pour repérer une poignée d'enregistrements fautifs.

Je suis également contre (et là je suis sûr que des gens seront pas d'accord) le fait de faire des vérifications dans le code client EN PLUS de celles faites par la base de donnée. Par exemple si je veux supprimer un Produit, j'envoie directement un DELETE et je réagis sur l'exception, les vérifications préalables sont lourdes à écrire, couteuses en performance et au final peu rassurantes et difficiles à maintenir. Enfin c'est mon avis.

Autre chose : quelqu'un ici a déjà jeté un oeil au modèle de donnée utilisé par SAP?
_skip est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 14/10/2009, 13h19   #17
daredare
Futur Membre du Club
 
Inscription : mai 2005
Messages : 16
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 16
Points : 18
Points : 18
Citation:
Envoyé par _skip Voir le message
j'ai d'ailleurs insisté pour que mon ancien employeur renonce à SQLite, même pour une petite application.
Il me semble (cf. http://www.libre-a-vous.fr/sqlite-co...cle-etrangere/) qu'il est possible de simuler ces contraintes de clé étrangère avec SQLite...

Ce n'est peut être pas parfait, mais pour une petite appli. qui ne nécessite pas d'accès concurrent, cela peut du coup convenir.
daredare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2009, 13h47   #18
_skip
Expert Confirmé Sénior
 
Avatar de _skip
 
Homme
Développeur d'applications
Inscription : novembre 2005
Messages : 2 562
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : Suisse

Informations professionnelles :
Activité : Développeur d'applications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2005
Messages : 2 562
Points : 6 396
Points : 6 396
Juste mais je trouve que ça ressemble à un gros hack.
De plus, les mini SGBD embarqués qui tiennent la route sont assez nombreux, firebird embedded, mssql CE, VistaDb...

La migration vers une architecture client-serveur au besoin aurait été simplifiée aussi. Ce n'était pas seule raison, il y a aussi les bizarreries au niveau des types et la tant vantée vitesse qui devenait toute relative sur les grosses tables...
_skip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2009, 15h48   #19
Soutou
Membre éclairé

 
Avatar de Soutou
 
Inscription : janvier 2005
Messages : 325
Détails du profil
Informations personnelles :
Âge : 48

Informations forums :
Inscription : janvier 2005
Messages : 325
Points : 336
Points : 336
Arrivées en 1992 avec la version 7 d'Oracle les FOREIGN KEYs ont fait faire un bond considérable à propos de la qualité des données et ont permis de réduire considérablement les programmes d'application. Ne pas les utiliser c'est retourner en arrière d'au moins 20 ans donc.

En version 6, Oracle autorisait la syntaxe FOREIGN KEY ... REFERENCES conscient qu'il fallait vraiment implanter le concept.

MySQL fait de même avec les contraintes CHECK....... en 2009....
Soutou est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/10/2009, 15h50   #20
fsmrel
Expert Confirmé Sénior

 
Avatar de fsmrel
 
Homme François de Sainte Marie
Spécialiste en bases de données
Inscription : septembre 2006
Messages : 3 620
Détails du profil
Informations personnelles :
Nom : Homme François de Sainte Marie
Localisation : Autre

Informations professionnelles :
Activité : Spécialiste en bases de données
Secteur : Conseil

Informations forums :
Inscription : septembre 2006
Messages : 3 620
Points : 9 095
Points : 9 095
Par défaut Ne confondons pas logique formelle et fer à souder

Citation:
Envoyé par Waldar Voir le message
Je pense que Jester parlait d'insérer dans une table client une ligne CLIENT INCONNU avec un code reconnaissable ('.' ou -1 par exemple) sur laquelle faire pointer du CA.
On reste alors dans une relation PK/FK classique, le CA est bien représenté dans les tableaux de bord des directeurs, et rien n'empêche une alimentation ultérieure de corriger la donnée.
Avez-vous tenu compte du sens de ce que j’ai écrit ? Quand pour votre part vous écrivez : « On reste alors dans une relation PK/FK classique », certes, à la lettre cela marche, mais ne convient pas dans l’esprit, car en l’occurrence on passe dans une toute autre dimension. Je répète qu’on ne doit pas détourner la finalité de la relation PK/FK pour un bricolage technique de circonstance réalisé a posteriori, à la va-vite. En bon logicien, Ted Codd a défini l’intégrité référentielle en tenant compte fondamentalement de la dimension ontologique et sémantique des choses, et il est bon qu’à notre tour nous ne perdions pas de vue cette dimension. En conséquence, nous devons prendre en compte les situations du type « Contrat sans titulaire » et les exprimer dans le MCD (Modèle Conceptuel de Données) ou le DC (Diagramme de classes), et ne pas nous contenter systématiquement de cache-misère, corriger les données après remise des tableaux de bord (à moins que cette façon de procéder fasse l’objet de recettes ad-hoc, finissant par être érigées en une fort médiocre « théorie »...)
__________________
_
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 !)
fsmrel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Actualité déjà publiée
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h05.


 
 
 
 
Partenaires

Hébergement Web