• Nenhum resultado encontrado

5. Solução proposta

5.1. LMS Database Explorer

5.1.1. Considerações iniciais

Antes de tratar da apresentação de atributos a serem escolhidos, algumas considerações devem ser feitas sobre os conceitos de relação universal e de atributos derivados, sobre os dados que cada atributo armazena, e sobre a forma de calcular dependências funcionais a partir do esquema e dos dados selecionados pelo usuário.

5.1.1.1. Relação universal

O conceito de relação universal é considerado parte fundamental da solução proposta. De maneira resumida, pode-se definir uma relação universal como uma tabela (relação) hipotética de uma base de dados, contendo todos os atributos de todas as tabelas dessa base. Todas as consultas à base de dados passam a ser feitas não mais a cada tabela

entre o SGBD e a aplicação que o utiliza) converte as consultas feitas à relação universal, de modo que elas sejam definidas em função das tabelas reais da base de dados. Essas conversões podem ser diferentes para uma mesma consulta da relação universal, pois podem considerar diferentes junções das tabelas da base real; isso dá origem a várias interpretações possíveis para uma mesma consulta. Cada interpretação dá origem a uma consulta diferente às tabelas da base de dados real. Alguns algoritmos utilizam heurísticas para selecionar, dentre as interpretações possíveis, aquela que consideram mais simples ou mais aproximada do que o usuário deseja. Maiores detalhes sobre relação universal podem ser vistos no Anexo A.

Apesar de não se ter encontrado na literatura de Bancos de Dados nenhuma informação sobre o uso de conceitos de relação universal para permitir a usuários finais efetuarem consultas a bancos de dados, defende-se nesta tese que esse conceito possa ser utilizado no domínio de EaD, abstraindo do usuário detalhes sobre tabelas e relacionamentos e facilitando assim a definição de consultas.

5.1.1.2. Atributos derivados

Um atributo derivado é definido em Bancos de Dados como um atributo que “pode ser derivado de outros atributos ou entidaddes a ele relacionados” (Silberschatz et al., 1999). Por exemplo, um atributo lucro em uma tabela pode ser calculado a partir de dois outros atributos despesa e receita; assim como um atributo quantidade_de_produtos_vendidos pode ser calculado a partir de uma contagem de tuplas de uma tabela Produtos_Vendidos.

Esta tese, contudo, utiliza uma definição ligeiramente diferente para este termo. Considera-se nesta tese como atributo derivado um atributo gerado no resultado de uma consulta SQL envolvendo agrupamento de linhas (cláusula group by) e funções de agregação sobre um determinado atributo (que, por diferenciação, será chamado de atributo original). Considerando essa definição, os valores desse atributo derivado dependem diretamente de três tipos de elementos: (1) da função de agregação escolhida, que sintetiza o conjunto de valores de um atributo, (2) do atributo original sobre o qual essa função atua, e (3) de atributos que fazem parte da cláusula group by.

5.1.1.3. Categorias de atributos

Na definição do esquema da base de dados, cada atributo é definido como sendo de um domínio específico (char, int, float etc.). Este domínio indica a forma física como o dado será armazenado e como comparações podem ser feitas entre eles. Por exemplo, se 17 e 123 são dois valores de um atributo int, então 17 < 123; mas se forem valores de um atributo char, então “17” > “123” (comparação de strings).

Repare, no entanto, que a definição de domínio de atributo não concede a ele um caráter semântico. Por exemplo, seja A um atributo do domínio int, em cujas tuplas são armazenados valores como 17, 123, 200, 403, etc. Apesar de ser possível comparar esses dados com relação de ordenação, isso não significa que exista de fato algum sentido em comparar esses valores entre si. Perceba que não existe informação em A sobre qual a relação existente entre esses dados; eles podem indicar quantidade de alguma entidade, podem ser dados que representam alguma ordem entre elementos, ou podem até mesmo serem simples códigos sem relação nenhuma entre si.

Essa informação semântica recebe nesta tese o nome de categoria, termo usado por Card et al. (1999) em Visualização de Informação para definir variáveis de dados. Nesta tese serão utilizadas para atributos as mesmas categorias básicas apresentadas sobre variáveis no Capítulo 2: atributos nominais (cujos valores não possuem ordem implícita), atributos ordinais (cujos valores possuem ordem implícita) e atributos quantitativos (sobre os quais se pode fazer operações aritméticas).

Essa informação de categoria de um atributo, que não consta em esquemas de bases de dados, pode ser considerada relevante não apenas para Visualização de Informação, mas também no âmbito de Bancos de Dados. Para Bancos de Dados, a categoria de um atributo determina quais são as funções de agregação que podem ser aplicadas a ele de modo a produzir resultados que realmente apresentam sentido, conforme apresentado na Tabela 5.1 a seguir. Como se pode verificar, essa tabela indica que não faz sentido permitir que se aplique a função max sobre um atributo nominal – como nomes de professores37, por exemplo – ou que se calcule a média sobre eles; ou ainda que se calcule a soma de valores de um atributo que represente a ordem de elementos em uma fila.

Vale notar que quando uma função de agregação dá origem a um atributo derivado, pode ocorrer que a categoria deste atributo seja diferente da categoria do atributo original. A Tabela 5.2 apresenta quais as categorias de atributos derivados, de acordo com a função de agregação aplicada e com o atributo original.

Tabela 5.1 – Funções de agregação permitidas por categoria de atributo.

Categorias de atributos Funções de

agregação Nominal Ordinal Quantitativa

count permitida permitida permitida

min, max proibida permitida permitida

sum, avg proibida proibida permitida

Tabela 5.2 – Definição de categoria de atributos derivados, de acordo com função de agregação.

Categorias dos atributos Função de agregação

Atributo original Atributo derivado

count (Qualquer) Quantitativa

Nominal (Não se aplica)

min, max

Ordinal ou quantitativa (Mantém categoria)

Nominal ou ordinal (Não se aplica)

sum, avg

Quantitativa (Mantém categoria)