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

Mathématiques Discussion :

Logique non-booleenne (essai)


Sujet :

Mathématiques

  1. #41
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 795
    Par défaut
    Bonjour Artemus24,

    Citation Envoyé par Artemus24 Voir le message
    Ce n'est pas une tautologie mais une redondance linguistique. "Ne pas parler" ne veut pas nécessairement signifier "être muette". Il se peut qu'elle n'a tout simplement rien à dire.
    Une tautologie est une répétition inutile de la même idée (voir https://www.larousse.fr/dictionnaire...utologie/76858). C'est à dire une redondance...
    Etre muette est ici un état permanent, le présent qui suit est donc intemporel a contrario d'un présent contextuel (rien à dire).

    J'en conviens mais il s'agit ici de propositions issues de la logique booléenne et non d'assertion formelles. Donc aucun rapport...
    Faux, car l'auteur ne le précise pas et reste a priori sur des assertions générales. Faux, car même implicite, son centre d'intérêt est une logique ternaire, non booléenne.

    Electronique

    Un fil sans aucune connexion n'a pas d'état car un état est relatif. Il suppose donc au moins une connexion à une référence fût-elle à haute impédance (mais pas infinie).

    Un état indéterminé n'est pas un état. Le terme indéterminé caractérise seulement le fait qu'il n'est pas possible de prévoir lequel des 2 états la lecture fera apparaître. Le fil précédent connectée sur une entrée à haute impédance servira d'antenne et captera ce qui traîne (souvent du 50Hz sous nos latitudes). La lecture sera donc non prévisible tout en restant 1 ou 0. Entre deux lectures, même rapprochées, il n'est alors pas possible de supposer un état qui reste donc indéterminé.

    L'étude des transitions d'un signal (durée, relaxation, fréquence max, phase, etc) s'intéresse à un signal analogique quand bien même il transporterait des informations numériques, car c'est la qualité du signal qui importe alors non son contenu. Ainsi, les principaux appareils utilisés sont oscilloscopes et analyseurs de spectre. L'analyseur logique vient beaucoup plus tard et peut être inefficace si l'étude préalable du signal n'est pas positive.

    Salut

  2. #42
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 243
    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 243
    Billets dans le blog
    16
    Par défaut
    Ave Agent secret,
     
    Citation Envoyé par Artemus24
    La clause where ne retourne que des propositions vrai (TRUE) basée sur des valeurs. Il faut explicitement dire "where col is NULL" pour voir apparaitre les colonnes ayant le marquage NULL.
     
    Euh... SQL Server n’est donc pas conforme. Exemple :
     
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Create Table S
    (    Sno       Integer     Not Null
       , Sname     Varchar(24) Not Null
       , Status    Integer     
       , City      Varchar(24) Not Null
      , Constraint S_PK Primary Key (Sno)
    ) ;  
     
    Insert Into S Values (1, 'Fernand', 20, 'Londres') ;
    Insert Into S Values (2, 'Raoul', NULL, 'Paris') ;
    Insert Into S Values (3, 'Paul', 30, 'Lille') ;
     
    select Status from S where City = 'Paris'

    Au résultat :


  3. #43
    Expert éminent
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 243
    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 243
    Billets dans le blog
    16
    Par défaut Fortuna juvat audaces ?
    Bonsoir,


    Citation Envoyé par tc92
    Sur le fait de s'interdire les valeurs NULL, déclarer (Not Null) pour chaque colonne au moment de la création de la table, ok, pourquoi pas. Je dirais que ça manque un peu d'ambition, mais c'est une stratégie tout à fait valable.
     
    Allons-y pour une stratégie ne manquant pas d’ambition, à savoir autoriser les valeurs marques "NULL". Allons voir du côté de la normalisation des bases de données quelles en sont les conséquences, car la normalisation c’est quand même un sujet important, sur lequel planchèrent moult PhD et autres docteurs ès sciences.

    Voici ce qu’écrit Codd (père du relationnel) dans The Relational Model for Database Management: Version 2 (Reading, Mass.: Addison-Wesley, 1990). :

    « the normalization concepts should be applied to a conceptual version of the database in which rows containing missing-but-applicable information in the pertinent columns have been removed ».

    De fait, si le bonhomme Null traîne ses guêtres dans les tables, tous les théorèmes ‒ et y en a ! ‒ ayant trait à la normalisation sont alors bons pour la poubelle. Il est donc nécessaire de normaliser, tout en interdisant de facto à Null de ficher la patouille dans les tables.

    Prenons par exemple le cas du théorème de Heath, qui dit ceci :

    Si la relation R (A, B, C) satisfait à la dépendance fonctionnelle A B, alors R peut être décomposée sans perte [de contenu] selon ses projections R1 (A, B) et R2 (A, C), c'est-à-dire que l'on peut retrouver R par la jointure naturelle de R1 et de R2 sur A.

    Voyons voir. Soit E {Eno, Dno, Ct} la table des employés d’une entreprise, où :

    Eno représente le numéro de l'employé (clé primaire) ;
    Dno représente le numéro du département ;
    Ct représente le type de contrat.

    Dans l'entreprise, un employé est affecté à un seul département et à un département est affecté un seul type de contrat. Il existe donc notamment les dépendances fonctionnelles suivantes :

    (df1) Eno Dno
    (df2) Dno Ct
    (df3) Eno Ct

    Du fait de la dépendance fonctionnelle df3, la troisième forme normale est violée, la table E doit donc être décomposée en :

    E1 {Eno, Dno}        /* clé primaire Eno */
    E2 {Dno, Ct}         /* clé primaire Dno */

    Maintenant, avant normalisation, polluons la table E avec NULL.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Create Table E
    (    Eno     Varchar(5)    Not Null
       , Dno     Varchar(3) 
       , Ct      Varchar(3)     
      , Constraint E_PK Primary Key (Eno)
    ) ;  
     
    Insert Into E Values
       ('e1', 'd5', 'g')
     , ('e2', NULL, 'g')
     , ('e3', 'd2', 'n')
     , ('e4', 'd3', 'n')
     , ('e5', 'd2', 'n')
     , ('e6', NULL, 'n')
     , ('e7', 'd8', 'g')
    ;
     
    select * from E ;

    Au résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Eno	Dno	Ct
    e1	d5	g
    e2	NULL	g
    e3	d2	n
    e4	d3	n
    e5	d2	n
    e6	NULL	n
    e7	d8	g

    Décomposons E en E1 et E2, et joignons ces deux dernières :


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select distinct  E1.Eno, E1.Dno, E2.ct 
    from 
    (select Eno, Dno from E) as E1
    join 
    (select Dno, Ct from E) as E2
    on E1.Dno = E2.Dno ;

    Au résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Eno	Dno	ct
    e1	d5	g
    e3	d2	n
    e4	d3	n
    e5	d2	n
    e7	d8	g

    Les employés e2 et e6 manquent à l’appel : à cause de NULL, le théorème de Heath est inapplicable et ceci vaut pour l’ensemble des théorèmes ayant trait à la normalisation...

    Bref, comme en 1815, l’ambition peut conduire à l’échec. Cela dit, prudence est mère de sûreté.

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/04/2012, 08h34
  2. Opérateur logique "non logique"
    Par Christophe Charron dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 10/09/2007, 12h30
  3. logique booleennes
    Par numeror dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/02/2006, 08h36
  4. Evalutation d'expression logique/booleenne
    Par eesteban dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 16/06/2004, 14h58

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