Exemple 3: Table
Cet exemple complète les deux précédents en incluant des références à des champs qui peuvent accepter plus d'une valeur, autrement dit, des tables. Dans cette image du module Personnes / Organisations, nous voyons que le champ Autres Noms (Détails personnels) peut inclure de multiples valeurs :
Autres noms : (Détails personnels) est une table de valeurs (une colonne) et chaque ligne peut contenir un nom. Son nom de champ back-end l'identifie ensuite comme une table grâce à l'ajout du suffixe _tab :
NamOtherNames_tab
Dans cet exemple, nous créons trois enregistrements de Personne dans Personnes / Organisations comprenant les valeurs Rôle et Autres noms (qui sont toutes les deux des tables).
Les champs chargés sont :
Champs |
Nom back-end |
---|---|
Prénom | NamFirst
|
Autre prénom | NamMiddle
|
Nom | NamLast
|
Type personne / organisation | NamPartyType
|
Rôles | NamRoles_tab
|
Autres noms | NamOtherNames_tab
|
Pour des raisons de présentation uniquement, les données d'importation ci-dessous sont présentées avec les titres de colonnes apparaissant verticalement plutôt qu'horizontalement. La première ligne de tout fichier délimité par des tabulations ou virgules doit inclure les noms de colonnes. La disposition appropriée est :
NamPartyType
|
NamFirst
|
NamMiddle
|
NamLast
|
Personne | Joe | J | Jackson |
Personne | Michael
|
Williamson
|
|
Organisation |
Les données d'importation sont :
Nom de colonne (doit apparaître comme première ligne du fichier de données d'importation) |
Enregistrement 1 |
Enregistrement 2 |
Enregistrement 3 |
---|---|---|---|
NamPartyType | Personne | Personne | Personne |
NamFirst | Joe | Michael | Wilbur |
NamMiddle | J | ||
NamLast | Jackson | Williamson | Withers |
NamRoles_tab(1) | Formateur | ||
NamRoles_tab(2) | Professeur | Musicien | |
NamOtherNames_tab(1) | Joey | Mike | |
NamOtherNames_tab(2) | Willo | ||
NamOtherNames_tab(3) | Willy
|
Pour spécifier la première ligne d'une table, le format est :
TableName_tab(1)
Note: Il n'y a pas d'espace entre le nom de la colonne et le nombre entre parenthèses.
est la deuxième ligne est
TableName_tab(2)
Et ainsi de suite.
Dans cet exemple trois enregistrements seraient créés (ou mis à jour). Pour chaque enregistrement, la table Rôles aurait jusqu'à deux entrées (deux lignes) et la table Autres Noms aurait jusqu'à trois lignes.
Mettre à jour des enregistrements incluant des champs de table
L'outil Importer peut être utilisé pour mettre à jour les enregistrements existants dans EMu (détails ici). Attention toutefois aux points suivants :
Note: La table tout entière est remplacée quand on utilise l'outil Importer.
- Dans ce fichier TSV/CSV trois lignes sont spécifiées pour NamOtherNames_tab. L'enregistrement pour Joe Jackson (enregistrement 1) contient uniquement une valeur dans NamOtherNames_tab(1), tandis que NamOtherNames_tab(2) et NamOtherNames_tab(3) sont vides.
S'il existait déjà un enregistrement pour Joe Jackson dans EMu et que celui-ci avait une valeur dans NamOtherNames_tab(1) et une autre dans NamOtherNames_tab(2), la valeur dans NamOtherNames_tab(2) serait écrasée lors de l'importation de ce fichier de données.
- Notez également que si ce fichier de données était importé, l'enregistrement pour Michael Williamson (enregistrement 2) aurait trois lignes dans la table Autres noms.
Si vous mettiez ensuite à jour ces enregistrements avec le fichier de données suivant (c'est-à-dire en excluant NamOtherNames_tab(3)) :
|
|
|
|
|
|
|
|
Personne |
|
|
|
|
|
|
|
Personne |
|
|
|
|
|
|
|
Personne |
|
|
|
|
|
|
|
les valeurs existantes dans in NamOtherNames_tab(3)
seraient perdue.
Le XML pour cet exemple est :
<?xml version="1.0" encoding="UTF-8"?>
<table>
<!-- Premier enregistrement -->
<!--En plus d'inclure des références atomiques pour les valeurs uniques, un tuple (qui, comme nous l'avons vu, désigne un enregistrement unique) peut également inclure une référence table -->
<tuple>
<atom name="NamPartyType">Personne</atom>
<atom name="NamFirst">Joe</atom>
<atom name="NamMiddle">J</atom>
<atom name="NamLast">Jackson</atom>
<!--La table est référencée en utilisant les balises de table-->
<table name="NamRoles_tab">
<!--Un élément table est utilisé pour représenter une table de valeurs. Une valeur peut être atomique, un tuple ou un autre table. Chaque ligne de la table est définie par un tuple. Note : la structure de données des tables dans EMu n’autorise qu'une seule valeur par tuple. Une valeur peut être un atome, un tuple ou une table (voir l'exemple 8). En d'autres termes, un tuple ne peut pas contenir deux atomes. Chaque atome doit être défini par son propre tuple (comme dans cet exemple). Dans cet exemple, deux lignes sont ajoutées à la table Rôles -->
<tuple>
<atom>Formateur</atom>
</tuple>
<tuple>
<atom>Professeur</atom>
</tuple>
</table>
<!--Dans cet exemple, un rang est ajouté à la table Autres Noms-->
<table name="NamOtherNames_tab">
<tuple>
<atom>Joey</atom>
</tuple>
</table>
</tuple>
<!-- Deuxième enregistrement -->
<tuple>
<atom name="NamPartyType">Personne</atom>
<atom name="NamFirst">Michael</atom>
<atom name="NamLast">Williamson</atom>
<table name="NamOtherNames_tab">
<tuple>
<atom>Mike</atom>
</tuple>
<tuple>
<atom>Willo</atom>
</tuple>
<tuple>
<atom>Willy</atom>
</tuple>
</table>
</tuple>
<!--Troisième enregistrement-->
<tuple>
<atom name="NamPartyType">Personne</atom>
<atom name="NamFirst">Wilbur</atom>
<atom name="NamLast">Withers</atom>
<table name="NamRoles_tab">
<!--Même s'il y a des valeurs vides dans une liste de table, le tuple doit être précisé-->
<tuple>
</tuple>
<tuple>
<atom>Musicien</atom>
</tuple>
</table>
</tuple>
</table>