Trabalhe com tabelas vinculadas
Este exemplo mostra uma técnica muito poderosa que permite vincular uma tabela a outra sem precisar recorrer às especificações JOIN. A técnica parecerá familiar para qualquer pessoa que já tenha usado entidades antes, pois se baseia no conceito simples de propriedades com valor de entidade.
A maioria dos bancos de dados relacionais contém chaves estrangeiras. Quando algumas das colunas de uma tabela são marcadas como chaves estrangeiras, elas fazem referência à chave primária de outra tabela, criando assim uma conexão entre duas tabelas. Por exemplo, uma tabela de pedidos de compra pode ter chaves estrangeiras para as tabelas de clientes e produtos, em vez de replicar diretamente informações sobre elas. Considere um banco de dados típico com uma estrutura grande.
A estrutura das tabelas vinculadas através de chaves estrangeiras pode ser visualizada como um gráfico.
Ao construir o EntityStore correspondente ao RelationalDatabase, algumas propriedades especiais são construídas a partir das chaves estrangeiras.
Observe os ordens do tipo de entidade: A chave estrangeira "customerNumber" aponta para a tabela "customers". O framework reconhece automaticamente e cria uma nova propriedade chamada "customers" (sublinhada nas caixas de resumo) que retornará objetos Entity. Dessa forma, para cada entidade de "orders" existe uma entidade "customers" correspondente. Registre o EntityStore para verificar isso.
Agora você pode chamar EntityValue em uma entidade do tipo "orders".
A tabela "orders" é o alvo de uma chave estrangeira das tabelas "orderdetails"; sso permitiu que o framework criasse um mapeamento inverso da tabela "orderdetails", que resulta no tipo "orders" com uma propriedade chamada "orderdetails" que recebe valores EntityClass.
A grande vantagem desse wrapper simbólico em torno de chaves estrangeiras é que você pode concatenar a extração de propriedades em EntityFunction. Por exemplo, comece com uma entidade de cliente e verifique quem é o representante de vendas e quem é o gerente desse funcionário.
Isso parece muito natural para qualquer pessoa familiarizada com a Wolfram Language, mas é muito complicado fazer a consulta sem usar essas propriedades especiais. O que você normalmente faria é imaginar isso na forma de instruções JOIN.
Outra grande vantagem de usar tabelas vinculadas é que também é possível usá-las para realizar agregações sem pensar em termos de consultas. Por exemplo, esse é o valor total de um pedido.
A consulta equivalente em termos de agregações teria sido a seguinte.