Metadados para o Data Mediator Service
Um DMS (Data Mediator Service) é o componente SDO (Service Data Object) que se conecta ao banco de dados de backend. Ele é criado com metadados específicos de backend. Os metadados definem a estrutura do DataGraph produzida pelo DMS bem como a consulta a ser utilizada no backend.
Os metadados são compostos pelos seguintes componentes:
- Tabela
- Representa uma tabela no banco de dados de destino e é composta pelos
seguintes itens:
- Nome
- É o nome da tabela de banco de dados. Uma tabela também pode ter um nome de propriedade que pode ser utilizado para especificar o nome do DataObject que corresponde a essa tabela. Por padrão, o nome da propriedade é o mesmo nome da tabela.
- Colunas
- O subconjunto de colunas da tabela de banco de dados é retornado do banco de dados. Uma coluna possui um tipo correspondente a um tipo JDBC e pode proibir entradas nulas. Uma coluna possui um nome que corresponde ao nome do banco de dados e um nome de propriedade opcional que identifica o nome da coluna no DataObject. Por padrão, o nome da propriedade é o mesmo nome da coluna no banco de dados.
- Chave Principal
- A coluna (ou colunas) utilizada para identificar exclusivamente uma linha dentro da tabela.Nota: As chaves podem ser compostas de várias colunas. O exemplo a seguir ilustra a criação de uma chave principal composta:
Se uma tabela estiver relacionada a ela e for a tabela-filho, ela utilizará o mesmo método para criar a chave estrangeira para apontar para essa tabela coordenada.Key pk = MetadataFactory.eINSTANCE.createKey(); pk.getColumns().add(xColumn); pk.getColumns().add(yColumn); coordinateTable.setPrimaryKey(pk);
- Chave Estrangeira
- A coluna (ou colunas) utilizada para relacionar a tabela a outra tabela
nos metadados. Existe um mapeamento posicional assumido entre as chaves principais
compostas e as chaves estrangeiras. Por exemplo, se uma tabela-pai tiver uma chave principal
como (x,y) com tipos respectivos (integer, string), espera-se que qualquer chave
estrangeira de indicação também seja (x', y') com tipos respectivos (integer,
string). Nota: As chaves podem ser compostas de várias colunas. O exemplo a seguir ilustra a criação de uma chave estrangeira composta:
Se uma tabela estiver relacionada a ela e for a tabela-filho, ela utilizará o mesmo método para criar a chave estrangeira para apontar para essa tabela coordenada.Key fk = MetadataFactory.eINSTANCE.createKey(); fk.getColumns().add(xColumn); fk.getColumns().add(yColumn); coordinateTable.getForeignKeys().add(fk);
- Tarefas
- Um predicado da cláusula WHERE SLQ (structured query language) que pode ser atribuído com ou sem parâmetros para preenchimento posterior. Ele é incluído na cláusula WHERE da instrução DataGraph SELECT. Ele não é analisado ou interpretado de qualquer maneira; ele é utilizado no estado em que se encontra. Se forem fornecidos parâmetros a serem preenchidos posteriormente, esses parâmetros se tornarão argumentos transmitidos ao JDBC DMS ao obter o DataGraph. Os filtros são utilizados apenas com as consultas geradas. Se houver uma consulta fornecida, os filtros de metadados serão ignorados.
- Relacionamento
- Relaciona duas tabelas por meio da chave principal da tabela-pai e a
chave estrangeira da tabela-filho. Os relacionamentos são compostos dos
seguintes itens:
- Nome
- Esse é o nome atribuído ao relacionamento, geralmente associado a como as duas tabelas estão relacionadas. Se os Clientes forem a tabela-pai e os Pedidos forem a tabela filho, o nome padrão do relacionamento será Customers_Orders.
- Nome Oposto
- É o nome utilizado para navegar do DataObject filho para o DataObject pai.
- Chave-pai
- A chave principal da tabela-pai.
- Chave-filho
- A chave estrangeira da tabela-filho que aponta para a chave-pai.
- Exclusivo
- Por padrão, um Relacionamento faz com que a consulta gerada utilize uma operação de junção interna nas duas tabelas envolvidas no relacionamento. Isso significa que ele retorna apenas entradas pai que possuem filhos, ou seja, entradas filhos que apontam para eles. Se o valor do atributo Exclusive for definido como false, a consulta utilizará a operação de junção externa à esquerda em substituição e retornará todas as entradas pai, mesmo as que não possuem filho.
- Classificação
- Colunas utilizadas para classificar as tabelas. Podem ser ascendente ou descendente. Quando especificadas, isso faz com que as consultas geradas contenham uma cláusula ORDER BY.