Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
intro_histoire_numerique:modele_logique [2020/11/08 00:49] Francesco Beretta |
intro_histoire_numerique:modele_logique [2024/03/04 13:55] (Version actuelle) Francesco Beretta [Le modèle logique ou relationnel] |
||
---|---|---|---|
Ligne 9: | Ligne 9: | ||
- | {{:intro_histoire_numerique:mcd_to_database_example.jpg?300|Exemple de modèle conceptuel}} | + | {{:intro_histoire_numerique:mcd_to_database_example_drawio.jpg?300|Exemple de modèle conceptuel}} |
+ | Modèle conceptuel réalisé avec le logiciel //diagrams.net// (draw.io) (clicker sur le diagramme deux fois pour afficher). Concernant le logiciel, [[http://phn-wiki.ish-lyon.cnrs.fr/doku.php?id=intro_histoire_numerique:modelisation_bases_donnees&#logiciel_pour_realiser_le_modele_conceptuel|voir cette page]]. | ||
+ | |||
+ | |||
+ | Télécharger le {{:intro_histoire_numerique:mcd_to_database_example.drawio.zip|fichier XML au format .drawio ici}} et ouvrez-le dans //diagrams.net//. | ||
\\ | \\ | ||
+ | |||
+ | |||
+ | |||
Ce modèle conceptuel permet de traiter (de manière relativement simple mais efficace) un questionnement relevant de la méthode prosopographique, comprenant ces aspects: | Ce modèle conceptuel permet de traiter (de manière relativement simple mais efficace) un questionnement relevant de la méthode prosopographique, comprenant ces aspects: | ||
* dater et localiser les naissances des personnes (afin de les afficher sur une carte) | * dater et localiser les naissances des personnes (afin de les afficher sur une carte) | ||
* représenter les liens familiaux: parents, fratrie, jumeaux, etc. | * représenter les liens familiaux: parents, fratrie, jumeaux, etc. | ||
+ | * on utilise la classe Union qui représente la relation des parents (mariage, union libre, etc.) donnant lieu aux naissances | ||
+ | * les autres rapports de parentée sont __calculés__ à partir des unions | ||
+ | * les autres rapports de parentée ne doivent pas être renseignés en utilisant la classe union | ||
* gérer les différentes appellations des personnes | * gérer les différentes appellations des personnes | ||
* classifier les personnes avec une classification définie par l'utilisateur (//tags//) | * classifier les personnes avec une classification définie par l'utilisateur (//tags//) | ||
Ligne 54: | Ligne 64: | ||
person(//pk_person//, name, definition, gender, death_date, __fk_birth__, notes) \\ | person(//pk_person//, name, definition, gender, death_date, __fk_birth__, notes) \\ | ||
- | appellation(//pk_appellation//, __pk_person__, name, sources, notes) \\ | + | appellation(//pk_appellation//, __fk_person__, name, sources, notes) \\ |
tag(//pk_tag//, __fk_parent_tag__, name, definition, notes) \\ | tag(//pk_tag//, __fk_parent_tag__, name, definition, notes) \\ | ||
Ligne 104: | Ligne 114: | ||
* choisir le type par dévaut SQLite3 | * choisir le type par dévaut SQLite3 | ||
* appuyer sur le bouton '+' en vert | * appuyer sur le bouton '+' en vert | ||
- | * entrer un nom pour la base de données (sans espaces, seulement avec des '_' entre les paroles, et sans accents), par ex. __prosopographie__ | + | * apparaît cette boîte de dialogue:{{:intro_histoire_numerique:capture_d_ecran_2023-11-02_110119.png?nolink&200|}} |
- | * naviguer vers le dossier 'bases_sqlite' précédemment créé. | + | * naviguer avec le bouton 'Fichier' vers le dossier 'bases_sqlite' précédemment créé. |
+ | * entrer un nom pour la base de données (sans espaces, seulement avec des '_' entre les paroles, et sans accents), par ex. __prosopographie.sqlite__ | ||
* appuyer sur le bouton 'Enregistrer' | * appuyer sur le bouton 'Enregistrer' | ||
* on revient à la boîte de dialogue 'Database', on lit le chemin vers le fichier SQLite et son nom, prosopographie.db, et on valide avec le bounton 'OK'. | * on revient à la boîte de dialogue 'Database', on lit le chemin vers le fichier SQLite et son nom, prosopographie.db, et on valide avec le bounton 'OK'. | ||
Ligne 117: | Ligne 128: | ||
Instructions: | Instructions: | ||
- | * commencer par ajouter des tables qui n'ont pas de clés étrangères, par ex. 'geographical_place_type' | + | * commencer par ajouter des tables qui n'ont pas de clés étrangères qui références des tables externes, par ex. 'geographical_place_type' |
* click droit sur 'Tables' à gauche dans la liste des objets de la base de données et 'Create a table' | * click droit sur 'Tables' à gauche dans la liste des objets de la base de données et 'Create a table' | ||
* insérer le nom de la table | * insérer le nom de la table | ||
Ligne 157: | Ligne 168: | ||
On procède ainsi pour toutes les autres tables. | On procède ainsi pour toutes les autres tables. | ||
+ | |||
+ | * **IMPORTANT** : Traitement des **dates** | ||
+ | * dans une base de données SQLite (sqlite3) le format de DATE n'imposte pas de contrainte précise, ça peut être un chiffre ou une chaine de caractères (cf. [[https://www.w3resource.com/sqlite/sqlite-data-types.php|ces explications]]) | ||
+ | * Si on traite uniquement des dates dans l'Ére commune ou chrétienne (après Jésus-Christ) on peut utiliser la valeur VARCHAR pour les dates, en mettant une limite à 12 charactères et en utilisant le format ISO qui permet les dates tronquées et le tri de type texte: 1900-10-15, 1900-10, 1900. | ||
+ | * Si on a des dates avant l'Ère commune, deux champs sont nécessaires : année (entier avec valeur négatives possible) ; mois-jour si nécessaire (varchar) | ||
+ | * Si on a besoin de heures:minues:secondes les ajoute (dans les deux cas) après le jour, par exemple sous cette forme 1900-10-15T09-10-04 | ||
+ | |||
A noter que on ne pourra pas créer la table 'person' ou 'birth' directement avec toutes les clé étrangères, car 'birth' dépend de 'union' qui dépend à son tour de 'person'. | A noter que on ne pourra pas créer la table 'person' ou 'birth' directement avec toutes les clé étrangères, car 'birth' dépend de 'union' qui dépend à son tour de 'person'. |