article

Um Banco de Dados Relacional ou Base de Dados Relacional, ou ainda um Sistema Gerenciador de Banco de Dados Relacional (SGDBR) é um sistema de armazenamento de dados baseado no princípio em que todos os dados estão armazenados em tabelas (relações), seguindo o Modelo Relacional.

Histórico


Os BDR surgiram no ínicio da década de 1980 quando as empresas passaram a substituir arquivos planos (do inglês flat file) e bancos de dados hierárquicos por BDR.

Em 1985 Codd, criador do modelo relacional, publicou um artigo onde definia 12 regras para que um SGDB fosse considerado relacional:

  1. Regra Fundamental
    1. Um SGDB relacional deve gerenciar seus dados usando apenas suas capacidades relacionais
  2. Regra da informação
    1. Toda informação ser representados de uma única forma, como dados em uma tabela
  3. Regra da garantia de acesso
    1. Todo dado (valor atômico) pode ser acessado logicamente (e unicamente) usando o nome da tabela, o valor da chave primária da linha e o nome da coluna.
  4. Tratamento sistemático de valores nulos
    1. Os valores nulos (diferente do zero, da string vazia, da string de caracteres em brancos e outros valores não nulos) existe, de forma a representa dados não existentes de forma sistemática e independente do tipo de dado.
  5. Catálogo dinâmico on-line baseado no modelo relacional
    1. A descrição do banco de dados é representada no nível lógico como dados ordinários (isso é, em tabelas), permitindo que usuários autorizados apliquem as mesmas forma de manipular dados aplicada aos dados comuns ao consultá-las.
  6. Regra da sub-linguagem compreensiva
    1. Um sistema relacional pode suportar várias linguagens e forma de uso, porém deve possuir ao menos uma linguagem com sintaxe bem definida e expressa por cadeia de caracteres e com habilidade de apoiar: definição de dados, definição de visões, manipulação de dados, restrições de integriada, autorização, fronteira de transações.
  7. Regra da atualização de visões
    1. Toda visão que for teoreticamente atualizável será também atualizável pelo sistema.
  8. Inserção, atualização e eliminação de alto nível
    1. A capacidade de manipular a relação base ou relações derivadas como um operador único não se aplica apenas a recuperação de dados, mas também a inserção, alteração e eliminação de dados.
  9. Independência dos dados físicos
    1. Programs de aplicação ou atividades de terminal permanem logicamente inalteradas quaisquer que sejam as modificações na representação de armazenagem ou métodos de acesso internos.
    2. Independência lógica de dados
    3. Programs de aplicação ou atividades de terminal permanem logicamente inalteradas quaisquer que sejam as mudanças de informação que permitam teoricamente a não alteração das tabelas base.
  10. Independência de integridada
    1. As relações de integridade específicas de um banco de dados relacional específica devem ser definidas em uma sublinguagem de dados e armazenadas no catálogo (e não em programas).
  11. Independência de distribuição
    1. A linguagem de manipulação de dados deve possibilitar que as aplicações permaneçam inalteradas estejam os dados centralizados ou distribuídos (fisicamente)
  12. Regra da Não-subversão
    1. SE o sistema relacional possui uma linguagem de baixo nível (um registro por vez) não deve ser possível subverter ou ignorar as regras de integridade e restrições definidas no alto nível (muitos registros por vez).

Porque SGDBR?


Os BDR foram então desenvolvidos para prover acesso facilitado aos dados, possibilitando que os usuários abordassem os dados através de uma variedade de pontos de vista. Com um banco de dados hierárquico, os usuários precisam definir as questões de negócios de uma maneira distinta, iniciando pela raiz do banco de dados. Nos bancos de dados relacionais, os usuários podem fazer perguntas relacionadas aos negócios através de vários pontos.

A linguagem padrão dos BDR é o SQL - Structured Query Language.

Modelo Relacional


Um SGDB-R segue o Modelo Relacional

A arquitetura de um banco de dados relacional pode ser descrita de duas formas: informal e formalmente. Na descrição informal estamos preocupados com aspectos práticos da utilização e usamos os termos tabela, linha e coluna. Na descrição formal estamos preocupados com a semântica formal do modelo e usamos termos como relação, tupla e linha.

Tabelas (ou relações)

Todos os dados de um banco de dados relacional (BDR) são armazenados em tabelas. Uma tabela é uma simples estrutura de linhas e colunas. Cada linha contém um mesmo conjunto de colunas mas as linhas não seguem qualquer tipo de ordem. Em um banco/base de dados podem existir uma ou centenas de tabelas. O limitador é imposto exclusivamente pela ferramenta de software utilizada.

Formalmente falando, uma relação é um conjunto de tuplas que seguem um esquema de relação.

Esquema de Relação

Um esquema de relação é uma definição dos atributos de uma tupla.

Registros (ou tupla)

Cada linha, formada por uma lista ordenada de colunas, representa um registro (ou tupla). Os registros não precisam necessariamente conter dados em todas as colunas, os seus valores podem ser nulos.

Formalmente falando, uma tupla é uma lista ordenada de valores, onde cada valor é do domínio especificado pelo atributo definido no esquema de relação.

Colunas (Atributos)

As colunas de uma tabela, são também chamadas de Atributos. Cada atributo pertence a um domínio, que define os valores que podem ser associados aquele atributo.

Domínio

Os Dominios possuem características que definem os possíveis valores que serão armazenado em um atributo de uma tupla. Por exemplo. Em um campo do tipo numérico, serão somente armazenados números. Os sistemas de banco de dados possuem regras para consistir os dados que são armazenados.

O conceito mais similar a domínio é o de Tipo Abstrato de Dados em linguagens de programação.

Chave

As tabelas relacionam-se umas as outras através de chaves. Uma chave é um conjunto de um ou mais campos que determinam a unicidade de cada registro.

Por exemplo, se um banco (base) de dados tem como chave Código do Produto + ID Sistema, sempre que acontecer uma inserção de dados, o sistema de gerenciamento de banco (base) de dados irá fazer uma consulta para identificar se o registro não se encontra gravado na tabela. Caso exista um novo registro não será criado, sendo que apenas a alteração do registro existente será possível. A unicidade dos registros, determinada por sua chave, também é fundamental para a criação dos índices.

Temos dois tipos de chaves:

Chave Primária: (PK - Primary Key) é a chave que identifica cada registro dando-lhe unicidade. A chave primária nunca se repetirá.

Chave Estrangeira: (FK - Foreign Key) é uma chave formada pela chave primária de outra tabela e a chave de um campo da tabela que recebe o relacionamento. Define um relacionamento entre as tabelas e pode ocorrer repetidas vezes. Lembrando que uma chave estrangeira pode ser composta se a chave primária que deu origem a ela for composta.

Características Adicionais ao Modelo Relacional


Índices

Um índice não é uma característica do Modelo Relacional, mas sim uma estratégia de otimização de consulta para implementações desse modelo. Isso acontece porque o Modelo Relacional é um modelo teórico, porém quando transformado em uma implementação as suas operações (tanto da álgebra quanto do cálculo) exigem um tempo de busca. Se os dados estiverem ordenados de uma forma ideal, esse tempo de busca pode ser bastante reduzido.

Os índices funcionam então como catálogos organizados de forma a beneficiar certo tipo de consulta. É possível imaginar que uma tabela seria associada a quantidade máxima de índices, porém isso traria muitos gasto de inserção e alteração. Por isso, em uma implantação de um banco de dados, são escolhidos os indíces mais adequados. Normalmente a chave primária é um índice.

O limitador é imposto exclusivamente pela ferramenta de software utilizada. Sendo assim, para a recuperação dos dados é necessário a existência de mecanismos que facilitem a consulta, proporcionando uma perfomance aceitável para a mesma. Para isso, os sistemas de bancos de dados relacionais criam índices das tabelas, sendo que esses índices são atualizados constantemente.

Caso o índice se corrompa por algum motivo, é possível que pesquisas possam retornar resultados não desejados ou que inserções de chaves duplicadas aconteçam. Nesse caso o banco de dados será corrompido também. Os sistemas de bancos (bases) de dados possuem mecanismos de evitar que esses eventos ocorram como também possibilitam a recuperação dos índices e consistência da tabela caso eles ocorram.

Tipos de Índices

De acordo com as necessidades de busca, os tipos de índices ideais variam. Alguns bancos implementam um tipo, outros vários.

Um indice em árvore (e existem vários tipos de árvore) ordena os dados e permite buscas razoavelmente rápidas para elementos específicos e busca bastante rápidas para intervalos. O índice em árvore é geralmente baseado na idéia da Árvore Binária, porém adaptada para atender as características de usar Memória de . O tipo mais comum é a Árvore B.

Um índice em hash organiza os dados codificando-os e mapeando-os em posições de array. São uma forma extremamente rápida de encontrar elementos específicos, mas praticamente inúteis para responder um intervalo de valores.

Um índice binário é indicado quando o campo indexado tem um pequeno número de valores que indicam a categoria da tupla, por exemplo o campo sexo (M,F), que é constantemente usada em consultas. Nesse caso, é criada uma lista dos elementos de cada tipo.

Outros tipos de índices são: R-Tree, GiST, etc.

Relacionamentos


Com o advento do Modelo de Entidades e Relacionamentos foi causada uma confusão entre os termos relação e relacionamento

O Modelo Relacional, quando descrito de forma matemática, é definido como um modelo formado por relações (no sentido matemático) entre os domínios. Cada tupla é um elemento do conjunto relação.

Ou seja, a relação é a tabela.

Um relacionamento do Modelo de Entidades e Relacionamentos é uma associação entre entidades distintas. Não há relação direta entre o nome relacionamento e o nome relação.

POrém, um relacionamento, do Modelo de Entidades e Relacionamentos é traduzido para a criação de atributos com chaves externas do Modelo Relacional. Esta tradução é feita ligando-se um campo de uma tabela X com um campo de uma tabela Y, por meio da inclusão do campo chave da tabela Y como um campo (conhecido como chave estrangeira) da tabela X.

Por meio das chaves estrangeiras, é possível implementar restrições nos SGDBR.

Existem alguns tipos de relacionamentos possíveis no MER:

Os relacionamento 1 para 1 e 1 para N podem ser mapeados diretamente em chaves estrangeiras nas tabelas originais. Já o relacionamento N para M exige o uso de uma tabela auxiliar.

Veja também Modelo de Entidades e Relacionamentos.

Modelagem


Normalização

Os bancos de dados relacionais utilizam a normalização de dados para evitar redundâncias e possibilitar uma maior perfomance nas pesquisas.

Normalização

É o processo de organização eficiente dos dados dentro de um banco de dados cujos objetivos principais são:

  1. Eliminar dados redundantes (por exemplo, armazenando os mesmos dados em mais de uma tabela).
  2. Garantir que as dependências entre os dados façam sentido (armazenando apenas dados logicamente relacionados em uma tabela).

Existem cinco estágios de normalização, 1º, o 2º, o 3º, o 4º e o 5º. Para um banco de dados se encontrar em cada um desses estágios ou formas (denominadas formas normais), cada uma de suas tabelas deve atender a alguns pré-requisitos. Os pré-requisitos são cumulativos, isto é, para alcançar a 3ª forma normal (3NF), um banco de dados precisa atender aos pré-requisitos das 1ª e 2ª formas normais.

Dependência Funcional

Primeira Forma Normal (FN1)

A versão mais moderna da FN1 apenas exige que os dados estejam na forma de tabelas e todos os campos sejam atômicos.

Segunda Forma Normal (FN2)

A FN2 exige que todo atributo da tabela seja dependente funcional da chave completa e não de parte da chave.

Uma tabela com uma chave formada por apenas um atributo está automaticamente na FN2..

Terceira Forma Normal (FN3)

A FN3 exige que não existam atributos transitivamente dependentes da chave.

Exemplos de SGBDR (Sistemas Gerenciadores de Bancos de Dados Relacionais)


Veja também


Ciência da computação | Bancos de dados

Relační databáze | Relationale Datenbank | Relational database | Base de datos relacional | Base de données relationnelle | בסיס נתונים טבלאי | Relációs adatbázis | リレーショナルデータベース | Relationele database | Model relacyjny | Реляционные базы данных | Relationsdatabas | 关系数据库

 

This article is licensed under the GNU Free Documentation License. It uses material from the "Banco de dados relacional".

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld