Généalogie & SQL Atelier du Centre Généalogique des Côtes-d’Armor
💾 Exporter
1 clic : la fiche  ·  double-clic : centrer l’arbre  ·  2 personnes cliquées : leur lien de parenté s’illumine
📋 Aide-mémoire : les 3 tables de la base

personnes

  • id — identifiant unique
  • prenom, nom, sexe'M' ou 'F'
  • sosa — n° d’ancêtre (NULL si hors ascendance)
  • pere_id, mere_idpersonnes.id
  • date_naissance, date_deces'AAAA-MM-JJ', NULL si inconnu
  • lieu_naissance_id, lieu_deces_idlieux.id
  • profession

mariages

  • id
  • epoux_id, epouse_idpersonnes.id
  • date_mariage — NULL si inconnue
  • lieu_idlieux.id

lieux

  • id
  • commune
  • departement'22', '35'
  • region, pays
Démarrage rapide :
✂️ Ctrl+Entrée n’exécutera que le texte sélectionné

Les résultats de vos requêtes s’afficheront ici, dans leur propre panneau : l’éditeur, lui, ne bouge jamais.
Astuce : si l’arbre vous manque après un DELETE malheureux, le bouton 🔄 Réinitialiser vous rend la famille au complet.

📖 Un atelier à double sens

Ce site sert deux apprentissages à la fois. Aux généalogistes du CG22, il offre une vraie base de données à interroger : chaque requête SQL de la console travaille sur un arbre breton bien réel, les ascendants de Ronan Le Goff (l’arbre familial tenu sur Geneanet par sa mère Marielle), entre Trégor et presqu’île de Crozon — 1 261 personnes, 662 mariages, 16 générations. Aux informaticiens, il montre comment se construit réellement un arbre généalogique : numérotation Sosa, implexe, remariages… tout y est.

🔒 Les personnes vivantes de l’arbre restent discrètes : l’export Geneanet masque leurs dates et détails — c’est la règle du jeu dès qu’on publie de la généalogie contemporaine. Deux grands-parents n’ont pas pu être nommés : leur prénom est « ? ».

Et surtout : chaque visiteur travaille sur sa propre copie de la base. Vous pouvez tout modifier, tout supprimer, tout casser — le bouton 🔄 Réinitialiser restaure la base d’exemple en une seconde, et vos voisins d’atelier ne verront jamais vos expériences.

🌳 Comment se construit un arbre

Tout arbre généalogique part d’une personne, la racine (les généalogistes disent le de cujus). Ici c’est Ronan Le Goff. À partir de lui, deux directions :

  • l’ascendance : ses parents, grands-parents, arrière-grands-parents… Le nombre de places double à chaque génération : 2 parents, 4 grands-parents, 8, 16, 32… C’est l’éventail qui s’ouvre vers le haut de l’arbre ;
  • la descendance : ses enfants, petits-enfants… vers le bas.

La page 🌳 L’arbre affiche les deux à la fois (une vue « en sablier ») autour de la personne de votre choix : double-cliquez n’importe qui pour recentrer l’arbre sur lui. Dans la base de données, ce double lien tient en deux colonnes : chaque personne a un pere_id et un mere_id. C’est tout — et cela suffit à reconstruire l’arbre entier.

🔢 La numérotation Sosa-Stradonitz

Comment s’y retrouver quand les ancêtres se comptent par dizaines ? Depuis le XVIIe siècle, les généalogistes numérotent l’ascendance avec la méthode Sosa-Stradonitz :

  • la racine porte le numéro 1 ;
  • le père d’une personne n porte le numéro n × 2, sa mère le numéro n × 2 + 1 ;
  • donc les hommes ont des numéros pairs, les femmes des numéros impairs (sauf la racine) ;
  • chaque génération occupe une plage : 2–3 les parents, 4–7 les grands-parents, 8–15, 16–31, etc.
SosaQuiDans la famille Le Goff
1la racineRonan Le Goff
2son pèreJean-Michel Le Goff
3sa mèreMarielle Le Goff
6père de la mèreFrançois Le Goff
7mère de la mèreGermaine Bathany
8père du père du pèreLouis Marie Le Goff (1904)
9mère du père du pèreCélina Maria Raoul (1907)

💡 Le numéro Sosa se lit comme un chemin en binaire : 9 = 1001 en base 2, soit, en partant de la racine et en ignorant le premier chiffre : père (0), père (0), mère (1) — Célina est bien la mère du père du père de Ronan. Dans la base, la colonne sosa de la table personnes vaut NULL pour tous ceux qui ne sont pas des ancêtres directs.

♻️ L’implexe : quand les branches se rejoignent

En théorie, on a 32 ancêtres à la génération 5. En pratique, souvent moins ! Dans les campagnes d’autrefois, on se mariait au bourg voisin : des cousins plus ou moins éloignés finissaient par s’épouser, et un même ancêtre apparaît alors dans plusieurs branches de l’arbre. C’est l’implexe.

Notre arbre en contient plusieurs — en voici un, cherchez-le : deux sœurs, Marie Yvonne (sosa 49) et Marie Anne Le Du (sosa 53), ont épousé l’une un Le Goff, l’autre un Le Caer. Ronan descend des deux couples. Résultat : leurs parents, François Marie Le Du et Marie Joseph Le Jean, occupent chacun deux numéros Sosa : 98 et 106 pour lui, 99 et 107 pour elle. Dans l’arbre, leurs cases portent un badge doré ; dans la base, la colonne sosa garde le plus petit des deux numéros.

🔍 À la leçon « WITH RECURSIVE », vous écrirez la requête qui détecte l’implexe toute seule.

💍 Mariages et remariages

Pourquoi une table mariages séparée, plutôt qu’une colonne « conjoint » dans personnes ? Parce qu’une personne peut se marier plusieurs fois — c’était même très courant autrefois, où l’on se remariait vite après un veuvage.

Exemple dans la famille : Charlotte Ollivier-Henry (sosa 519) épouse François Coualan en 1718 à Ploëzal, puis se remarie en 1731 avec Jean Le Fichant — et c’est de cette seconde union que descend Ronan. Une ligne par union dans la table mariages, et tout est dit : c’est exactement le genre de situation qu’une base de données bien conçue représente sans effort.

🧬 Cousins et degrés de parenté

Deux personnes sont parentes « par le sang » si elles ont un ancêtre commun. Tout le vocabulaire découle de la distance à cet ancêtre :

  • même père et même mère → frères et sœurs (un seul parent commun → demi-frère, demi-sœur) ;
  • grands-parents communs → cousins germains ;
  • arrière-grands-parents communs → cousins issus de germain ;
  • décalage d’une génération (l’enfant de votre cousin germain) → cousin « à la mode de Bretagne » — l’expression est officielle, et de chez nous !

Le degré civil compte simplement le nombre de liens qui remontent puis redescendent : cousins germains = 4e degré (2 en montée + 2 en descente).

✨ Dans la page 🌳 L’arbre, cliquez deux personnes l’une après l’autre : les branches qui les relient s’illuminent, l’ancêtre commun est encadré, et le lien est nommé (cousine issue de germaine, grand-oncle…). C’est le meilleur moyen de « voir » ces définitions.

🗄️ Sous le capot : la base de données

Trois tables seulement (regardez l’aide-mémoire de la console) :

  • personnes — une ligne par individu ; pere_id et mere_id pointent vers d’autres lignes de la même table (d’où les « self-jointures » des leçons) ;
  • mariages — une ligne par union, avec epoux_id et epouse_id ;
  • lieux — les communes, référencées par les naissances, décès et mariages.

Deux idées importantes de modélisation :

  • NULL = « on ne sait pas ». Une date de décès NULL, c’est une personne vivante… ou un acte jamais retrouvé. Un pere_id NULL, c’est une filiation inconnue — le « mur » bien connu des généalogistes. Un arbre réel comme le nôtre en est plein.
  • On ne stocke pas ce qui se déduit. Pas de colonne « enfants » : les enfants de Ronan, ce sont les lignes dont pere_id = 1. Pas de colonne « âge » : il se calcule. Une donnée stockée deux fois finit toujours par se contredire.

📦 Pour aller plus loin : le format d’échange universel entre logiciels de généalogie s’appelle GEDCOM (fichiers .ged). Son modèle ressemble beaucoup au nôtre : des individus, des familles qui les relient, des lieux et des sources.

📜 Et les vraies recherches ?

Un bac à sable, c’est pour apprendre sans risque. Les vraies données, elles, se trouvent dans les registres paroissiaux (baptêmes, mariages, sépultures — les « BMS », tenus par les curés jusqu’en 1792) puis dans l’état civil. Pour les Côtes-d’Armor, les Archives départementales les ont numérisés, et le CG22 publie relevés et entraides. Chaque information d’un arbre sérieux cite sa source : l’acte, sa cote, sa date — d’ailleurs, à la leçon « CREATE TABLE », vous créerez vous-même une table sources.

Ajouter un proche

Le serveur exécutera un INSERT (requête préparée) et vous montrera le SQL utilisé — c’est la leçon « injection SQL » en pratique.