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

MySQL Discussion :

Qu'est-ce qu'exactement "non-identify relation" ?


Sujet :

MySQL

  1. #21
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Sauf qu'ici, on substitue Inconnue par NULL ?????
    SQL étant un langage normalisé, la norme nous dit ceci :
    Les 3 valeurs de tests de la logique ternaire sont :
    • True
    • False
    • Unknown


    http://webdocs.cs.ualberta.ca/~yuan/...075-2-1999.pdf
    Page 24 :
    The data type boolean comprises the distinct truth values true and false.
    Unless prohibited by a NOT NULL constraint, the boolean data type also supports the unknown truth value as the null value.


    CQFD

    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/ * * * * *

  2. #22
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par fsmrel Voir le message
    
    NON     |                    ET      | vrai    | inconnu | faux           OU      | vrai    | inconnu | faux
    --------+--------            --------+---------+---------+------          --------+---------+---------+-----
    vrai    | faux               vrai    | vrai    | inconnu | faux           vrai    | vrai    | vrai    | vrai
    inconnu | inconnu            inconnu | inconnu | inconnu | faux           inconnu | vrai    | inconnu | inconnu
    faux    | vrai               faux    | faux    | faux    | faux           faux    | vrai    | inconnu | faux
    
    
    J'avoue être complètement perdu par cette présentation : j'ai mis en couleur ce qui me semble faux, mais sans doute est-ce du au fait que je n'arrive pas à lire ce tableau
    Quoi qu'il en soit vrai ou inconnu donne vrai et non inconnu

    Le tableau ci-dessous me semble beaucoup plus facile à lire
    Nom : TabVer.png
Affichages : 165
Taille : 6,5 Ko

  3. #23
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut à tous.

    @ SqlPro : c'est juste une question de terminologie qui me perturbe.
    Quand on est en mathématique, on parle plutôt de "indéterminé" ou indécidabilité".
    Dans les bases de donnés, on parle plutôt de "inconnu".

    Ensuite, tu soulèves un autre problème, celui de l'aceptation de la valeur NULL (inconnu) dans un booléen (enfin je devrais plutôt parler d'une variable logique).
    D'après sa définition, une variable logique ne peut prend que deux valeurs possibles soit Vrai (True), ou soit Faux (False).
    --> https://fr.wikipedia.org/wiki/Bool%C3%A9en

    Je cite Fsmrel issu du poste #13 :
    Citation Envoyé par Fsmrel
    (1) La notion de « valeur nulle » est un non-sens. Null est seulement un moyen SQL, une marque, pour justement exprimer l’absence de valeur pour une colonne
    où je suis totalement d'accord avec cette remarque.

    Cela ne signifie pas pour autant que nous nous trouvons dans une logique ternaire de Kleene !

    Citation Envoyé par Escartefigue
    J'avoue être complètement perdu par cette présentation : j'ai mis en couleur ce qui me semble faux, mais sans doute est-ce du au fait que je n'arrive pas à lire ce tableau
    Les tables de vérités sont justes !

    C'est une table à deux entrées.
    (1) : En ligne (en blue), c'est le premier paramètre.
    (2) : En colonne (en marron), c'est le second paramètre.
    En rouge, c'est le résultat de (1) OR (2).
    Dans l'exemple, il s'agit de : "inconnu OR Faux" et l'on obtient comme résultat : "inconnu".
    Le résultat est correcte !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OU      | vrai    | inconnu | faux
    --------+---------+---------+-----
    vrai    | vrai    | vrai    | vrai
    inconnu | vrai    | inconnu | inconnu
    faux    | vrai    | inconnu | faux
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #24
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Artemus24 Voir le message

    C'est une table à deux entrées.
    (1) : En ligne (en blue), c'est le premier paramètre.
    (2) : En colonne (en marron), c'est le second paramètre.
    En rouge, c'est le résultat de (1) OR (2).
    Dans l'exemple, il s'agit de : "inconnu OR Faux" et l'on obtient comme résultat : "inconnu".
    Le résultat est correcte !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OU      | vrai    | inconnu | faux
    --------+---------+---------+-----
    vrai    | vrai    | vrai    | vrai
    inconnu | vrai    | inconnu | inconnu
    faux    | vrai    | inconnu | faux
    OK, je ne suis pas coutumier de cette présentation, du coup je suis d'accord avec le tableau de Fsmrel
    Mais connaissant le niveau d'expertise de ce dernier, le contraire m'eut étonné
    Merci pour cette explication de texte Artemus

  5. #25
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut Escartefigue.

    Citation Envoyé par Escartefigue
    OK, je ne suis pas coutumier de cette présentation, du coup je suis d'accord avec le tableau de Fsmrel
    Et quel genre de présentation aurais-tu voulu ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #26
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 556
    Points
    38 556
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut Escartefigue.


    Et quel genre de présentation aurais-tu voulu ?

    @+
    du classique, voir mon post n° 22

  7. #27
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut SQL et logique trivalente, suite...
    Bonsoir,


    Citation Envoyé par escartefigue
    J'avoue être complètement perdu par cette présentation : j'ai mis en couleur ce qui me semble faux, mais sans doute est-ce du au fait que je n'arrive pas à lire ce tableau
    Quoi qu'il en soit vrai ou inconnu donne vrai et non inconnu
    Dans le tableau que j’ai présenté, vrai ou inconnu donne bien vrai. Je suis désolé si la présentation paraît sibylline, mais c’est celle de C .J. Date (francisée), qu’il fournit ça et là, par exemple à la page 333 de Date on Database: Writings 2000-2006, et qu’il reprend chez Codd, voyez le paragraphe 8.9 « The Three-Valued Logic of RM/V1 », page 236 de l’ouvrage (téléchargeable) The Relational Model for Database Management, Version 2.

    Dans cet ouvrage, la présentation des tables de vérité par Codd est la suivante (francisée) :


    
        A      | NON A
    -----------+--------
       vrai    | faux 
       inconnu | inconnu
       faux    | vrai
    
    
                |           B
                |-------------------------
    A ET B      | vrai    | inconnu | faux
    ------------+---------+---------+-----
      | vrai    | vrai    | inconnu | faux
    A | inconnu | inconnu | inconnu | faux
      | faux    | faux    | faux    | faux
    
    
    
                |           B
                |-------------------------   
    A OU B      | vrai    | inconnu | faux   
    ------------+---------+---------+--------
      | vrai    | vrai    | vrai    | vrai   
    A | inconnu | vrai    | inconnu | inconnu
      | faux    | vrai    | inconnu | faux   
    
    

    Cela dit, votre tableau est vraisemblablement plus facile à lire.



    Citation Envoyé par SQLpro
    SQL étant un langage normalisé, la norme nous dit ceci :
    Les 3 valeurs de tests de la logique ternaire sont :
    •True
    •False
    •Unknown
    On est d’accord, inconnu (unknown) est bien une valeur.



    Citation Envoyé par SQLpro
    Page 24 :
    The data type boolean comprises the distinct truth values true and false.
    Unless prohibited by a NOT NULL constraint, the boolean data type also supports the unknown truth value as the null value.
    CQFD
    Hum... Dans son ouvrage SQL and Relational Theory, au chapitre 4 « No Duplicates, No Nulls », C.J. Date ne manque pas de remettre les pendules à l’heure et montre que cet énoncé est faux, à savoir que Null et la « valeur de vérité unknown » ne sont pas interchangeables.

    Histoire de troller un peu, Je répète ce que j’ai déjà écrit (post #13) à propos de cet énoncé :

    « Comme le note malicieusement Peter Gulutzan (|i]SQL-99 Complete, Really[/i], page 212), selon la norme il revient au même de dire : « Je ne sais pas » et « Je sais que l’information est absente » ! »


    Dans SQL and Relational Theory, Date relève « quelques » inepties et approximations dans SQL en relation avec NULL. Par exemple, je trouve que la remarque suivante qu’il fait est de bon sens et caractérise les approximations de la norme sur le sujet :

    « NOT NULL doesn’t apply to data types, it applies to uses of data types (typically as part of column definition). »


    Il est aussi écrit dans la norme :

    « All boolean data type values and SQL truth values are mutually comparable and assignable. The value true is greater than the value false, and any comparison involving the null value or an unknown truth value will return an unknown result. »

    Je vous renvoie aux commentaires de Date...



    Citation Envoyé par Artemus24
    Nous sommes d'accord sur le fait que la valeur NULL est une marque pour indiquer l'absence de valeur. Inutile de revenir sur ce point.
    Une fois encore, on ne peut pas accoler valeur et NULL.



    Citation Envoyé par Artemus24
    Sauf qu'ici, on substitue Inconnue par NULL ?????
    On n’a pas à substituer. Si l’évaluation d’une expression donne inconnu au lieu de vrai ou faux, le SGBD doit réaliser le marquage. Dans le cas de DB2 for z/OS, marquer à Null consiste à remplacer X'00' par X'FF' dans l’octet de service fait pour ça, associé à chaque cellule concernée.



    Citation Envoyé par Artemus24
    Le OU logique se comporte comme la recherche du maximum dans le classement : Faux < Inconnu < Vrai.
    Le ET logique se comporte comme la recherche du minimum dans le classement : Faux < Inconnu < Vrai.
    Ce qui revient à dire que Faux = 0 et Vrai = 1. Alors Inconnu est une valeur comprise entre 0 et 1.
    Certes. Et cela vaut pour la norme SQL, comme il y est écrit (cf. ci-dessus), « All boolean data type values and SQL truth values are mutually comparable » : « TRUE > FALSE » est donc légal et renvoie TRUE, par contre, selon la norme « TRUE > UNKNOWN » est légal, mais renvoie NULL (UNKNOWN)...



    Citation Envoyé par Artemus24
    si c'est une marque, et bien ce n'est pas une valeur et de ce fait, il ne peut pas être traité dans la logique ternaire de Kleene.
    La logique trivaluée de SQL ou de Codd se contente du domaine (type) booléen étendu à trois valeurs : {vrai, faux, inconnu}.



    Citation Envoyé par Artemus24
    On remarque que la logique binaire est incluse dans la logique ternaire de Kleene.
    Tout comme elle est incluse dans la logique ternaire de Chamberlin, quand celui-ci a défini les tables de vérité de SQL, en 1976, logique qui aurait plus à voir avec celle de Bochvar, même si elle n’en est pas issue : je vous renvoie à l’article de David McGoveran, « Classical Logic: Nothing Compares 2 U », paru en janvier 1994 dans Database Programming & Design. J’en extrais ceci :

    The most common versions of many-valued logic are variations on other systems, such as those developped by Łukasiewicz, Post and Kleene. Variations of Łukasiewicz’s systems are sometimes referred to as the basis for SQL’s 3VL. While this supposition cannot be true,⁴ it is worth examining the properties of the Łukasiewicz systems. Łukasiewicz systems are not truth functionally complete (so the system would not be able to verify some facts using the available operators), nor are they natural extensions of the classical propositional logic. Certain tautologies of the propositional logic cease to be true in the Łukasiewicz systems, and, conversely, certain tautologies of the Łukasiewicz systems have no counterpart in the propositional logic. In our terminology, they are deviants.

    Łukasiewicz’s where intended to treat contingent (especially future contingent) propositions as meaning "temporarily unknown." The "UNKNOWN" in his 3VL is similar to Codd’s A-marks. For example, the truth value of "it will rain tomorrow" would be "UNKNOWN", but would eventually be determined as either "TRUE" or "FALSE". Therefore the Łukasiewicz "UNKNOWN" is a temporary placeholder for a standard truth value. These various facts about Łukasiewicz systems eliminate them from further considerations: They are not candidates for use as a DBMS’s logical system. We can prove that some many-valued logics are truth functionally complete (all are consistent by definition if at least one truth value is undesignated), but have semantics clearly inappropriate for a DBMS. Here are a few examples: in Post’s systems, truth valuations apply only to sets of propositions (that is, sets of rows), each individual proposition having a classical truth valuation, rather than the individual propositions. Kleene had in mind the truth valuations of propositions involving mathematical functions undefined for certain ranges of predicate values. The concept of undefined is similar to the purpose of Codd’s I-marks. Bochvar created a system with a set of "internal" truth tables and a set of "external" truth tables, treating unknown as "undecidable" or "meaningless". This system is similar to SQL in the sense that SQL effectively returns false (the external system) to the user when the answer is unknown (the internal system), but Bochvar’s systems are dissimilar in other respects.

    [...]

    ⁴ Łukasiewicz gave "IMPLIES" and "NOT" as his primitive connectives, deriving "OR" and "AND" from them. His definition of "IMPLIES" is different from that used in the propositional or predicate calculi, which define "P IMPLIES Q" as "NOT P OR Q". In fact, Łukasiewicz ‘s version of "IMPLIES" cannot be derived from the definition of "NOT", "AND", and "OR". This is because "NOT", "AND", and "OR" each preserve "UNKNOWN" from the inputs (and therefore so do any combinations of these), whereas Łukasiewicz version of IMPLIES does not. Since SQL does not define IMPLIES, claims that "it is based on a variant of Łukasiewicz’s 3VL" must be false!

    [...]



    Citation Envoyé par Artemus24
    Si c'est une valeur, alors on peut appliquer la logique ternaire de Kleene.
    A ceci près que, si j’en crois McGoveran, la « troisième valeur de vérité » de Kleene correspond à la marque I-Mark de Codd (traduisible par « sans objet », « inapplicable »). La marque A-Mark (« inconnu », « applicable ») ne serait donc pas prise en considération par Kleene.



    Citation Envoyé par Artemus24
    C'est ce point qui me pose le plus de problème, à savoir traiter la marque comme une valeur.
    On sort de SQL...



    Citation Envoyé par Artemus24
    Un des opérateur qui me pose un problème d'interprétation est le 'IN'.
    Date nous avertit (page 363 de SQL and Relational Theory, Third Edition) qu’à l’origine SQL a été conçu pour ne pas être plaqué sur l’algèbre relationnelle ou sur le calcul relationnel, estimés trop compliqués pour les utilisateurs que nous sommes (avec le temps SQL a grossi et comporte de l’algèbre et du calcul), donc « IN » peut effectivement poser un problème d’interprétation. Néanmoins, on peut l’interpréter comme l’équivalent SQL de l’opérateur d’appartenance à un ensemble « ∈ » (cf. page 91 de l’ouvrage).


    Reprenons la requête :

    
    SELECT P.*
    FROM   P
    WHERE P.Weight NOT IN (SELECT P.Weight
                           FROM   P
                           WHERE  P.City  = 'Oslo') ;
    
    
    La sous-requête renvoie un ensemble, à savoir une table à une seule colonne, censée n’avoir qu’une ligne, donc une seule valeur, mais comme une table est un ensemble, ses éléments sont des lignes (cf. le même ouvrage, page 63). De même, dans « WHERE P.Weight NOT IN », P.Weight est à considérer (Date utilise le terme beaucoup plus fort et précis coerce) comme une expression de ligne (row expression) à une colonne : on compare des lignes avec des lignes.


    Cela dit, (cf. le même ouvrage, page 434) IN peut être remplacé par =ANY et NOT IN par <> (bien que Date recommande de n’en rien faire pour des raisons d’erreurs d’interprétation de notre part, vite arrivées) :

    
    SELECT P.*
    FROM   P
    WHERE P.Weight <> (SELECT P.Weight
                       FROM   P
                       WHERE  P.City  = 'Oslo') ;
    
    
    Maintenant, vous pouvez aussi préférer NOT EXISTS, mais attention ! En SQL, EXISTS n’est pas soumis à la logique trivalente ! Seuls vrai et faux lui sont applicables : attention au résultat ! C’est la surprise garantie... (J'essaierai avec SQL Server).



    Citation Envoyé par Artemus24
    Et rien du tout, ce n'est pas une ligne contenant que des NULL.
    S’attendre un résultat vide est bien légitime, mais MySQL a affiché une ligne où chaque colonne est marquée NULL... Cela dit, la requête suivante renvoie 0 :

    
    SELECT COUNT(*) FROM
    (SELECT P.*
    FROM   P
    WHERE P.Weight NOT IN (SELECT P.Weight
                           FROM   P
                           WHERE  P.City  = 'Oslo')
    )  as truc                     
    ;
    
    
    (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.

  8. #28
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut à tous.

    Citation Envoyé par Fsmrel
    Cela dit, votre tableau est vraisemblablement plus facile à lire.
    Question d'habitude.

    Citation Envoyé par Fsmrel
    Hum... Dans son ouvrage SQL and Relational Theory, au chapitre 4 « No Duplicates, No Nulls », C.J. Date ne manque pas de remettre les pendules à l’heure et montre que cet énoncé est faux, à savoir que Null et la « valeur de vérité unknown » ne sont pas interchangeables.
    Voilà un argument qui va dans mon sens ! On progresse.

    Citation Envoyé par Fsmrel
    « Comme le note malicieusement Peter Gulutzan (|i]SQL-99 Complete, Really[/i], page 212), selon la norme il revient au même de dire : « Je ne sais pas » et « Je sais que l’information est absente » ! »
    Justement, je ne suis pas d'accord avec cela.
    Une absence de valeur ne signifie pas qu'elle n'existe pas. Donc absence de valeur n'est pas "synonyme" de "inconnu".

    The value true is greater than the value false, and any comparison involving the null value or an unknown truth value will return an unknown result.
    Pour la première partie du message, je suis d'accord. Surtout quand je parle du classement : Faux < inconnu < Vrai, avec Faux = 0 et Vrai = 1.
    Mais pour la seconde affirmation, soit je n'ai rien compris, soit elle est fausse. Exemple : Vrai OU NULL retourne bien Vrai.

    Citation Envoyé par Fsmrel
    On n’a pas à substituer.
    Je ne substitue rien du tout. Ce sont les théoriciens qui ont fait le choix de remplacer inconnu par NULL. Et je continue d'affirmer que c'est une erreur d'interprétation.
    Inconnu est une valeur, tandis que NULL est une marque.

    Citation Envoyé par Fsmrel
    Certes. Et cela vaut pour la norme SQL
    Encore heureux qu'ils appliquent correctement la logique ternaire de Kleene.

    Citation Envoyé par Fsmrel
    La logique trivaluée de SQL ou de Codd se contente du domaine (type) booléen étendu à trois valeurs : {vrai, faux, inconnu}.
    Et bien non. c'est {vrai, faux, null}. Ici, null est traité comme une valeur d'où l'ambiguïté que je signale depuis le début.
    Et un booléen ne prend que deux états possibles Vrai ou Faux.

    so the system would not be able to verify some facts using the available operators
    Voilà une incohérence que je tiens à signaler.

    nor are they natural extensions of the classical propositional logic.
    Exactement ce que je dis depuis le début.

    They are not candidates for use as a DBMS’s logical system.
    Et voici la confirmation.

    treating unknown as "undecidable" or "meaningless".
    Ce qui n'est pas le sens du NULL.

    Lukasiewicz gave "IMPLIES" and "NOT" as his primitive connectives, deriving "OR" and "AND" from them.
    L'implication mathématique est une notion floue. En fait, il y a trois définition différente de ce même concept.

    1) l'implication logique. C'est l'opérateur que l'on utilise pour le calcul des propositions.
    C'est la plus simple à comprendre et il n'y a aucun ambiguïté. Elle se note "A => B" et se traduit par "NON A OU B" et on a quatre résultats différents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      A  |   B  || A => B |
    =====+======++========+
    Faux | Faux ||  Vrai  |
    Faux | Vrai ||  Vrai  |
    Vrai | Faux ||  Faux  |
    Vrai | Vrai ||  Vrai  |
    @ Escartefigue : je préfère cette présentation sous forme de colonnes. Toi aussi, je crois.

    2) l'implication mathématique. Qui est un cas particulier de l'implication logique. Mais on la confond aussi avec la troisième implication que l'on nomme "modus ponens", d'où une ambiguïté sur son interprétation.
    Ici, l'implication est nécessairement vrai. C'est l'hypothèse de la définition mathématique.
    Mais à l'inverse du Modus Ponens, il n'y a aucune déducrion à faire. On se retrouve avec trois résultats que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      A  |   B  || A => B |
    =====+======++========+
    Faux | Faux ||  Vrai  |
    Faux | Vrai ||  Vrai  |
    Vrai | Vrai ||  Vrai  |
    Celle où justement l'implication est vrai.

    3) le Modus ponens qui est un raisonnement logique basé sur l'opérateur implication et qui se traduit par "si A alors B".
    Là encore, aucune ambiguïté car cela se traduit par : "A est vrai, A => B est vrai, je déduis alors que B esr Vrai".
    Cela se traduit par le tableau suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      A  |   B  || A => B |
    =====+======++========+
    Vrai | Vrai ||  Vrai  |
    Voici un lien qui explique le problème et la confusion que l'on fait en mathématique de ce que l'on nomme parfoit à tort l'implication : http://xn--georges-barthlemy-ntb.fr/...A9matiques.pdf
    Ou bien devrais-je plutôt dire, que son enseignement porte parfois à confusion.

    Citation Envoyé par Fsmrel
    A ceci près que, si j’en crois McGoveran, la « troisième valeur de vérité » de Kleene correspond à la marque I-Mark de Codd (traduisible par « sans objet », « inapplicable »). La marque A-Mark (« inconnu », « applicable ») ne serait donc pas prise en considération par Kleene.
    S'il y a une subtilité, je ne la comprends pas.

    Je vais essayer de mieux me faire comprendre.
    Soit la proposition suivante : "demain, il va pleuvoir". Après un calcul basé sur la météorologie, on trouve que le résultat est de 70%.
    Cela se traduit par 70% il va pleuvoir et 30% il va faire beau. Je suis dans l'incapacité de savoir si je dois prendre mon parapluie pour demain ou pas.
    Nous sommes bien dans un calcul de probabilité et dans une totale indécidabilité sur la certitude du choix à prendre. Et cela répond à une logique ternaire !

    Inversement, le NULL n'est porteur d'aucune information sur la prise de décision à prendre. On ne sait rien à son sujet.

    Citation Envoyé par Fsmrel
    On sort de SQL...
    Tout au contraire, on est au cœur du problème.

    Il est difficile de dire ce qui est correcte ou pas, car chaque SGBD à ses propres spécificités.
    Seul le respect de la norme permet d'avoir un consensus sur ce qu'il faut faire.
    Mais être en conformité avec la norme, n'a pas la garantie d'être dans le respect d'une logique mathématique.

    Citation Envoyé par Fsmrel
    Date nous avertit (page 363 de SQL and Relational Theory, Third Edition) qu’à l’origine SQL a été conçu pour ne pas être plaqué sur l’algèbre relationnelle ou sur le calcul relationnel, estimés trop compliqués pour les utilisateurs que nous sommes
    A bon ????

    Citation Envoyé par Fsmrel
    donc « IN » peut effectivement poser un problème d’interprétation. Néanmoins, on peut l’interpréter comme l’équivalent SQL de l’opérateur d’appartenance à un ensemble « ∈ » (cf. page 91 de l’ouvrage).
    C'est bien le cas. Et pourtant, il ne fonctionne pas comme l'opérateur d'apartenance.
    Dans le cas de la théorie des ensemble, le NULL serait plus un équivalent de l'ensemble vide.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Bug d'affichage non identifié. . .
    Par TheReturnOfMuton dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 21/06/2006, 20h25
  2. Réponses: 4
    Dernier message: 13/05/2006, 11h18
  3. probleme de non identifier (Run On Server) sur tomcat
    Par subzero82 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/05/2006, 19h08
  4. Réponses: 3
    Dernier message: 07/10/2005, 09h34

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