Os Conceitos Primordiais em Banco de Dados

Kaui Aires Oliveira (e-mail) é Bacharelando em Sistemas de Informações. Possui larga Experiência Profissional, cerca de 8 anos trabalhando com TI, é especialista em banco de dados e segurança da informação. Experiências em Oracle, PostgreSQL, MsSQLServer, MySQL, DW, BI e etc. Tendo trabalhado em grandes corporações, como Microsoft (New York), TATA Consultancy Services do Brasil, IBM, Sebrae, FGV e, atualmente, no MEC. Tendo ainda bastante vivência também na área acadêmica, publicando artigos e ministrando cursos/palestras sobre banco de dados, business intelligence, datawarehouse e segurança da informação. E tem um site de publicações de matérias e trabalho pessoal (www.pinguinsdocerrado.com.br).

Tenho notado uma grande confusão acerca do assunto “Modelo Relacional”, então estou descrevendo um pouco sobre este assunto para sanar certas dúvidas que todos têm.

Descriminando conceitos que para alguns está bem fundamentado, mas que para muitos ainda está não totalmente claro. Então vamos lá.
        
Os sistemas de gerenciamento de banco de dados evoluíram dos modelos hierárquicos para os modelos de rede e relacionais. O modelo de banco de dados mais aceito é o relacional. O
Oracle o estende para um modelo relacional de objeto, o qual possibilita o armazenamento de modelos complexos de negócios em um banco de dados relacional.

. O Modelo Relacional

O modelo relacional tem três aspectos importantes:

Estruturas

As estruturas são objetos bem definidos (tabelas, visões, índices e assim por diante) que armazenam ou acessam os dados de um Banco de Dados. As estruturas e dos dados Contidos dentro delas podem ser manipulados pelas operações.

Operações

As operações são ações definidas claramente que permitem aos usuários manipular os dados e as estruturas de um banco de dados. Elas devem obedecer a um conjunto predefinido de regras de integridade.

Regras de Integridade

As regras de integridade são as leis que governam as operações permitidas nos dados e nas estruturas de um Banco de Dados. Elas protegem os dados e as estruturas de um banco de dados, garantindo integridade e segurança a estrutura.


Os sistemas de gerenciamento de banco de dados relacionais oferecem benefícios como:

. Independência do armazenamento físico de dados e da estrutura lógica do banco de dados.

. Acesso diversificado e fácil a todos os dados.

. Flexibilidade completa no projeto de banco de dados.

. Armazenamento reduzido de dados e redundância.

O Modelo Relacional de Objeto

O modelo relacional de objeto permite que os usuários definam os tipos de objetos, especificando tanto a estrutura quanto os métodos de operação nos dados e o uso desses datatypes dentro do modelo relacional.

Os tipos de objetos são abstrações das entidades do mundo real – por exemplo, pedidos de compra – com as quais os softwares lidam. Eles têm três tipos de componentes:

. Um nome, que serve para identificar o tipo do objeto.

. Os atributos, que são datatypes incorporados ou outros tipos definidos pelo usuário. Eles fazem o modelo da estrutura da entidade e o do mundo real.

. Os métodos são funções ou procedimentos escritos em PL/SQL, armazenados no banco de dados, externamente, ou escritos em uma linguagem como C. Os métodos implementam operações específicas que um aplicativo pode executar nos dados. Todo tipo de objeto tem um método construtor que cria um novo objeto segundo a especificação do datatype.

Esquemas e Objetos de Esquema

Um esquema é uma coleção de objetos de um banco de dados que estão disponíveis para um usuário. Os objetos de esquema são as estruturas lógicas que se referem diretamente aos dados do banco de dados. Eles incluem estruturas, tais como tabelas, visões, seqüências, procedimentos armazenados, sinônimos, índices, agrupamentos e links de banco de dados. (Não há nenhum relacionamento entre um tablespace e um esquema; os objetos do mesmo esquema podem estar em tablespaces diferentes, e um tablespace pode conter objetos de esquemas diferentes).

Tabelas

Uma tabela é a unidade básica de armazenamento do Oracle. Ela contém todos os dados armazenados em linhas e colunas que podem ser acessados pelo usuário. Cada tabela é definida com um nome e um conjunto de colunas. Cada coluna recebe um nome e um datatype, (como CHAR, DATE, ou NUMBER) e uma largura que pode ser predeterminada pelo datatype como tipo DATE, ou escala de precisão (somente para datatype NUMBER). Depois de que uma tabela é criada, linhas de dados podem ser inseridas, consultadas, excluídas, ou atualizadas.

Visões

Uma visão é uma apresentação personalizada dos dados de uma ou mais tabelas. Ela também pode ser vista como uma “consulta armazenada”. As visões não contêm ou armazenam realmente os dados, mas elas os retiram das tabelas nas quais se baseiam, chamadas de tabelas base das visões. As tabelas base podem, por sua vez, ser tabelas ou visões.

Assim como as tabelas às visões podem ser consultadas, atualizadas, inseridas e excluídas com algumas restrições. Todas as operações executadas em uma visão, na verdade, afeta as tabelas base desta visão.

Seqüências

Uma seqüência gera uma lista serial de números exclusivos para as colunas das tabelas de um banco de dados. Elas simplificam a programação do aplicativo, gerando automaticamente valores numéricos exclusivos para as linhas de uma ou varias tabelas. Por exemplo, vamos assumir que dois usuários estejam inserindo simultaneamente linhas de novos empregados para a coluna EMP_NO nenhum usuário precisa esperar que o outro insira o próximo número disponível de empregado. A seqüência gera automaticamente os valores corretos para cada usuário.

Unidades de Programa

A expressão “unidade de programa” é usada para referir-se aos procedimentos armazenados, funções pacotes, triggers e blocos anônimos.

Um procedimento ou função é um conjunto de declarações SQL e PL/SQL (a extensão para a SQL da linguagem de procedimento do Oracle) agrupadas como unidade executável para trabalhar com uma tarefa específica.

Os procedimentos e as funções permitem combinar a facilidade e a flexibilidade do SQL à funcionalidade de procedimento de uma linguagem de programação estruturada. Usando a PL/SQL, tais procedimentos e funções podem ser definidos e armazenados no banco de dados para uso constante. Os procedimentos e as funções são idênticos, exceto pelo fato de que as funções sempre retornam um valor exclusivo para quem as chamou, enquanto os procedimentos não.

Os pacotes fornecem um método para armazenar os procedimentos relacionados, as funções e as outras construções de pacote como uma unidade do banco de dados. Embora eles forneçam ao administrador do banco de dados ou desenvolvedor de aplicativo os benefícios de organização, eles também oferecem maior funcionalidade e desempenho elevado para o banco de dados.

Sinônimos

Um sinônimo é um alias de uma tabela, visão, seqüência ou unidade de programa. Um sinônimo não é, na verdade, um objeto de esquema em si, mas sim uma referência direta a ele.

Eles são usados para:

. Mascarar o nome real e o proprietário de um objeto ou esquema.

. Fornecer acesso público a um objeto de esquema.

. Fornecer transparência de localização para tabelas, visões ou unidades de programa de um banco de dados remoto.

. Simplificar declarações SQL para os usuários do banco de dados.

Um sinônimo pode ser público ou privado. Um usuário pode criar um sinônimo privado, o qual só estará disponível para ele. Os administradores de banco de dados quase sempre criam sinônimos públicos que tornam o objeto do esquema básico disponível para qualquer usuário do banco de dados.

Índices

Os índices são estruturas opcionais associadas às tabelas, as quais aumentam o desempenho da recuperação de dados. Assim como o índice de um livro ajuda a você a localizar as informações em um espaço de tempo bem menor, um índice do Oracle fornece um caminho mais rápido para dados da tabela.

Ao processar uma solicitação, o Oracle pode usar de forma eficiente algum ou todos os índices disponíveis para localizar as linhas solicitadas. Eles são úteis quando os aplicativos consultam com freqüência um intervalo de linhas de uma tabela. Exemplo: Todos os empregados com salário maior que mil dólares ou uma linha específica.

Os índices são criados em uma ou mais colunas de uma tabela. Depois de criado, ele é automaticamente atualizado e usado pelo Oracle. As alterações nos bancos de dados tais como, o acréscimo, a atualização ou a exclusão de linhas é incorporado automaticamente e todos os índices relevantes com total visualização para usuários.

Os índices são lógica e fisicamente independentes dos dados e podem ser excluídos e criados separadamente e a qualquer momento, sem afetar as tabelas ou os outros índices. Quando tirados, todos os aplicativos continuam funcionado; entretanto, o acesso aos dados indexados anteriormente agora será ou poderá se tornar mais lento.

Clusters e Hash Clusters

Os agrupamentos (clusters) e agrupamentos (hash clusters) são estruturas opcionais para armazenar os dados de tabelas. Eles podem ser criados para aumentar o desempenho da recuperação de dados.

Tabelas Agrupadas

Os agrupamentos são grupos de uma ou mais tabelas armazenadas fisicamente juntas porque compartilham de colunas comuns e quase sempre usadas juntas. Como as linhas relacionadas são armazenadas fisicamente juntas, o tempo de acesso ao disco melhora consideravelmente.

As colunas relacionas das tabelas de um agrupamento são chamadas chave de agrupamento. Elas são indexadas para que as linhas do agrupamento possam ser recuperadas com uma quantidade mínima de E/S. Como os dados de uma chave de agrupamenos tem um índice (um agrupamento não Hash) são armazenados apenas uma vez no caso de várias tabelas, os agrupamentos podem armazenar um conjunto de tabelas de forma mais eficiente do que quando elas são armazenadas individualmente (desagrupada).

Os agrupamentos também podem melhorar o desempenho da recuperação de dados, dependendo da distribuição e das operações SQL que são executadas com mais freqüência nos dados.

Em particular, as tabelas agrupadas que são consultadas nas associações se beneficiam do uso dos agrupamentos porque as linhas comuns às tabelas associadas são recuperadas na mesma operação de E/S.

Assim como os índices, os agrupamentos não afetam o projeto do aplicativo. O fato de uma tabela fazer ou não parte de um agrupamento é transparente para o usuário e para os aplicativos. Os dados armazenados em uma tabela agrupada são acessados por meio de SQL da mesma maneira que os de uma tabela desagrupada.

Os Agrupamentos Hash

Os agrupamentos Hash também juntam os dados ta tabela com aqueles normais de índice (os agrupamentos são indexados com um índice em vez de uma função Hash). Entretanto, uma linha é armazenada em um agrupamento Hash com base no resultado da aplicação de uma função Hash ao valor-chave de agrupamento da linha. Todas as linhas com o mesmo valor de chave são armazenadas juntas no disco.

Os agrupamentos Hash são uma opção melhor do que o uso de uma tabela indexada ou um agrupamento de índice, quando uma tabela é consulta com freqüência com consultas de igualdade, por exemplo: (retornar todas as linhas do departamento 10). Nessas consultas, o valor-chave do agrupamento especificado é reapresentado. O valor resultante da chave Hash aponta diretamente para a área do disco que armazena as linhas.

DataBase Links

Um database link (link de banco de dados) é um objeto nomeado de esquema que descreve um “caminho” de um banco de dados para o outro. Eles são usados implicitamente quando uma referência é feita a um nome de objeto global em um banco de dados distribuído.

Desta vez é isto. Gostaria de que neste meu primeiro artigo ficasse claro certos conceitos que, por mais “simples” que seja, ainda confunde muito. Espero que tenham gostado e este é o primeiro de muitos. Grande Abraço!