Résumé

Dans cet article on propose un squelette de modélisation pour un dépôt de données hétérogènes.

Spécifications Générales Fonctionnelles

On veut gérer un dépôt de données hétérogènes. Une donnée peut représenter un client, un article, une adresse, etc... Une modélisation orientée objet donnerait une classe de base Donnée, et des classes dérivée Client, Article, Adresse, etc...

Par gérer les données, on comprendra créer, modifier, voir en détail, supprimer une donnée (liste non exhaustive). Une donnée comportera aussi des méta-informations, comme des dates de validités par exemple, ou encore des états (flags, par exemple un état valide, publié, supprimé, etc...).

Modélisation du dépôt

Avertissement

Le modèle proposé est un squelette qui doit être ensuite adapté aux besoins réels et aux données stockées.

La liste des tables modélisées

On modélisera 2 tables :

  • Donnée, qui représentera une donnée en générale.
  • Entité, qui représente une classe de données spécifique.

Identification et lien entre les tables

Chaque table disposera d'un identifiant système SID qui sera la clé primaire. On définira 2 séquences, SequenceIdentifiantDonnee et SequenceIdentifiantEntite qui permettront de calculer l'identifiant d'une nouvelle ligne.

À partir d'une ligne de Donnée, on doit pouvoir déterminer la table et la ligne pour récupérer les données spécifiques de Entité. La table Donnée contiendra donc un champ Type et CID.

On peut aussi vouloir identifier une ligne de Donnée à partir d'une ligne de Entité. En particulier lorsq'une entité dispose d'informations spécifiques pour l'identifier (cas de la reprise d'un modèle). La table Entité contiendra donc un champ PID.

Modèlisation de la table Donnée
Colonne Type Gestion Commentaires
SID Nombre Entier SID > 0 Utiliser la valeur de la séquence SequenceIdentifiantDonnee à la création d'une nouvelle ligne
TYPE 32 caractères /[0-9A-Za-z]+/ Valeur permettant de déterminer le nom de la table Entité
CID Nombre Entier CID > 0 CID correspond à la ligne de la table Entité (fonction de Donnée.TYPE) telle que Donnée.TYPE = Entité.SID
Modèlisation de la table Entité
Colonne Type Gestion Commentaires
SID Nombre Entier SID > 0 Utiliser la valeur de la séquence SequenceIdentifiantEntite à la création d'une nouvelle ligne
PID Nombre Entier PID > 0 PID correspond à la ligne de la table Donnée telle que Entité.PID = Donnée.SID
NB : Tests d'intégrité
Lignes erronées de la table Donnée.
Une ligne de Donnée est erronée si a valeur Donnée.CID ne correspond à aucune valeur Entité.SID.
where not CID in (select SID from )]]>
Lignes erronées de la table Entité.
Une ligne de Entité est erronée si a valeur Entité.PID ne correspond à aucune valeur Donnée.SID.
where not PID in (select SID from )]]>
NB : Modélisation d'un méta-modèle

Une implémentation triviale pour le type de donnée (Donnée.TYPE) est d'utiliser le nom de la table Entité. On peut aussi vouloir atteindre une certaine indépendance vis-à-vis de l'implémentation, auquel cas il faut créer un méta-modèle.

Exemple de modélisation du méta-modèle
Colonne Type Gestion Commentaires
TYPE 32 caractères /[0-9A-Za-z]+/ Valeur permettant de déterminer le nom de la table Entité
TABLE 256 caractères Non vide Cette donnée DOIT correspondre à un nom de table existant et respectant le modèle Entité
NB : Reprise d'un modèle existant

Dans le cas d'une reprise d'un modèle existant, il se peut qu'une donnée puisse être identifiée de manière unique par une autre information ou un autre ensemble d'informations. Ces informations ne seront pas utilisée comme clé primaire, cependant, on rajoutera les contraintes d'unicités adéquates liées à ces informations. La raison de ce choix est d'unifier l'accès aux données spécifiques d'une entité.

À suivre