Le besoin exprimé dans cette PR est de pouvoir traduire dans un schéma de données le fait que deux champs peuvent être mis en relation (du point de vue modèle de données relationnelles) (soit de type one-to-one, soit one-to-many soit many-to-many), pour pouvoir vérifier leur relation par un outil de validation.
Au regard de la PR, selon moi, il n'est pas forcément pertinent de faire évoluer les spécifications de Table Schema pour intégrer la notion de relation entre les champs.
Je rejoins l'avis de pschumm
de l'équipe de frictionless qui mentionne que ce type de relation entre les champs peut être traduit par les propriétés foreignKeys
, primaryKey
, custom_checks
dans le schéma de données et l'implémentation d'un nouveau custom check
.
L'exemple d'implémentation d'outils de contrôl de relation que propose Philippe Thommy consiste à partir d'un jeu de données à :
Ceci étant, je pense qu'il n'est pas forcément pertinent de traduire la validation de cette manière là au travers d'un nouveau custom-check dans Validata.
Le cas d'usage qui me semble intéressant pour Validata est la vérification d'une relation "one-to-one", (par exemple pour un personne donnée il n'existe qu'un seul numéro de sécurité social (et réciproquement)), qui peut déjà être traduit dans le schéma au travers de la propriété foreignKeys
, par exemple :
{
"name": "xxx",
"schema": {
"fields": [
{
"name": "nom"
},
{
"name": "num_sécu_social"
}
],
"foreignKeys": [
{
"fields": "nom"
"reference": {
"resource": "",
"fields": "num_sécu_social"
}
}
]
}
}
Mais la vérification des relations "one-to-many" et "many-to-many" ne semble pas pertinente à être intégrée dans Validata pour l'instant. Je n'ai pas de cas d'usage à ma connaissance pour lesquels Validata aurait une vraie plus-value à intégrer cette validation.