Hélio Engholm Jr

Especializado em Engenharia de Software

Sistemas de banco de dados, visão geral

Um sistema de banco de dados é uma coleção de diferentes componentes de software de base de dados bases de dados contendo as seguintes peças:

  • Programas de aplicação de Banco de Dados
  • Componentes Client
  • Servidor(es) de Banco de Dados
  • Banco de Dados

Uma aplicação de Banco de Dados é um programa especial de software que é projetado e implementado pelos usuários ou implementadas empresas de software. Por outro lado, componentes cliente são softwares de banco de dados para uso geral, concebidos e implementados por uma empresa de base de dados. Utilizando componentes cliente, os usuários podem acessar dados armazenados no mesmo computador  ou em um computador remoto.

A tarefa de criar um servidor de banco de dados é para gerenciar os dados armazenados em um banco de dados. Cada cliente se comunica com um servidor de base de dados, enviando as consultas dos usuários para os  mesmos. O servidor processa cada consulta e envia o resultado para o cliente.

Em geral, um banco de dados pode ser visualizada a partir de duas perspectivas, a dos usuários e a de sistemas do bano de dados.  Os usuários visualizam um banco de dados como uma coleção de dados que se relacionam logicamente . Para um sistema de banco de dados, um banco de dados é simplesmente um conjunto de bytes, normalmente armazenado em um disco. Embora esses dois pontos de vista relacionados a um banco de dados serem totalmente diferentes, eles têm algo em comum: o sistema de banco de dados precisa fornecer não apenas as interfaces que permitem aos usuários criar bancos de dados e recuperar ou modificar os dados, mas também os componentes do sistema para gerenciar os dados armazenados. Assim, um sistema de banco de dados deve fornecer os seguintes recursos:

  • Variedade de interfaces de usuário
  • Independência Física de Dados
  • Independência Lógica de Dados
  • Otimização de Consultas
  • Integridade de Dados
  • Controle de Concorrência Backup e recuperação
  • Segurança de Dados

As seções a seguir descrevem resumidamente esses recursos.

Variedade de interfaces de usuário

A maioria dos bancos de dados são projetados e implementados para utilização por muitos tipos diferentes de usuários com diversos níveis de conhecimento. Para isso, um sistema de base de dados deve oferecer diferentes interfaces de usuário. Estas interfaces incluem, entre outros, os menus e formulários para os usuários finais e uma linguagem de consulta interativa para usuários experientes.

Independência Física de Dados

Independência física de Dados significa que os programas de aplicação da base de dados não dependem da estrutura física dos dados armazenados em um banco de dados. Este importante recurso permite que você faça as alterações aos dados armazenados sem ter que fazer qualquer alteração à base de dados programas e aplicações. Por exemplo, se os dados armazenados são previamente ordenados através de um critério, e esta ordem é alterada usando outro critério, a modificação dos dados físicos não devem afetar as aplicações de banco de dados existentes ou o esquema de banco de dados existente (uma descrição de uma base de dados gerada pela linguagem de definição de dados do sistema de base de dados).

Independência Lógica de Dados

No processamento do arquivo (utilizando linguagens de programação tradicionais), a declaração de um arquivo é feito em programas de aplicação, de modo que qualquer alteração à estrutura do arquivo normalmente requer a modificação de todos os programas usando-o. Sistemas de base de dados fornecem independência lógica de dados- em outras palavras, é possível fazer alterações à estrutura lógica de banco de dados sem ter que fazer qualquer alteração na aplicação ou programas. Por exemplo, se a estrutura de um objeto chamado PESSOA existe no sistema de banco de dados e você deseja adicionar um atributo APESSOA (por exemplo endereço), você tem que modificar apenas a estrutura lógica do banco de dados, e não os atuais programas de aplicação.

Otimização de Consultas

Cada sistema de base de dados contém um subcomponente chamado um otimizador que considera uma variedade de estratégias para execução consulta aos dados e, em seguida, seleciona os mais eficiente. A estratégia selecionada é chamada de plano de execução da consulta. O otimizador faz suas decisões considerando, o tamanho das tabelas envolvidas na consulta, os índices existentes e qual operador booleano (E, ou NÃO) é usado na cláusula WHERE. (Este tópico é discutido em detalhes no Capítulo 20.)

Integridade de Dados

Uma das tarefas de um sistema de base de dados é o de identificar os dados logicamente inconsistentes e rejeitar o seu armazenamento no banco de dados. (A data 30 de Fevereiro e a hora 5:77:00 são dois exemplos de tais dados.) Além disso, a maioria dos problemas reais que são implementados usando sistemas de banco têm restrições de integridade que devem se manter verdadeiro para os dados. (Um exemplo de restrição de integridade pode ser o número dos funcionários da empresa, que deve ser de um número inteiro de cinco dígitos .) A tarefa de conservar a integridade pode ser realizada pelo usuário nos programas de aplicação ou polo DBMS. Tanto quanto possível, esta tarefa deve ser manuseado por o DBMS. (Integridade de dados é discutido em dois capítulos do presente livro: integridade declarativa no Capítulo 5 e integridade processual no Capítulo 14.)

Controle de concorrência

Um sistema de banco de dados é um sistema de software multiusuário, o que significa que muitas aplicações e usuários poderão acessar a base de dados ao mesmo tempo. Portanto, cada sistema de base de dados deve ter algum tipo de mecanismo de controle para garantir que vários aplicativos que tentam atualizar os mesmos dados possam fazer de uma forma controlada. O seguinte exemplo mostra um problema que pode ocorrer se um sistema de base de dados não contém tais mecanismos de controle. 1  2  3  Os proprietários de conta bancária 4.711 no banco X têm um saldo de conta de US$ 2.000 . Os dois co-proprietários da conta bancária, a Sra. A e o Sr. B, vão para dois diferentes caixas de banco e cada um retira $1.000 ao mesmo tempo. Após estas operações, a quantidade de dinheiro na conta bancária 4.711 caso deve ser $0 e não R$1.000 . Todos os sistemas do banco, possuem mecanismos necessários para lidar com casos como este exemplo. (Este tópico é discutido em detalhes no Capítulo 13.)

 

Backup e Recovery

Um sistema de base de dados devem ter um subsistema que é responsável pela recuperação de erros de hardware ou de software. Por exemplo, se ocorrer uma falha enquanto uma aplicação de base de dados realiza atualizações em 100 linhas de uma tabela, o subsistema de recuperação deve reverter as atualizações previamente executada para garantir que os dados correspondentes estão consistente após a ocorrência do erro. (Veja o Capítulo 17 para uma discussão mais detalhada sobre os processos de backup e recuperação.) Segurança da base de dados Os mais importante conceitos de segurança em banco de dados são a autenticação e a autorização. Autenticação é o processo de validar as credenciais do usuário para impedir que usuários não autorizados utilizem o sistema. Autenticação é mais comumente aplicada por exigir que o usuário insira um nome de usuário e uma senha. Esta informação é avaliada pelo sistema para determinar se o usuário tem permissão para acessar o sistema ou não. Este processo pode ser reforçado pelo uso de criptografia. Autorização é o processo que é aplicado após a identidade de um usuário ser autenticado. Durante este processo, o sistema determina quais recursos do sistema o usuário em particular pode usar. Em outras palavras, informações estruturais e o catálogo do sistema sobre uma determinada entidade ficam disponíveis apenas para aqueles que têm permissão para acessar essa entidade. (O Capítulo 12 discute esses conceitos em detalhes.)

Sistemas de banco de dados relacional

O componente do Microsoft SQL Server chamado Endine do Banco de Dados é um banco de dados relacional. O conceito de sistemas de banco de dados relacional foi introduzido pela primeira vez por E. F. Codd em seu artigo “Um modelo relacional de dados compartilhados por grandes bancos de dados” no ano 1970. Ao contrário do que aconteceu em anteriores sistemas de bases de dados (rede e hierárquico), banco de dados relacional são baseadas no modelo de dados relacional, que tem uma forte base matemática.

 

Trabalhando com o banco de dados do exemplo

O banco de dados utilizado neste curso representa uma empresa com departamentos e funcionários. Cada funcionário no exemplo pertence exatamente a um departamento, que por si já tem um ou mais funcionários. Trabalhos do centro de projetos de funcionários: cada funcionário trabalha ao mesmo tempo em um ou mais projetos e cada projeto envolve um ou mais funcionários.

Os dados do banco de dados do exemplo pode ser representado usando quatro tabelas:

  • Departmento
  • empregado
  • projeto
  • works_on

Usando o banco de dados do exemplo, é possível descrever algumas propriedades gerais dos sistemas de banco de dados relacional.

  • Registros em uma tabela não tem nenhuma ordem específica.
  • Colunas em uma tabela não tem nenhuma ordem específica.

Toda coluna deve ter um nome exclusivo dentro de uma tabela. Por outro lado, as colunas de tabelas diferentes podem ter o mesmo nome. (Por exemplo, o banco de dados de exemplo tem uma coluna dept_no na tabela departamento e uma coluna com o mesmo nome na tabela funcionário ) Todo item único de dados na tabela deve ser o único avaliado. Isto significa que em cada linha e posição da coluna de uma tabela, nunca existe um conjunto de vários valores de dados.

Para toda tabela, existe pelo menos uma coluna (ou seja, uma combinação de colunas) com a propriedade de que não existem duas linhas com  a mesma combinação de valores de dados para essas colunas. No modelo de dados relacional, este identificador é chamado de chave candidata. Se houver mais de uma chave candidata dentro de uma tabela, o designer do database seleciona um deles como chave primária da tabela. Por exemplo, a coluna dept_no é a chave primária da tabela departamento; as colunas emp_no e project_no são as chaves primárias da tabela empregado e projeto, respectivamente. Por fim, a chave primária para a tabela works_on é a combinação das colunas emp_no, project_no.

Em uma tabela, nunca há duas linhas idênticas. (Esta propriedade é apenas teórica; Motor de Base de Dados e todos os outros sistemas de base de dados relacionais geralmente permitem a existência de linhas idênticas dentro de uma tabela.)

 

SQL: Uma linguagem de banco de dados relacional

A linguagem de banco de dados relacional SQL Server é chamado Transact-SQL. Trata-se de um dialeto dos mais importante idiomas de banco de dados hoje em dia: SQL (Structured Query Language). A origem do SQL está intimamente ligada com o projeto chamado System R, que foi concebida e implementada pela IBM no início da década de 1980. Este projeto mostrou que é possível, usando as bases teóricas do trabalho de E. F. Codd, para construir um banco de dados relacional.

Ao contrário do que acontece com linguagens tradicionais de programação como, por exemplo, C, C++, Java, SQL é uma set-oriented language. (A antiga são também chamados orientados por registro idiomas.) Isto significa que o SQL pode consultar várias linhas de uma ou mais tabelas utilizando apenas uma declaração. Este recurso é uma das grandes vantagens do SQL, o que permite o uso da língua em uma lógica mais elevado do que o nível no qual línguas tradicionais podem ser utilizadas.

Outra propriedade importante do SQL é  não ser procedural Todo programa escrito em uma linguagem procedural (C, C++, Java) descreve como uma tarefa é realizada, passo a passo. Em contraste com isso, o SQL, como qualquer outro linguagem não procedural, descreve o que é o que o usuário quer. Assim, o sistema é responsável por encontrar o modo mais adequado para resolver pedidos dos usuários.

SQL contém duas sublinguagens: uma linguagem de definição de dados (DDL) e uma linguagem de manipulação de dados (DML). Declarações DDL são utilizadas para descrever o esquema das tabelas do banco de dados. O DDL contém três declarações generic as do SQL. Objeto CREATE ,  Objeto ALTER e objeto DROP. Estas declarações sãoutilizadas para criar, alterar e remover objetos do banco de dados, tais como bancos de dados, tabelas, colunas e índices. (Este tópico é discutido em detalhes no Capítulo 5.)

Em contraste com o DDL, DML engloba todas as operações que manipulam os dados. Há sempre quatro operações genéricas para manipulação do banco de dados: recuperação, inserção, exclusão e alteração. A recuperação declaração SELECT está descrito nos capítulos 6, enquanto a INSERIR, excluir e atualizar as declarações são discutidos em detalhe no Capítulo 7.

Design do Banco de Dados

Projetando um banco de dados é uma fase muito importante no ciclo de vida do banco, que por sua vez precede todas as outras fases com exceção da coleta de requisitos e análise. Se a base de dados é criada simplesmente intuitivamente e sem qualquer plano, será mais provável que o banco resultante não satisfaça as necessidades do usuário em matéria de desempenho. Outra consequência de um mau projeto de banco é redundância de dados desnecessária , o que, só por si, tem dois inconvenientes: a existência de anomalias de dados  e a utilização de uma desnecessária quantidade de espaço em disco.

 

A normalização de dados é um processo durante o qual as tabelas de um banco de dados são testadas para se encontrar algumas dependências entre as colunas de uma tabela. Caso estas existirem dependências, a tabela é reestruturado em múltiplos (geralmente duas) tabelas, que elimina qualquer dependência entre colunas. Se uma destas tabelas geradas ainda contiver dependências de dados, o processo de normalização deve ser repetido até que todas as dependências sejam resolvidas.

O processo de eliminação de redundância de dados em uma tabela é baseada na teoria de dependências funcionais. A dependência funcional significa que, utilizando o valor conhecido de uma coluna, o valor correspondente da outra coluna pode sempre ser exclusivamente determinada. (O mesmo é válido para grupos de coluna s.) As dependências funcionais entre as colunas A e B é denotado por A → B, precisando que um valor de coluna, um sempre pode ser usado para determinar o valor correspondente da coluna B. ( “B é funcionalmente dependente de A. “)

O exemplo a seguir mostra a dependência funcional entre dois atributos da tabela empregados do banco de dados do exemplo. 

Exemplo 1.1 .

Emp_no → emp_lname

Por ter um valor único para o número do funcionário, o correspondente sobrenome do funcionário (e todos os outros atributos correspondentes) podem ser determinados. (Este tipo de dependência funcional, onde a coluna está dependente da chave primária de uma tabela, é chamado dependência funcional trivial .)

 Outro tipo de dependência funcional é chamado dependência multivalued . Em contraste com a dependência funcional descrita, a dependência multivalued é especificadoa para atributos multivalued . Isto significa que, utilizando o valor conhecido de uma coluna, o valor correspondente da outra coluna pode sempre ser exclusivamente determinado. O dependência multivalued é denotada por →→.

O exemplo a seguir mostra a dependência multivalued que mantém por dois atributos do objeto LIVRO. 

Exemplo 1,2 ISBN →→ Autores

 

O ISBN de um livro sempre determina todos os seus autores. Portanto, os atributos Autores é um depende multivalued do atributo ISBN .

Formas Normais

Formas normais são utilizadas para o processo de normalização dos dados e, por conseguinte, para a criação do banco de dados. Em teoria, há pelo menos, cinco diferentes formas normais, dos quais os três primeiros são os mais importantes para o uso prático. A terceira forma normal para uma tabela pode ser obtida testando a primeira e segunda formas normais em estados intermediários, e, como tal, o objetivo de um bom projeto de banco normalmente pode ser cumprido se todas as tabelas de um banco de dados estiverem na terceira forma normal.

Nota

O dependência multivalorada é utilizada para testar a quarta forma normal de tabela. Portanto, esse tipo de dependência não será mais utilizado neste treinamento.

Primeira forma Normal

Primeira forma normal (1NF) significa que a tabela não tem atributos multivalorados atributos composites. (Um atributo composite (composto) contém outros atributos e, portanto, pode ser dividido em partes menores.) Todas as tabelas relacionais são por definição em 1NF, porque o valor de qualquer coluna em uma linha deve ser atômica, ou seja, único valor.

Tabela 1-5 demonstra 1NF usando parte da tabela  works_on do banco de dados do curso. As linhas da tabela works_on poderiam ser agrupadas junto, usando o número do funcionário. A tabela resultante 1-6 não está na 1NF porque a coluna project_no contém um conjunto de valores (p1 e p3).

Segunda forma Normal

Uma tabela está na segunda forma normal (2NF) se estiver na 1NF e não há nenhuma  coluna dependente de uma chave primária da tabela. Isso significa que, se (A,B) é uma combinação de duas colunas de tabela que constituem a chave e não há nenhuma coluna da tabela dependendo nem somente de A ou somente de B.

Terceira forma Normal

Uma tabela está na terceira forma normal (3NF) se estiver na 2NF e não há dependências funcionais entre colunas sem chave. Por exemplo, a tabela empregado1 (ver Quadro 1-8), que é idêntica a tabela  empregado , exceto para a coluna adicional, dept_name, não está na 3NF, pois para cada valor conhecido da coluna dept_no o valor correspondente da coluna dept_name pode ser exclusivamente determinada.

Modelo Entidade-Relacionamento

Os dados em uma base de dados podem ser facilmente concebidos usando apenas uma tabela contendo todos os dados. A principal desvantagem de um tal projeto de banco é o seu alto nível de redundância de dados. Por exemplo, se o seu banco de dados contém dados relativos aos funcionários e seus projetos (supondo que cada funcionário trabalha ao mesmo tempo em um ou mais projetos, e cada projeto envolve um ou mais funcionários), os dados armazenados em uma única tabela irão conter muitas colunas e linhas. A principal desvantagem desta tabela é que os dados serão difíceis de serem mantidos coerentes, porque causa da sua redundância.

A modelo  entidade-relacionamento (ER) é usado para projetar bancos de dados relacionais, removendo todas as redundância nos dados. O objectivo básico do modelo E modelo é uma entidade que é um objeto do mundo real. Cada entidade tem vários atributos, que são propriedades da entidade e, portanto, o descreve. Com base em seu tipo, um atributo pode ser

Atomic (ou único valorizado) um atributo atómico é sempre representado por um único valor para uma determinada entidade. Por exemplo, um estado de pessoa civil é sempre um atributo atómico. A maioria dos atributos são atributos atómicos.

Multivalued Um atributo Multivalued pode ter um ou mais valores para uma determinada entidade. Por exemplo, a localização como atributo de uma entidade chamada ENTERPRISE é multivalued, porque cada empresa pode ter um ou mais locais.

Composite Os atributos Composite são não atómicos porque eles são montados usando algum outros atributos atómicos. Um exemplo típico de um atributo composto é um endereço da pessoa, a qual é composta por atributos atómicos Cidade, cep e a rua.

A entidade PESSOA no exemplo 1.3 tem vários atributos atómicos, um atributo composto, endereço e um atributo multivalued College_degree.

 



+ Artigos