Travaillez avec des tableaux liés
Cet exemple présente une technique très puissante qui vous permet de relier un tableau à un autre sans avoir à recourir à des énoncés JOIN. Cette technique sera familière à tous ceux qui ont déjà utilisé des entités auparavant, car elle repose sur le concept simple des propriétés évaluées par l'entité.
La plupart des bases de données relationnelles contiennent des clés étrangères. Lorsque certaines colonnes d'un tableau sont étiquetées comme clés étrangères, elles font référence à la clé primaire d'un autre tableau, créant ainsi une connexion entre deux tableaux. Par exemple, un tableau de commandes peut avoir des clés étrangères par rapport au tableau des clients et des produits, au lieu de répliquer directement les informations sur ces derniers. Prenons une base de données typique avec une structure complexe.
La structure des tableaux reliés par des clés étrangères peut être visualisée sous la forme d'un graphe.
Lors de la création de l'EntityStore correspondant à la RelationalDatabase, certaines propriétés spéciales sont créées avec les clés étrangères.
Jetez un œil aux commandes du type d'entité. La clé étrangère "customerNumber" fait référence au tableau "customers". Le module le reconnaît automatiquement et crée une nouvelle propriété appelée "customers" (soulignée dans les cases récapitulatives) qui renverra les objets Entity. Ainsi, pour chaque entité "orders" il existe une entité "customers" correspondante. Enregistrez l'EntityStore pour le vérifier.
Vous pouvez maintenant appeler EntityValue sur une entité du type "orders".
Le tableau "orders" est la cible d'une clé étrangère provenant des tableaux "orderdetails". Cela a permis au module de créer un mappage inversé du tableau "orderdetails". Ce qui signifie que le type "orders" a une propriété appelée "orderdetails" qui prend les valeurs EntityClass.
Le grand avantage d'avoir ces enveloppements symboliques autour des clés étrangères est qu'on peut enchaîner l'extraction des propriétés dans EntityFunction. Par exemple, commencez à partir d'une entité client, puis vérifiez qui est son représentant commercial et qui est le chef de l'employé en question.
Cela semble très naturel pour tous ceux qui sont habitués à utiliser Wolfram Language, mais cela devient très compliqué si on n'utilise pas ces propriétés spéciales. Ce que l'on devrait normalement faire, c'est de penser à cela en termes d'énoncés JOIN.
Un autre grand avantage de l'utilisation de tableaux liés est que l'on peut aussi les utiliser pour effectuer des agrégations sans penser en termes de requêtes. Par exemple, il s'agit de la valeur totale d'une commande.
La requête équivalente en termes d'agrégations aurait été la suivante.