Conceitos BDs, SBDs e SGBDs Banco de dados é um conjunto de dados inter-relacionados, ordenados ou não, sobre um determinado domínio. Os dados persistentes são aqueles que devem ir para o BD. Os dados voláteis são só usados em programas. Quando tenho um procedimento para acessar um banco de dados então tenho um Sistema de Banco de dados (ambiente para recuperação e armazenamento de informações). Quando quero colocar esse sistema no computador, então tenho um software que é o SGBD, que permite a definição de estruturas para armazenamento de informações e fornecimento de mecanismos para manipulação de dados. Contexto Horário de aula Para a entidade aluno temos os atributos: RA (primary key), nome e ano de ingresso na Universidade. A entidade disciplina têm os seguintes atributos: nome, número, horário, professor, departamento e número máximo de faltas que um aluno pode ter. O relacionamento entre eles (Aluno-Disciplina) possui cardinalidade 1 para n, partindo do contexto de que se trata de um horário acadêmico um aluno, portanto um aluno pode ter uma ou várias disciplinas (n). Este relacionamento pode ter certos atributos, dependendo do contexto. Se estivermos olhando o contexto de um ano letivo, podemos ter os atributos nota e número de faltas, ou seja, os dois fatores relevantes para aprovação ou reprovação do aluno. Se estivermos olhando o contexto do histórico escolar do aluno na Universidade, é necessário um atributo ano, do qual podemos saber quais disciplinas foram feitas em cada ano letivo. A entidade disciplina têm um relacionamento com a entidade turma, que contém o atributo número, (cada turma de uma respectiva matéria têm um número de identificação), este então é a primary key. Este relacionamento possui um atributo sala, pois para a mesma disciplina podem ter diferentes turmas e cada turma é alojada em uma sala diferente, em um bloco diferente. O relacionamento entre eles (Disciplina-Turma) possui cardinalidade n para 1, partindo do contexto de que uma disciplina pode ter uma ou várias turmas e uma turma diz respeito à somente uma disciplina. Por fim temos o relacionamento entre aluno, disciplina e o curso ao qual eles estão vinculados. O relacionamento Aluno-Curso possui cardinalidade 1 para n, onde um aluno pode fazer parte de apenas um curso e um curso pode ter vários alunos, partindo do contexto de que estamos falando de uma Universidade pública, como a Uem, que não permite que um aluno faça mais de um curso ao mesmo tempo. O relacionamento Disciplina-Curso tem cardinalidade n para n, ou seja, uma disciplina pode estar na ementa de um ou mais cursos e um curso pode conter uma ou mais disciplinas. Visões do Banco de Dados a - Visão Interna - É aquela vista pelo responsável pela manutenção e desenvolvimento do SGBD. Existe a preocupação com a forma de recuperação e manipulação dos dados dentro do Banco de Dados. b - Visão Conceitual - É aquela vista pelo analista de desenvolvimento e pelo administrador das bases de dados. Existe a preocupação na definição de normas e procedimentos para manipulação dos dados, para garantir a sua segurança e confiabilidade, o desenvolvimento de sistemas e programas aplicativos e a definição no banco de dados de novos arquivos e campos. Na visão conceitual, existem 2 (duas) linguagens de operação que são: a) Linguagem de definição dos dados (DDL) - Linguagem que define as aplicações, arquivos e campos que irão compor o banco de dados (comandos de criação e atualização da estrutura dos campos dos arquivos). b) Linguagem de manipulação dos dados (DML) - Linguagem que define os comandos de manipulação e operação dos dados (comandos de consulta e atualização dos dados dos arquivos). c - Visão Externa - É aquela vista pelo usuário que opera os sistemas aplicativos, através de interfaces desenvolvidas pelo analista (programas), buscando o atendimento de suas necessidades. NORMALIZAÇÃO DE DADOS Consiste em definir o formato lógico adequado para as estruturas de dados identificados no projeto lógico do sistema, com o objetivo de minimizar o espaço utilizado pelos dados e garantir a integridade e confiabilidade das informações. A normalização é feita, através da análise dos dados que compõem as estruturas utilizando o conceito chamado "Formas Normais (FN)". As FN são conjuntos de restrições nos quais os dados devem satisfazê-las. Exemplo, pode-se dizer que a estrutura está na primeira forma normal (1FN), se os dados que a compõem satisfizerem as restrições definidas para esta etapa. A normalização completa dos dados é feita, seguindo as restrições das quatro formas normais existentes, sendo que a passagem de uma FN para outra é feita tendo como base o resultado obtido na etapa anterior, ou seja, na FN anterior. Para realizar a normalização dos dados, é primordial que seja definido um campo chave para a estrutura, campo este que permite irá identificar os demais campos da estrutura. Formas Normais existentes: Primeira Forma Normal (1FN) Consiste em retirar da estrutura os elementos repetitivos, ou seja, aqueles dados que podem compor uma estrutura de vetor. Podemos afirma que uma estrutura está normalizada na 1FN, se não possuir elementos repetitivos. Exemplo: Estrutura original: Arquivo de Notas Fiscais (Num. NF, Série, Data emissão, Cod. do Cliente, Nome do cliente, Endereço do cliente, CGC do cliente, Relação das mercadorias vendidas (onde para cada mercadoria temos: Código da Mercadoria, Descrição da Mercadoria, Quantidade vendida, Preço de venda e Total da venda desta mercadoria) e Total Geral da Nota) Analisando a estrutura acima, observamos que existem várias mercadorias em uma única Nota Fiscal, sendo portanto elementos repetitivos que deverão ser retirados. Estrutura na primeira forma normal (1FN): Arquivo de Notas Fiscais (Num. NF, Série, Data emissão, Código do Cliente, Nome Cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota) Arquivo de Vendas (Num. NF, Código da Mercadoria, Descrição da Mercadoria, Quantidade vendida, Preço de venda e Total da venda desta mercadoria) Obs. Os campos sublinhados identificam as chaves das estruturas. Como resultado desta etapa ocorre um desdobramento dos dados estruturas, a saber: em duas - Primeira estrutura (Arquivo de Notas Fiscais): Dados que compõem a estrutura original, excluindo os elementos repetitivos. - Segundo estrutura (Arquivo de Vendas): Dados que compõem os elementos repetitivos da estrutura original, tendo como chave o campo chave da estrutura original (Num. NF) e o campo chave da estrutura de repetição (Código da Mercadoria). Segunda Forma Normal (2FN) Consiste em retirar das estruturas que possuem chaves compostas (campo chave sendo formado por mais de um campo), os elementos que são funcionalmente dependente de parte da chave. Podemos afirmar que uma estrutura está na 2FN, se ela estiver na 1FN e não possuir campos que são funcionalmente dependente de parte da chave. Exemplo: Estrutura na primeira forma normal (1FN): Arquivo de Notas Fiscais (Num. NF, Série, Data emissão, Código do Cliente, Nome do cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota) Arquivo de Vendas (Num. NF, Código da Mercadoria, Descrição da Mercadoria, Quantidade vendida, Preço de venda e Total da venda desta mercadoria) Estrutura na segunda forma normal (2FN): Arquivo de Notas Fiscais (Num. NF, Série, Data emissão, Código do Cliente, Nome do cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota) Arquivo de Vendas (Num. NF, Código da Mercadoria, Quantidade vendida e Total da venda desta mercadoria) Arquivo de Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço de venda) Como resultado desta etapa, houve um desdobramento do arquivo de Vendas (o arquivo de Notas Fiscais, não foi alterado, por não possuir chave composta) em duas estruturas a saber: - Primeira estrutura (Arquivo de Vendas): Contém os elementos originais, sendo excluídos os dados que são dependentes apenas do campo Código da Mercadoria. - Segundo estrutura (Arquivo de Mercadorias): Contém os elementos que são identificados apenas pelo Código da Mercadoria, ou seja, independentemente da Nota Fiscal, a descrição e o preço de venda serão constantes. Terceira Forma Normal (3FN) Consiste em retirar das estruturas os campos que são funcionalmente dependentes de outros campos que não são chaves. Podemos afirmar que uma estrutura está na 3FN, se ela estiver na 2FN e não possuir campos dependentes de outros campos não chaves. Exemplo: Estrutura na segunda forma normal (2FN): Arquivo de Notas Fiscais (Num. NF, Série, Data emissão, Código do Cliente, Nome do cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota) Arquivo de Vendas (Num. NF, Código da Mercadoria, Quantidade vendida e Total da venda desta mercadoria) Arquivo de Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço de venda) Estrutura na terceira forma normal (3FN): Arquivo de Notas Fiscais (Num. NF, Série, Data emissão, Código do Cliente e Total Geral da Nota) Arquivo de Vendas (Num. NF, Código da Mercadoria, Quantidade vendida e Total da venda desta mercadoria) Arquivo de Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço de venda) Arquivo de Clientes (Código do Cliente, Nome do cliente, Endereço do cliente e CGC do cliente) Como resultado desta etapa, houve um desdobramento do arquivo de Notas Fiscais, por ser o único que possuía campos que não eram dependentes da chave principal (Num. NF), uma vez que independente da Nota Fiscal, o Nome, Endereço e CGC do cliente são inalterados. Este procedimento permite evitar inconsistência nos dados dos arquivos e economizar espaço por eliminar o armazenamento freqüente e repetidas vezes destes dados. A cada nota fiscal comprada pelo cliente, haverá o armazenamento destes dados e poderá ocorrer divergência entre eles. As estruturas alteradas foram pelos motivos, a saber: - Primeira estrutura (Arquivo de Notas Fiscais): Contém os elementos originais, sendo excluído os dados que são dependentes apenas do campo Código do Cliente (informações referentes ao cliente). - Segundo estrutura (Arquivo de Clientes): Contém os elementos que são identificados apenas pelo Código do Cliente, ou seja, independente da Nota Fiscal, o Nome, Endereço e CGC dos clientes serão constantes. Após a normalização, as estruturas dos dados estão projetadas para eliminar as inconsistências e redundâncias dos dados, eliminando desta forma qualquer problema de atualização e operacionalização do sistema. A versão final dos dados poderá sofrer alguma alteração, para atender as necessidades específicas do sistema, a critério do analista de desenvolvimento durante o projeto físico do sistema. A Álgebra Relacional É uma linguagem de consulta procedural. Os operadores da álgebra relacional recebem uma ou duas relações como operandos e produzem uma nova relação como resultado. Operações fundamentais da álgebra relacional são: • seleção; • projeção; • produto cartesiano; • união; • diferença entre conjuntos. Com estas operações fundamentais é possível exprimir qualquer consulta em álgebra relacional. Seleção Seleciona tuplas (linhas) que satisfazem um dado predicado (uma condição lógica) nos valores dos atributos. Projeção Copia a relação dada como argumento, deixando alguns atributos (colunas) de lado. Pode ser entendida como uma operação que filtra as colunas de uma tabela. Por operar sobre apenas um conjunto de entrada, a projeção é classificada como uma operação unária. Produto Cartesiano Permite combinar informações de duas relações.Exemplo: Fornecedor X Produto: O esquema resultante é a concatenação dos esquemas das duas relações fornecidas como argumento. (Cod_Forn,Nome,Cidade,Estado) C (Cod_Prod,Nome,Qualidade) = ( Fornecedor.Cod_Forn, Fornecedor.Nome, Fornecedor.Cidade, Fornecedor.Estado, Produto.Cod_Prod, Produto.Nome, Produto.Qualidade ) As linhas são obtidas combinando-se cada linha da primeira tabela com todas as linhas da segunda tabela. União Requer que as duas relações fonecidas como argumento tenham o mesmo esquema. Resulta em uma nova relação, com o mesmo esquema, cujo conjunto de linhas é a união os conjuntos de linhas das relações dadas como argumento. Intersecção: A intersecção com B Esta é uma operação adicional que produz como resultado uma tabela que contém, sem repetições, todos os elementos que são comuns às duas tabelas fornecidas como operandos. As tabelas devem ser união-compatíveis. Diferença de Conjuntos Requer que as duas relações fonecidas como argumento tenham o mesmo esquema. Resulta em uma nova relação, com o mesmo esquema, cujo conjunto de linhas é o conjunto de linhas da primeira relação menos as linhas existentes na segunda. Junção: A |X| B É uma operação que produz uma combinação entre as linhas de uma tabela com as linhas correspondentes de outra tabela, sendo em princípio correspondente a uma seleção pelos atributos de relacionamento sobre um produto cartesiano dessas tabelas: Renomeação: r<novo_nome> ( A ) Esta operação unária, redefine o nome de uma tabela em um determinado contexto. É útil para auto-relacionamentos, onde precisamos fazer a junção de uma tabela com ela mesma, e nesse caso cada versão da tabela precisa receber um nome diferente da outra. Divisão: A ¸ B É uma operação adicional que produz como resultado a projeção de todos os elementos da primeira tabela que se relacionam com todos os elementos da segunda tabela. Ex.: queremos saber os nomes dos departamentos que possuem todos os cargos: NmDepto, CdCargo ( depto |x| funcionário ) CdCargo ( cargo ) Atribuição: variável A Permite que o conteúdo de uma tabela seja atribuído (colocado) em uma variável especial, oferecendo a possibilidade de um tratamento até certo ponto algorítmico para algumas seqüências de operações.