IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Décisions SGBD Discussion :

Contraintes FOREIGN KEY SQL vs code client


Sujet :

Décisions SGBD

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    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 nouveau tutoriel de sqlpro nous permet d'aborder ce sujet à partir de cas pratiques.

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

    Et vous ce tutoriel vous a-t-il convaincu ?


    Retrouvez tous les meilleurs cours et tutoriels pour apprendre Microsoft SQL Server

  2. #2
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 174
    Billets dans le blog
    16
    Par défaut
    Ç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).
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  3. #3
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    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 ...

    ++

  4. #4
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 525
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 525
    Par défaut
    Citation Envoyé par mikedavem Voir le message
    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 .
    est-ce qu'on peut connaitre le nom de l'ERP ?
    Sinon m'écrire en MP

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 376
    Par défaut
    Bha, L'ERP que nous utilisons n'implémente pas d'intégrité référentielle (base Progress), ni le logiciel de WMS (SqlServeur) , ni le logiciel d'encaissement (que ce soit la partie serveur ou la partie client sur la caisse, toutes les deux sur SqlServeur)... Pour l'application de Paie (SqlServeur aussi), je ne suis pas sûr, et la compta (SqlServeur) je suis persuadé que non.

    Tatayo.

  6. #6
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 227
    Billets dans le blog
    25
    Par défaut
    En introduction : je suis pour l'implémentation des FK et PK au niveau de la base, car ça limite, et je suis pour la modélisation propre et les FN...

    Ceci étant dit, un ERP est fait pour être "monolithique", donc avoir un frontal spécifique au modèle de donnée sous-jacent, et gérer "tout en un".

    Je n'en ai pas touché des tonnes : juste SAP et Peoplesoft, mais ils ont les 2 les mêmes points communs

    1) une tonne de tables
    2) un modèle pas vraiment normalisé
    3) une indexation erratique
    4) une interdiction d'attaquer la base sous un autre angle que le frontal dédié
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  7. #7
    Membre éprouvé
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Par défaut
    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.

  8. #8
    ILP
    ILP est déconnecté
    Membre éclairé
    Avatar de ILP
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2002
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 258
    Par défaut
    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é .

  9. #9
    Membre Expert
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    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 884
    Billets dans le blog
    1
    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 ...

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 990
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 990
    Billets dans le blog
    6
    Par défaut
    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
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  11. #11
    Membre Expert
    Avatar de doc malkovich
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2008
    Messages
    1 884
    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 884
    Billets dans le blog
    1
    Par défaut
    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 ...

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par spdev666 Voir le message
    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.
    Je ne suis pas anti foreign key, juste pragmatiquement enclin à réfléchir avant de les implémenter.
    Je ne suis pas emballé par le système arguments-contradiction, c'est un jeu de politicien, j'ai une appli à gérer pas des écoliers... Parfois la théorie tue un projet un peu pollué : mais passons aux exemples

    Primo :
    Gérer les contraintes via le sgbd suppose une remontée des messages d'erreur de la base : puis il faut gérer ces messages. Or ils n'ont pas toujours le même sens selon qu'on est en design-time ou au run time. Il peut être bien moins couteux de définir une politique de contraintes serveur souples plutôt que bloquer un client en prod sur un message du style ORA-ERR 1877...

    secundo :
    si mon code client fait une "bétise" et supprime une ligne parente non-protégée : je peux préférer connecter la base en admin, trouver les lignes orphelines et me faire ma propre idée de ce qu'il faut faire plutot que laisser l'utilisateur gérer une erreur dont il ne sait que faire.

    Tertio :
    Messieurs les gourous de BDD merci de ne pas vous approprier les SGBD : Certaines applis en font un usage que vous n'imaginez pas et pour lequel vous n'avez pas forcément l'expertise ad hoc. Traitement de signal, stockage de flux paginé, liaisons anticipées sont monnaie courante dans ma spécialité et tout ceci est assez loin des questions de foreign keys.

    D'autre part : gérer un mauvais client sur lequel on n'a pas la main est aussi le type de pollution à laquelle on peut être confronté. Parfois le théorie vous éloigne de la pratique et c'est le cas ici. Très théorique cette approche, décidément.

    Comme manager, si mon gars ne gère pas les foreign keys mais qu'il sait bien faire des stats, je lui pardonne volontiers car je peux mettre des contraintes à postériori sur la base de tests solides, alors que je ne peux pas forcément remplacer un bon designer.

    vous vouliez des arguments...

  13. #13
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Par défaut
    Citation Envoyé par unBonGars Voir le message
    ... si mon code client fait une "bétise" et supprime une ligne parente non-protégée : je peux préférer connecter la base en admin, trouver les lignes orphelines et me faire ma propre idée de ce qu'il faut faire plutot que laisser l'utilisateur gérer une erreur dont il ne sait que faire.
    J'ai un peu de mal à voir ce qu'on peut faire avec une facture supprimée alors qu'il reste des lignes de factures rattachées à rien ... Et puis pragmatisme contre pragmatisme, en tant que DBA j'ai suffisamment de travail à faire sans perdre mon temps à faire ce genre de manipulation sans interêt ...

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Luc Orient Voir le message
    J'ai un peu de mal à voir ce qu'on peut faire avec une facture supprimée alors qu'il reste des lignes de factures rattachées à rien ... Et puis pragmatisme contre pragmatisme, en tant que DBA j'ai suffisemment de travail à faire sans perdre mon temps à faire ce genre de manipulation sans interêt ...
    Vous avez oublié de préciser que cet article est strictement limité à la gestion ... non ? Ces jours ci j'administre des serveurs BDD dont AUCUN ne fait de gestion .. Une base de données sert aussi à gérer un filesystem ou une liste de périphériques ou un flux ou..... du traitement de signal

    Su les 3 pays où je travaille , seule la France ignore cela. Education ?
    J'ai écrit des compilateurs en SQL il y a une 10aine d'années , les lignes orphelines étaient des liens morts et aucun utilisateur n'aurait pu gérer les millions de messages d'intégrité , c'est la force dune BDD , elle peut jointurer à postériori. Mais ce me semble limite louche chez vous, ne comptez vous que des sous ? C'est un peu réducteur quand même

    Pensez vous que les aiguilleurs du ciel se voient interdire l'usage de BDD ? et les milliers de taches sur leur écran radar = autant de lignes de BDD avec ou sans contrainte FK ?? Messieurs voyez un peu large svp

  15. #15
    Membre émérite Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Par défaut
    Le sujet ici est les clé étrangères en SQL et donc indirectement la Théorie Relationnelle.
    La normalisation qui a pour but entre autre de réduire la redondance d'information entraine un nombre de tables relativement important. Celles-ci sont très souvent en associées (je n'utilise pas le mot relation volontairement).

    Vous pouvez très bien vous servir de tables comme de vulgaires sacs ou espaces de stockage, c'est peut-être parfois nécessaire dans votre cas.

    Mais les contraintes de clé étrangère sont tout simplement indispensables lorsqu'il faut garantir l'intégrité des données de la base.

    Si vous n'avez aucune contraintes.. comment savez-vous quel brevet a passé un pilote et par conséquent s'il est autorisé à piloter tel type d'avion ?

  16. #16
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Par défaut
    Citation Envoyé par unBonGars Voir le message
    ... Mais ce me semble limite louche chez vous, ne comptez vous que des sous ? C'est un peu réducteur quand même
    Non c'est normal pour moi ... je travaille dans une banque ...

  17. #17
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par unBonGars Voir le message
    Primo :
    Gérer les contraintes via le sgbd suppose une remontée des messages d'erreur de la base : puis il faut gérer ces messages. Or ils n'ont pas toujours le même sens selon qu'on est en design-time ou au run time. Il peut être bien moins couteux de définir une politique de contraintes serveur souples plutôt que bloquer un client en prod sur un message du style ORA-ERR 1877...
    Avant de filer une appli au client, on la teste non ?
    Et si ce genre de message d'erreur intervient... ben on intervient pour qu'il n'intervienne plus chez le client !

    secundo :
    si mon code client fait une "bétise" et supprime une ligne parente non-protégée : je peux préférer connecter la base en admin, trouver les lignes orphelines et me faire ma propre idée de ce qu'il faut faire plutot que laisser l'utilisateur gérer une erreur dont il ne sait que faire.
    Je pense que le DBA va t'envoyer sur les roses avant la dixième intervention que tu lui demanderas !

    Tertio :
    Messieurs les gourous de BDD merci de ne pas vous approprier les SGBD : Certaines applis en font un usage que vous n'imaginez pas et pour lequel vous n'avez pas forcément l'expertise ad hoc.
    Bien sûr, les spécialistes en BDD sont spécialistes... en BDD pas en traitement de signal et autres sujets probablement très intéressants cités juste après.
    Mais ils posent des questions pour concevoir correctement la BDD qui sera utilisé par le spécialiste du domaine et lui font valider la conception et l'appli avant de lui permetre de jouer avec.

    Traitement de signal,
    Sans connaître ce domaine, le signal vient d'une source non ?
    Tiens, voilà déjà un bout de MCD :
    Signal -1,1----Provenir----0,1- Source
    Bon je vais vite sur ce bout de schéma mais c'est pour montrer qu'on peut probablement modéliser à peu près tout.

    stockage de flux paginé, liaisons anticipées sont monnaie courante dans ma spécialité et tout ceci est assez loin des questions de foreign keys.
    Ces domaines là, je ne les connais pas du tout et ne peux donc pas actuellement les modéliser mais avec un peu plus d'informations je suis sûr qu'on doit arriver à quelque chose.

    D'autre part : gérer un mauvais client sur lequel on n'a pas la main est aussi le type de pollution à laquelle on peut être confronté. Parfois le théorie vous éloigne de la pratique et c'est le cas ici. Très théorique cette approche, décidément.
    Si le client est mauvais, son fournisseur doit l'être aussi ?
    Remarque, c'est peut-être un bon moyen de se débarrasser des mauvais clients après tout !

    Comme manager, si mon gars ne gère pas les foreign keys mais qu'il sait bien faire des stats,
    Ce n'est pas le même boulot.

    je lui pardonne volontiers car je peux mettre des contraintes à postériori sur la base de tests solides,
    Tests qui prendront du temps à élaborer, à analyser les résultats. Contraintes qui ne fonctionneront peut-être pas parce que des contraintes d'intégrité n'auront pas été implantées au préalable et il faudra alors perdre encore du temps à chercher les erreurs et du temps à les corriger.

    alors que je ne peux pas forcément remplacer un bon designer.
    Tu auras aussi peut-être autant voire plus de mal à remplacer un bon concepteur de BDD.

    Pensez vous que les aiguilleurs du ciel se voient interdire l'usage de BDD ? et les milliers de taches sur leur écran radar = autant de lignes de BDD avec ou sans contrainte FK ?? Messieurs voyez un peu large svp
    Les "milliers de taches sur leur écran radar = autant" d'avions avec des humains dedans !
    Pas rassurant ce que tu as écrit là !
    J'espère que les applis des aiguilleurs du ciel utilisent des BDD solides !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 !

  18. #18
    Membre actif
    Inscrit en
    Novembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 60

    Informations forums :
    Inscription : Novembre 2009
    Messages : 24
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Les "milliers de taches sur leur écran radar = autant" d'avions avec des humains dedans !
    Pas rassurant ce que tu as écrit là !
    J'espère que les applis des aiguilleurs du ciel utilisent des BDD solides !
    Je me demande dans tel cas, l'importance de la BDD par rapport à l'ensemble du système.
    Les Paraboles ? Les Antennes ? les Recepteurs éléctroniques ? les protocoles et signaux ? l'application elle même ?

    La BDD est un outil GENERALISTE, qu'il convient d'utiliser à bon escient dans une application SPECIFIQUE. et si cela imlpique de NE PAS utiliser les FK, je ne vois pas en quoi cela choque. Et je ne comprend pas non plus, comment sans connaitre le besoin fonctionnel et Technique, on peut être aussi catégorique.

  19. #19
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ne pas poser les contraintes dans la base et déléguer ce travail uniquement au logiciel revient à ne permettre l'utilisation des données que via le logiciel qui gère lesdites contraintes...

    Au vu de ce que je rencontre quotidiennement en entreprise, cette approche n'est pas réaliste et empêche la centralisation des données en un seul endroit, avec x logiciels qui se connectent au "datawharehouse"...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  20. #20
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 898
    Par défaut
    A ma connaissance, qu'un programme client plante à cause d'une contrainte d'intégrité qu'il a violée suite à une situation bizarroïde de concurrence, c'est plus facilement acceptable et réparable que des dégâts au niveau de la cohérence des données.

    Je suis plutôt partisan de dire que malgré tout le soin apporté à la gestion de situations difficiles dans un code client, le risque de bug est bien présent et des choses inattendues peuvent se produire.
    Je préfère un bon gros plantage de mon application avec un message hideux plutôt que prendre le risque d'une insertion/modification foireuse qui se produirait silencieusement. Car ensuite, trouver l'erreur est déjà une chose, l'expliquer peut être très difficile et dans tous les cas la responsabilité du fournisseur de l'application ainsi que sa crédibilité peuvent rentrer en jeu.

    Les contraintes ne sont pas la réponse à tout, mais sont toutefois une sécurité supplémentaire non négligeable. D'autant que la portabilité me semble pas si problématique que telle qu'exprimée dans le post précédent.

Discussions similaires

  1. [phpMyAdmin] La contrainte FOREIGN KEY n'est jamais respectée
    Par Chatbour dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 30/06/2008, 12h31
  2. Erreur: conflit avec la contrainte FOREIGN KEY SAME TABLE
    Par useretl dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/10/2007, 12h27
  3. Contrainte, Foreign Key et erreur SQL
    Par zevince dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 12/10/2007, 17h50
  4. Réponses: 3
    Dernier message: 13/07/2007, 09h32
  5. Ajout contrainte FOREIGN KEY
    Par loukili81 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 22/03/2006, 22h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo