Criou página com 'O Modelo Relacional foi proposto em 1970 por Edgar Codd. Esse modelo superou os dois modelos mais usados na época, o modelo de redes e o modelo hierárquico, pelas suas carac...'
 
 
(17 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
O Modelo Relacional foi proposto em 1970 por Edgar Codd. Esse modelo superou os dois modelos mais usados na época, o modelo de redes e o modelo hierárquico, pelas suas características que o tornavam simples e de fácil entendimento e pela fundamentação teórica através da álgebra relacional, também definida por Codd. Por isso o modelo relacional é o mais usado hoje para a construção de sistemas de gerenciamento de banco de dados.
O Modelo Relacional foi proposto em 1970 por Edgar Codd. Esse modelo superou os dois modelos mais usados na época, o modelo de redes e o modelo hierárquico, pelas suas características que o tornavam simples e de fácil entendimento e pela fundamentação teórica através da álgebra relacional, também definida por Codd. Por isso o modelo relacional é o mais usado hoje para a construção de sistemas de gerenciamento de banco de dados.
<br>
== Principais Características ==
No modelo relacional, um banco de dados é representado por uma coleção de relações. Cada relação possui um esquema, onde é especificado seu nome, o nome de cada campo ou atributo e o domínio de cada campo. Uma relação por sua vez pode ser vista como uma tabela bidimensional, onde as colunas representam os atributos e as linhas representam as tuplas da relação. Podemos enxergar isso com uma ilustração de uma esquema a seguir:
No modelo relacional, um banco de dados é representado por uma coleção de relações. Cada relação possui um esquema, onde é especificado seu nome, o nome de cada campo ou atributo e o domínio de cada campo. Uma relação por sua vez pode ser vista como uma tabela bidimensional, onde as colunas representam os atributos e as linhas representam as tuplas da relação. Podemos enxergar isso com uma ilustração de uma esquema a seguir:
''Alunos'' (''id-aluno:'' string, ''nome:'' string, ''idade:'' integer)
 
Nesse esquema denominado Alunos existem três campos, o id-aluno no domínio string, o nome no domínio string e o idade no domínio integer.
:''Alunos'' (''id-aluno:'' string, ''nome:'' string, ''idade:'' integer)
As tuplas representam a instância da relação. Podemos ver um exemplo de instância da relação Alunos a seguir:
 
''id-aluno'' ''nome'' ''idade''
Nesse esquema denominado ''Alunos'' existem três campos, o ''id-aluno'' no domínio string, o ''nome'' no domínio string e o ''idade'' no domínio integer. As tuplas representam a instância da relação. Podemos ver um exemplo de instância da relação Alunos a seguir:
  5673 Eduardo   22
 
  6576 Artur   24
{| class="wikitable"
  7583 Fernando   19
|-
Os relacionamentos entre as relações aparecem de forma implícita, há um elo na forma de ocorrência de valores comparáveis nos domínios de duas relações.
!''id-aluno''!!''nome''!!''idade''
|-
!5673!!Eduardo!!22
|-
!6576!!Artur!!24
|-
!7583!!Fernando!!19
|}
 
Os relacionamentos entre as relações aparecem de forma implícita, há um elo na forma de ocorrência de valores comparáveis nos domínios de duas relações. Por exemplo, o relacionamento entre a relação ''Alunos'' e a relação ''Pesquisa'' mostrada a seguir se dá pela ocorrência do campo ''aluno'' que representa o ''id-aluno''.
 
:''Pesquisa'' (''orientador:'' string, ''nome-pesquisa:'' string, ''aluno:'' string)
 
{| class="wikitable"
|-
!''orientador''!!''nome-pesquisa''!!''aluno''
|-
!158429!!Redes!!5673
|-
!124379!!Banco de Dados!!6576
|-
!108319!!Engenharia de Software!!7583
|}
 
A álgebra relacional é um formalismo usado para a manipulação de um banco de dados relacional. Ela é composta de oito operações: união, interseção, diferença, produto cartesiano, projeção, restrição, junção e divisão. Essas operações são usadas na SQL, que é uma linguagem desenvolvida para a manipulação de bancos de dados relacionais.
A álgebra relacional é um formalismo usado para a manipulação de um banco de dados relacional. Ela é composta de oito operações: união, interseção, diferença, produto cartesiano, projeção, restrição, junção e divisão. Essas operações são usadas na SQL, que é uma linguagem desenvolvida para a manipulação de bancos de dados relacionais.
Para a implementação do modelo relacional em um SGBD deve-se adicionar restrições de integridades para evitar informações incorretas no banco. Uma restrição de integridade é uma condição especificada que limita os dados que podem ser armazenados em uma instância. Muitas restrições podem ser impostas em um esquema do banco. As '''restrições de chave''' impõe que um certo  campo de uma relação é um identificador único para uma tupla. Quando existe um relacionamento entre relações o campo que representa o elo deve possuir uma '''restrição de chave estrangeira'''. Algumas '''restrições gerais''' também podem ser impostas como um campo que deve possuir valores somente dentro de uma faixa específica.
<br>
== Modo de Funcionamento ==
Para aplicarmos o modelo relacional em um sistema de gerenciamento de banco de dados devemos abstrair alguns conceitos do modelo para a computação. Uma relação é representada por um arquivo e as tuplas são os registros, e cada arquivo consiste de várias páginas. Uma página é uma unidade lógica do disco definido pelo sistema operacional. Cada registro do arquivo possui um identificador único, chamado de '''rid'''.
Para armazenarmos os dados em um SGD podemos usar duas estruturas diferentes sobre um arquivo de registros.  O '''arquivo heap''' é uma estrutura não ordenada, onde os registros são armazenados de forma aleatória. O '''arquivo agrupado''' é uma estrutura onde existe uma organização dos registros através de uma chave. Essas estruturas de dados possuem muitas ineficiências quando aplicadas isoladamente, então foram criadas técnicas de indexação que otimizam o funcionamento das operações sobre os arquivos de registros. Existe também duas estruturas de índice que são aplicadas sobre os arquivos, uma estrutura baseada em '''hash''' e outra baseada em '''árvore'''. A indexação é usada sobre uma chave dos registros para facilitar as operações sobre um banco de dados.
'''Inserção:''' A inserção em um arquivo heap sempre é feita inserindo o registro ao final do arquivo. No arquivo ordenado deve-se encontrar a posição adequada do registro, adicioná-lo e mover todos os registros posteriores. Em um ídice baseado me árvore deve-se inserir a entrada no índice e depois no arquivo. Para um índice baseado em hash inserimos uam entrada no índice e o registro no arquivo.
'''Deleção:''' No arquivo heap é feita a busca do registro e a remoção, não é necessário compactar ou reorganizar o arquivo, o espaço que fica pode ser ocupado posteriormente por outro arquivo. No arquivo ordenado deve-se buscar o registro, removê-lo e mover todos os arquivos subseqüentes. Tanto no índice baseado em hash quanto no baseado em árvore deve-se pesquisar no índice o registro e removê-lo do arquivo, uma reorganização no índice pode ser feita.
'''Busca:''' Tanto no arquivo heap quanto no arquivo ordenado a busca deve percorrer todo o arquivo no pior caso. No índice baseado em árvore deve-se percorrer a árvore da raiz até a folha que contém a informação do registro. No índice baseado em hash é a forma mais eficiente, basta calcular o valor hash do registro e buscá-lo no arquivo.
<br>
== Pontos Fortes ==
Justamente por descrever um banco de dados através de conceitos matemáticos simples e bem conhecidos, o modelo é de fácil entendimento. Podemos notar facilmente a correspondência entre as terminologias do modelo relacional com a computação: uma relação é um arquivo, uma tupla é um registro e valores de domínios são valores de itens.
Também dependendo da forma como o modelo é aplicado para a construção de um SGBD terá algumas vantagens e desvantagens diferentes. Atualmente o modelo é mais usado com arquivos heap e índices baseado em árvore, pois é a forma mais equilibrada.
<br>
== Pontos Fracos ==
Pelos elos entre as relações não serem explícitos, a forma de representar relações como tabelas do modelo relacional não é suficiente para uma implementação eficiente de um SGBD, pois o acesso por relacionamento é convertido em acesso por valor, ou seja, para uma relação a percorreríamos serialmente e para cada tupla tomaríamos o valor no domínio do campo desejado e procuraríamos  na relação que esse campo representa uma tupla que possua o mesmo valor do campo.
Outros aspecto é a normalização das relações. Existem várias formas normais definidas para o modelo relacional, e dependendo da forma aplicada uma relação teria seu número de tuplas aumentado ou seria dividida em outras três relações, com uma relação representando o elo entre as outras duas. Isso faz com que o modelo ocupe mais espaço para armazenamento.
<br>
== Referências ==
FURTADO A. L.;SANTOS C. S. '''Organização de bancos de dados.''' 7ªed. Rio de Janeiro: Campus, 1979. 281 p.
GEHRKE J.;RAMAKRISHNAN R. '''Sistemas de gerenciamento de banco de dados.''' tradução 3ªed. São Paulo: McGraw-Hill, 2008. 884 p.
S. M. BALDO ;MACÁRIO C. G. N. '''O Modelo Relacional''', Campinas, SP, p. 1-3.
<br>

Edição atual tal como às 13h11min de 16 de agosto de 2013

O Modelo Relacional foi proposto em 1970 por Edgar Codd. Esse modelo superou os dois modelos mais usados na época, o modelo de redes e o modelo hierárquico, pelas suas características que o tornavam simples e de fácil entendimento e pela fundamentação teórica através da álgebra relacional, também definida por Codd. Por isso o modelo relacional é o mais usado hoje para a construção de sistemas de gerenciamento de banco de dados.

Principais Características

No modelo relacional, um banco de dados é representado por uma coleção de relações. Cada relação possui um esquema, onde é especificado seu nome, o nome de cada campo ou atributo e o domínio de cada campo. Uma relação por sua vez pode ser vista como uma tabela bidimensional, onde as colunas representam os atributos e as linhas representam as tuplas da relação. Podemos enxergar isso com uma ilustração de uma esquema a seguir:

Alunos (id-aluno: string, nome: string, idade: integer)

Nesse esquema denominado Alunos existem três campos, o id-aluno no domínio string, o nome no domínio string e o idade no domínio integer. As tuplas representam a instância da relação. Podemos ver um exemplo de instância da relação Alunos a seguir:

id-aluno nome idade
5673 Eduardo 22
6576 Artur 24
7583 Fernando 19

Os relacionamentos entre as relações aparecem de forma implícita, há um elo na forma de ocorrência de valores comparáveis nos domínios de duas relações. Por exemplo, o relacionamento entre a relação Alunos e a relação Pesquisa mostrada a seguir se dá pela ocorrência do campo aluno que representa o id-aluno.

Pesquisa (orientador: string, nome-pesquisa: string, aluno: string)
orientador nome-pesquisa aluno
158429 Redes 5673
124379 Banco de Dados 6576
108319 Engenharia de Software 7583

A álgebra relacional é um formalismo usado para a manipulação de um banco de dados relacional. Ela é composta de oito operações: união, interseção, diferença, produto cartesiano, projeção, restrição, junção e divisão. Essas operações são usadas na SQL, que é uma linguagem desenvolvida para a manipulação de bancos de dados relacionais.

Para a implementação do modelo relacional em um SGBD deve-se adicionar restrições de integridades para evitar informações incorretas no banco. Uma restrição de integridade é uma condição especificada que limita os dados que podem ser armazenados em uma instância. Muitas restrições podem ser impostas em um esquema do banco. As restrições de chave impõe que um certo campo de uma relação é um identificador único para uma tupla. Quando existe um relacionamento entre relações o campo que representa o elo deve possuir uma restrição de chave estrangeira. Algumas restrições gerais também podem ser impostas como um campo que deve possuir valores somente dentro de uma faixa específica.

Modo de Funcionamento

Para aplicarmos o modelo relacional em um sistema de gerenciamento de banco de dados devemos abstrair alguns conceitos do modelo para a computação. Uma relação é representada por um arquivo e as tuplas são os registros, e cada arquivo consiste de várias páginas. Uma página é uma unidade lógica do disco definido pelo sistema operacional. Cada registro do arquivo possui um identificador único, chamado de rid.

Para armazenarmos os dados em um SGD podemos usar duas estruturas diferentes sobre um arquivo de registros. O arquivo heap é uma estrutura não ordenada, onde os registros são armazenados de forma aleatória. O arquivo agrupado é uma estrutura onde existe uma organização dos registros através de uma chave. Essas estruturas de dados possuem muitas ineficiências quando aplicadas isoladamente, então foram criadas técnicas de indexação que otimizam o funcionamento das operações sobre os arquivos de registros. Existe também duas estruturas de índice que são aplicadas sobre os arquivos, uma estrutura baseada em hash e outra baseada em árvore. A indexação é usada sobre uma chave dos registros para facilitar as operações sobre um banco de dados.

Inserção: A inserção em um arquivo heap sempre é feita inserindo o registro ao final do arquivo. No arquivo ordenado deve-se encontrar a posição adequada do registro, adicioná-lo e mover todos os registros posteriores. Em um ídice baseado me árvore deve-se inserir a entrada no índice e depois no arquivo. Para um índice baseado em hash inserimos uam entrada no índice e o registro no arquivo.

Deleção: No arquivo heap é feita a busca do registro e a remoção, não é necessário compactar ou reorganizar o arquivo, o espaço que fica pode ser ocupado posteriormente por outro arquivo. No arquivo ordenado deve-se buscar o registro, removê-lo e mover todos os arquivos subseqüentes. Tanto no índice baseado em hash quanto no baseado em árvore deve-se pesquisar no índice o registro e removê-lo do arquivo, uma reorganização no índice pode ser feita.

Busca: Tanto no arquivo heap quanto no arquivo ordenado a busca deve percorrer todo o arquivo no pior caso. No índice baseado em árvore deve-se percorrer a árvore da raiz até a folha que contém a informação do registro. No índice baseado em hash é a forma mais eficiente, basta calcular o valor hash do registro e buscá-lo no arquivo.

Pontos Fortes

Justamente por descrever um banco de dados através de conceitos matemáticos simples e bem conhecidos, o modelo é de fácil entendimento. Podemos notar facilmente a correspondência entre as terminologias do modelo relacional com a computação: uma relação é um arquivo, uma tupla é um registro e valores de domínios são valores de itens. Também dependendo da forma como o modelo é aplicado para a construção de um SGBD terá algumas vantagens e desvantagens diferentes. Atualmente o modelo é mais usado com arquivos heap e índices baseado em árvore, pois é a forma mais equilibrada.

Pontos Fracos

Pelos elos entre as relações não serem explícitos, a forma de representar relações como tabelas do modelo relacional não é suficiente para uma implementação eficiente de um SGBD, pois o acesso por relacionamento é convertido em acesso por valor, ou seja, para uma relação a percorreríamos serialmente e para cada tupla tomaríamos o valor no domínio do campo desejado e procuraríamos na relação que esse campo representa uma tupla que possua o mesmo valor do campo. Outros aspecto é a normalização das relações. Existem várias formas normais definidas para o modelo relacional, e dependendo da forma aplicada uma relação teria seu número de tuplas aumentado ou seria dividida em outras três relações, com uma relação representando o elo entre as outras duas. Isso faz com que o modelo ocupe mais espaço para armazenamento.

Referências

FURTADO A. L.;SANTOS C. S. Organização de bancos de dados. 7ªed. Rio de Janeiro: Campus, 1979. 281 p.

GEHRKE J.;RAMAKRISHNAN R. Sistemas de gerenciamento de banco de dados. tradução 3ªed. São Paulo: McGraw-Hill, 2008. 884 p.

S. M. BALDO ;MACÁRIO C. G. N. O Modelo Relacional, Campinas, SP, p. 1-3.