Schéma : world

world, relationnel, pattes de corbeau, crowfoot

world
crowfoot
DDL
Published

September 20, 2024

Présentation du schéma world, pour l’entrainement à PostGres.

Créé avec DbSchema

Contexte

world est un schéma formé par trois tables country, city et countrylanguage. Les instances de ce schéma sont censées fournir des données de géographie politique : un état du monde à une date donnée.

La table country nous renseigne sur les états reconnus (à l’ONU) et sur des territoires jugés plus ou moins autonomes Dépendances, Territoires non autonomes

La table city nous renseigne sur les villes les plus importantes de chaque territoire.

Latable countrylanguage nous indique quelles langues sont parlées dans quels pas.

L’instance du schéma utilisée donne une idée du monde au début des années 2000.

Diagrammme en pattes de corbeau (crowfoot)

Un diagramme en pattes de corbeau est formé par les tables (pour chaque colonne/attribut, nom et domaine) et des arcs qui décrivent des contraintes référentielles.

Schéma world en pattes de corbeau

Table world.country

Idx Name Data Type Description
* 🔑 ⬋ countrycode char(3) Code ISO à 3 symboles
* name_country text Nom du territoire en Anglais
* continent text
* region text
* surfacearea real Surface en Km2
indepyear smallint Année de fondation/indépendance
* population_country integer Nombre d’habitants
lifeexpectancy real Espérance de vie à naissance
gnp numeric(10,2) PIB (en Millions de USD?)
gnpold numeric(10,2)
* localname text Nom du territoire dans les langues officielles
* governmentform text Type de régime
headofstate text Chef de l’état
capital integer Identifiant (id) de la capitale dans city
* code2 char(2) Code ISO à 2 symboles

gnp est formé par les initiales de Gross National Product (Produit National Brut), un indicateur de revenu défini par les économistes.

lifeexpectancy (espérance de vie à la naissance) est un indicateur de santé publique construit par les démographes. Ce n’est pas l’âge moyen au décès.

Chaque ligne de country est identifiée par la valeur de countrycode. Cet attribut ne peut pas être NULL. Deux lignes distinctes de country ne peuvent coïncider sur l’attribut countrycode.

L’attribut countrycode peut être utilisé pour désigner une ligne de la table country. Cette possibilité est utilisée dans les tables city et countrylanguage

En jargon, l’attribut countrycode sert de clé primaire à la table country

Un extrait de la table concernant les pays de région Western Europe permet de comprendre au moins une partie de la signification et des usages des colonnes

countrycode code2 name_country localname governmentform headofstate capital
NLD NL Netherlands Nederland Constitutional Monarchy Beatrix 5
BEL BE Belgium België/Belgique Constitutional Monarchy, Federation Albert II 179
AUT AT Austria Österreich Federal Republic Thomas Klestil 1523
LIE LI Liechtenstein Liechtenstein Constitutional Monarchy Hans-Adam II 2446
LUX LU Luxembourg Luxembourg/Lëtzebuerg Constitutional Monarchy Henri 2452
MCO MC Monaco Monaco Constitutional Monarchy Rainier III 2695
FRA FR France France Republic Jacques Chirac 2974
DEU DE Germany Deutschland Federal Republic Johannes Rau 3068
CHE CH Switzerland Schweiz/Suisse/Svizzera/Svizra Federation Adolf Ogi 3248

Foreign Keys (clée étrangères)

La colonne capital ne contient pas les noms de capitale (il existe des territoires sans capitale), elle contient des entiers (ou NULL) qui renvoient à des lignes dans la table city.

Type Name On
country_capital_fkey ( capital ) ref world.city (id)

Constraints

Le domaine de la colonne (de l’atttribut) continent est un type énuméré (défini en extension).

Name Definition
country_continent_check ((continent = ‘Asia’::text) OR (continent = ‘Europe’::text) OR (continent = ‘North America’::text) OR (continent = ‘Africa’::text) OR (continent = ‘Oceania’::text) OR (continent = ‘Antarctica’::text) OR (continent = ‘South America’::text))

Table world.city

Idx Name Data Type
* 🔑 ⬋ id integer
* name text
* ⬈ countrycode char(3)
* district text
* population integer

Chaque ligne de city est identifiée par la valeur de is. Cet attribut ne peut pas être NULL. Deux lignes distinctes de city ne peuvent coïncider sur l’attribut id.

Foreign Keys

La colonne countrycode ne contient pas les noms des pays, mais le code à 3 symboles du territoire où se situe la ville

Type Name On
city_country_fk ( countrycode ) ref world.country (countrycode)

L’extrait suivant correspond au villes du pays nommé France.

id name district population
2974 Paris Île-de-France 2125246
2975 Marseille Provence-Alpes-Côte 798430
2976 Lyon Rhône-Alpes 445452
2977 Toulouse Midi-Pyrénées 390350
2978 Nice Provence-Alpes-Côte 342738
2979 Nantes Pays de la Loire 270251
2980 Strasbourg Alsace 264115
2981 Montpellier Languedoc-Roussillon 225392
2982 Bordeaux Aquitaine 215363
2983 Rennes Haute-Normandie 206229
2984 Le Havre Champagne-Ardenne 190905
2985 Reims Nord-Pas-de-Calais 187206
2986 Lille Rhône-Alpes 184657
2987 St-Étienne Bretagne 180210
2988 Toulon Provence-Alpes-Côte 160639
2989 Grenoble Rhône-Alpes 153317
2990 Angers Pays de la Loire 151279
2991 Dijon Bourgogne 149867
2992 Brest Bretagne 149634
2993 Le Mans Pays de la Loire 146105
2994 Clermont-Ferrand Auvergne 137140
2995 Amiens Picardie 135501
2996 Aix-en-Provence Provence-Alpes-Côte 134222
2997 Limoges Limousin 133968
2998 Nîmes Languedoc-Roussillon 133424
2999 Tours Centre 132820
3000 Villeurbanne Rhône-Alpes 124215
3001 Metz Lorraine 123776
3002 Besançon Franche-Comté 117733
3003 Caen Basse-Normandie 113987
3004 Orléans Centre 113126
3005 Mulhouse Alsace 110359
3006 Rouen Haute-Normandie 106592
3007 Boulogne-Billancourt Île-de-France 106367
3008 Perpignan Languedoc-Roussillon 105115
3009 Nancy Lorraine 103605
3010 Roubaix Nord-Pas-de-Calais 96984
3011 Argenteuil Île-de-France 93961
3012 Tourcoing Nord-Pas-de-Calais 93540
3013 Montreuil Île-de-France 90674

La description des tables country et city n’impose pas que la capitale d’un pays soit une ville située dans ce pays.

Est-ce que cette contrainte devrait être mise en place ?

Table world.countrylanguage

La table countrylanguage nous renseigne sur les langues parlées dans les différents pays.

Idx Name Data Type
* 🔑 ⬈ countrycode char(3)
* 🔑 language text
* isofficial boolean
* percentage real

Un extrait correspondant au pays FRA (France) aide à comprendre

countrycode language isofficial percentage
FRA French t 93.6
FRA Arabic f 2.5
FRA Portuguese f 1.2
FRA Italian f 0.4
FRA Spanish f 0.4
FRA Turkish f 0.4

Les lignes nous renseignent sur 6 langues. Une documentation complète serait nécessaire pour vérifier si le percentage correspond à la proportion d’individus qui déclarent telle ou telle langue comme langue maternelle. On ne sait pas si un individu peut déclarer posséder plusieurs langues.

La documentation d’une base de données ne se réduit pas toujours à un diagramme.

D’après l’instance du schéma world, la seule langue réputée officielle en France est le français.

Qu’est ce qu’une langue officielle ?

Dans la table countrylanguage, l’attribut countrycode renvoie à une ligne de country grâce à l’attribut de même nom dans la table country.

Foreign Keys

Type Name On
countrylanguage_countrycode_fkey ( countrycode ) ref world.country (countrycode)

Dans le schéma world, chaque ligne de countrylanguage est identifiée par les valeurs des colonnes countrycode et language. On parle de clé primaire composée.