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.
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:
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.
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.
Formalmente falando, uma relação é um conjunto de tuplas que seguem um esquema de relação.
Um esquema de relação é uma definição dos atributos de uma tupla.
Formalmente falando, uma tupla é uma lista ordenada de valores, onde cada valor é do domínio especificado pelo atributo definido no esquema de relação.
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.
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.
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.
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.
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.
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.
É o processo de organização eficiente dos dados dentro de um banco de dados cujos objetivos principais são:
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.
A versão mais moderna da FN1 apenas exige que os dados estejam na forma de tabelas e todos os campos sejam atômicos.
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..
A FN3 exige que não existam atributos transitivamente dependentes da chave.
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 Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world