INF02 – BD2 - f-origin.hypotheses.org fileIndicateurs globaux • Points de vue sur une table –...

43
INF02 – BD2 Organisa(on des ressources & accès aux ressources Benoît Habert

Transcript of INF02 – BD2 - f-origin.hypotheses.org fileIndicateurs globaux • Points de vue sur une table –...

INF02 – BD2 Organisa(on  des  ressources  

&  accès  aux  ressources Benoît Habert

BD 2

•  Calculer des informations globales sur une table

•  Regrouper des lignes •  Types d’attributs et opérateurs

spécifiques •  Prendre en compte les valeurs

inconnues : NULL

B. Habert 2012 Organiser les ressources - BD2 2

Indicateurs globaux

•  Points de vue sur une table – Des lignes une à une – Un ensemble de lignes – Des regroupements de lignes

•  On va utiliser ces deux (nouveaux) points de vue

B. Habert 2012 Organiser les ressources - BD2 3

Indicateurs globaux •  Indications globales pour une table ou une partie

de table (après une restriction), considérée comme un groupe – Nombre de lignes – Selon le type d’attribut : minimum,

maximum… – Sur des valeurs numériques : moyenne, écart-

type… •  Résultat : une table dont la ligne unique fournit

les indications souhaitées B. Habert 2012 Organiser les ressources - BD2 4

Indicateurs globaux

PAR GROUPE( NOMBRE DE LIGNES() TITRE ’Nbre inf.’ )[infirmieres] SELECT COUNT(*) AS ’Nbre inf . ’ FROM infirmieres B. Habert 2012 Organiser les ressources - BD2 5

Indicateurs globaux

RESTRICTION(service = ’Jour’)[infirmieres] | PAR GROUPE( NOMBRE DE LIGNES() TITRE ’Nbre inf. jour’ )[<résultat1>] SELECT COUNT(*) AS ’Nbre inf . jour ’ FROM infirmieres WHERE service = ’Jour ’ ; B. Habert 2012 Organiser les ressources - BD2 6

Indicateurs globaux

RESTRICTION(service = ’Nuit’)[infirmieres] | PAR GROUPE( NOMBRE DE LIGNES() TITRE ’Nbre inf. nuit’ )[<résultat1>] SELECT COUNT(*) AS ’Nbre inf . nuit ’ FROM infirmieres WHERE service = ’Nuit ’ ; B. Habert 2012 Organiser les ressources - BD2 7

Indicateurs globaux RESTRICTION(service PARMI (’Nuit’, ’Jour’))[infirmieres] | PAR GROUPE( NOMBRE DE LIGNES() TITRE ’Nbre inf. jour + nuit’ )[<résultat1>] SELECT COUNT(*) AS ’Nbre inf . jour + nuit ’ FROM infirmieres WHERE service IN ( ’Jour’ , ’Nuit’ ) ;

B. Habert 2012 Organiser les ressources - BD2 8

Indicateurs globaux

PAR GROUPE( MINIMUM(jour_naissance) TITRE ’Début étude’, MAXIMUM(jour_naissance) TITRE ’fin étude’ )[bebes] SELECT MIN( jour_naissance ) AS 'Début étude', MAX( jour_naissance ) AS 'fin étude' FROM `bebes` ; B. Habert 2012 Organiser les ressources - BD2 9

Indicateurs globaux RESTRICTION(service = ’Jour’)[infirmieres] | PAR GROUPE( NOMBRE DE LIGNES() TITRE ’Nbre inf. jour’, MINIMUM(age) TITRE ’âge min.’, MAXIMUM(age) TITRE ’âge max.’, MOYENNE(age) TITRE ’âge moy.’, MINIMUM(anciennete) TITRE ’anc. min.’, MAXIMUM(anciennete) TITRE ’anc. max.’, MOYENNE(anciennete) TITRE ’anc. moy.’ )[<résultat1>]

B. Habert 2012 Organiser les ressources - BD2 10

Indicateurs globaux SELECT COUNT( * ) AS ’Nbre inf. jour’ , MIN( age ) AS ’ âge min. ’ , MAX( age ) AS ’ âge max. ’ , FORMAT(AVG( age ) , 2) AS ’ âge moy. ’ , MIN( anciennete ) AS ’anc . min. ’ , MAX( anciennete ) AS ’anc . max. ’ , FORMAT(AVG( anciennete ) , 2) AS ’anc . moy. ’ FROM infirmieres WHERE service = 'Jour' ;

B. Habert 2012 Organiser les ressources - BD2 11

Indicateurs globaux RESTRICTION(service = ’Jour’)[infirmieres] | PAR GROUPE( NOMBRE DE LIGNES(), MINIMUM(age), MAXIMUM(age), MOYENNE(age), ÉCART-TYPE(age), )[<résultat1>]

B. Habert 2012 Organiser les ressources - BD2 12

Indicateurs globaux SELECT COUNT(*) , MIN( age ) , MAX( age ) , AVG( age ) , STD( age ) FROM infirmieres WHERE service = ’Jour ’ ;

B. Habert 2012 Organiser les ressources - BD2 13

Indicateurs globaux RESTRICTION(service = ’Jour’)[infirmieres] | PAR GROUPE( NOMBRE DE LIGNES() TITRE ’Nbre inf. jour’, MINIMUM(age) TITRE ’âge min.’, MAXIMUM(age) TITRE ’âge max.’, MOYENNE(age) TITRE ’âge moy.’, ÉCART -TYPE(age) TITRE ’écart-type âge’, )[<résultat1>]

B. Habert 2012 Organiser les ressources - BD2 14

Indicateurs globaux SELECT COUNT(*) AS ’Nbre inf . jour ’ , MIN( age ) AS ’ âge min. ’ , MAX( age ) AS ’ âge max. ’ , FORMAT(AVG( age ) , 2) AS ’ âge moy. ’ , FORMAT(STD( age ) , 2) AS ’ écart−type âge ’ FROM infirmieres WHERE service = ’Jour ’ ;

B. Habert 2012 Organiser les ressources - BD2 15

Indicateurs globaux

•  On distinguera soigneusement –  NOMBRE DE LIGNES() qui compte le nombre de

lignes –  NOMBRE DE VALEURS DISTINCTES(<attribut>) qui

compte le nombre de valeurs distinctes de l’attribut mentionné.

•  En SQL –  COUNT(*) –  COUNT(DISTINCT <attribut>)

B. Habert 2012 Organiser les ressources - BD2 16

Indicateurs globaux RESTRICTION(service = ’Jour’)[infirmieres] | PAR GROUPE( NOMBRE DE LIGNES(), NOMBRE DE VALEURS DISTINCTES(age) )[<résultat1>] SELECT COUNT(*), COUNT(DISTINCT age ) FROM infirmieres WHERE service = ’ Jour ’ ;

B. Habert 2012 Organiser les ressources - BD2 17

Indicateurs globaux RESTRICTION(service = ’Jour’)[infirmieres] | PAR GROUPE( NOMBRE DE LIGNES() TITRE ‘Infirmières de jour’, NOMBRE DE VALEURS DISTINCTES(age) TITRE ‘âges différents’ )[<résultat1>] SELECT COUNT(*) AS ’ Infirmières de jour ’ , COUNT(DISTINCT age ) AS ’ âges différents ’ FROM infirmieres WHERE service = ’ Jour ’ ;

B. Habert 2012 Organiser les ressources - BD2 18

Indicateurs globaux RESTRICTION(service = ’Nuit’)[infirmieres] | PAR GROUPE( NOMBRE DE LIGNES() TITRE ’Nbre inf. nuit’, MINIMUM(age) TITRE ’âge min.’, MAXIMUM(age) TITRE ’âge max.’, MOYENNE(age) TITRE ’âge moy.’, MINIMUM(anciennete) TITRE ’anc. min.’, MAXIMUM(anciennete) TITRE ’anc. max.’, MOYENNE(anciennete) TITRE ’anc. moy.’ )[<résultat1>]

B. Habert 2012 Organiser les ressources - BD2 19

Indicateurs globaux SELECT COUNT( * ) AS ’Nbre inf. nuit’ , MIN( age ) AS ’ âge min. ’ , MAX( age ) AS ’ âge max. ’ , FORMAT(AVG( age ) , 2) AS ’ âge moy. ’ , MIN( anciennete ) AS ’anc . min. ’ , MAX( anciennete ) AS ’anc . max. ’ , FORMAT(AVG( anciennete ) , 2) AS ’anc . moy. ’ FROM infirmieres WHERE service = ’Nuit' ;

B. Habert 2012 Organiser les ressources - BD2 20

Indicateurs globaux Entrées du calcul d’indicateurs globaux (inf. de nuit)

Résultats

B. Habert 2012 Organiser les ressources - BD2 21

Indicateurs globaux

•  Des indicateurs qui permettent de faire sens

B. Habert 2012 Organiser les ressources - BD2 22

Regroupements TRI SUR(service)[infirmieres] SELECT * FROM infirmieres ORDER BY service ; •  Les groupes sont

matérialisés par des couleurs différentes de lignes

B. Habert 2012 Organiser les ressources - BD2 23

Regroupements REGROUPER SUR(service)[infirmieres] SELECT * FROM infirmieres GROUP BY service ;

Première ligne de chaque groupe

B. Habert 2012 Organiser les ressources - BD2 24

Regroupements REGROUPER SUR(service)[infirmieres] PAR GROUPE( service TITRE ’Service’, NOMBRE DE LIGNES() TITRE ’nbre’, MINIMUM(age) TITRE ’âge min.’, MAXIMUM(age) TITRE ’âge max.’, MOYENNE(age) TITRE ’âge moy.’, MINIMUM(anciennete) TITRE ’anc. min.’, MAXIMUM(anciennete) TITRE ’anc. max.’, MOYENNE(anciennete) TITRE ’anc. moy.’ )[<résultat1>]

B. Habert 2012 Organiser les ressources - BD2 25

Regroupements SELECT service AS ’ Service ’ , COUNT(*) AS ’nbre ’ , MIN( age ) AS ’ âge min. ’ , MAX( age ) AS ’ âge max. ’ , FORMAT(AVG( age ) , 2) AS ’ âge moy. ’ , MIN( anciennete ) AS ’anc . min. ’ , MAX( anciennete ) AS ’anc . max. ’ , FORMAT(AVG( anciennete ) , 2) AS ’anc . moy. ’ FROM infirmieres GROUP BY service ;

B. Habert 2012 Organiser les ressources - BD2 26

Regroupements REGROUPER SUR(sexe)[bebes] PAR GROUPE( sexe TITRE ’Sexe’, NOMBRE DE LIGNES() TITRE ’nbre’, NOMBRE DE LIGNES() / 121 * 100 TITRE ’%’ )[<résultat1>]

B. Habert 2012 Organiser les ressources - BD2 27

Regroupements SELECT sexe AS ’Sexe ’ , COUNT( * ) AS ’nbre ’ , COUNT( * ) / 121 * 100 AS ’ %’ FROM bebes GROUP BY sexe ;

B. Habert 2012 Organiser les ressources - BD2 28

Regroupements REGROUPER SUR(etat_j3)[bebes] PAR GROUPE( etat_J3, NOMBRE DE LIGNES() TITRE ’nbre’, NOMBRE DE LIGNES() / 121 * 100 TITRE ’%’ )[<résultat1>]

B. Habert 2012 Organiser les ressources - BD2 29

Regroupements SELECT etat_J3 , COUNT( *) AS ’nbre ’ , FORMAT(COUNT(*) / 121 * 100, 2) AS ’ %’ FROM bebes GROUP BY etat_j3 ;

B. Habert 2012 Organiser les ressources - BD2 30

Regroupements REGROUPER SUR(sexe, etat_j3)[bebes] | PAR GROUPE( sexe TITRE ’Sexe’, etat_J3, NOMBRE DE LIGNES() TITRE ’nbre’, NOMBRE DE LIGNES() / 121 * 100 TITRE ’%’ )[<résultat1>]

B. Habert 2012 Organiser les ressources - BD2 31

Regroupements SELECT sexe AS ’Sexe ’ , etat_J3 , COUNT( * ) AS ’nbre ’ , FORMAT(COUNT( * ) / 121 * 100, 2) AS ’ %’ FROM bebes GROUP BY sexe , etat_j3 ;

B. Habert 2012 Organiser les ressources - BD2 32

Regroupements REGROUPER SUR(etat_j3, sexe)[bebes] | PAR GROUPE( sexe TITRE ’Sexe’, etat_J3, NOMBRE DE LIGNES() TITRE ’nbre’, NOMBRE DE LIGNES() / 121 * 100 TITRE ’%’ )[<résultat1>]

B. Habert 2012 Organiser les ressources - BD2 33

Regroupements SELECT sexe AS ’Sexe ’ , etat_J3 , COUNT( * ) AS ’nbre ’ , FORMAT(COUNT( * ) / 121 * 100, 2) AS ’ %’ FROM bebes GROUP BY etat_j3, sexe ;

B. Habert 2012 Organiser les ressources - BD2 34

Regroupements Regroupement sur sexe puis etat_J3

Regroupement sur etat_J3 puis sexe

B. Habert 2012 Organiser les ressources - BD2 35

Regroupements •  Table = ensemble d’entités de premier

niveau •  Regroupements = ensemble d’entités de

deuxième niveau •  Groupe = entités ayant mêmes valeurs

pour les attributs sélectionnés •  Les regroupements favorisent

– Les généralisations – Le raisonnement inductif

B. Habert 2012 Organiser les ressources - BD2 36

Regroupements REGROUPER SUR(id_infirmiere)[fiches_originelles] | PAR GROUPE( id_infirmiere TITRE ’Infirmière’, NOMBRE DE LIGNES() TITRE ’nbre fiches’, NOMBRE DE VALEURS DISTINCTES(id_bebe), SOMME(LONGUEUR(texte)) / NOMBRE DE LIGNES() TITRE ’nbre moy. car.’ )[<résultat1>] TRI DESCENDANT SUR(’nbre moy. car.’)[<résultat2>] NB : la table fiches_originelles comprend la signalétique et le texte

B. Habert 2012 Organiser les ressources - BD2 37

Regroupements Nombre moyen de caractères / fiche par inf.

2 infirmières proches mais de prolixité différente

B. Habert 2012 Organiser les ressources - BD2 38

Regroupements

B. Habert 2012 Organiser les ressources - BD2 39

Gérer l’inconnu : NULL

RESTRICTION(service = NULL)[infirmieres] retourne la table vide •  NULL n’est même pas égal à lui-même •  Il marque l’absence de valeur (temporaire

ou non) •  D’où des opérateurs spécifiques

B. Habert 2012 Organiser les ressources - BD2 40

Gérer l’inconnu : NULL RESTRICTION(service <> ’Jour’)[infirmieres] | PAR GROUPE( NOMBRE DE LIGNES() TITRE ’Nbre inf. <> jour’ )[<résultat1>] SELECT COUNT( * ) AS ’Nbre inf . <> jour ’ FROM infirmieres WHERE service <> ’ Jour ’ ; •  NULL suppose des précautions pour être pris en compte dans les

regroupements

B. Habert 2012 Organiser les ressources - BD2 41

Gérer l’inconnu : NULL

•  Dans les fiches, on a noté 0 quand l’infirmière avait oublié de fournir le poids du bébé

•  Cette convention (à la place de NULL) – Sous-estime de 9 à 15 grammes la moyenne

réelle – Sur-estime la dispersion autour de cette

moyenne •  NULL : compliqué mais nécessaire B. Habert 2012 Organiser les ressources - BD2 42

Gérer l’inconnu : NULL

B. Habert 2012 Organiser les ressources - BD2 43