Baixe o app para aproveitar ainda mais
Prévia do material em texto
CENTRO UNIVERSITÁRIO ASSUNÇÃO UNIFAI JAQUELINE LACERDA DOS SANTOS Banco de Dados – Sql São Paulo 2003 JAQUELINE LACERDA DOS SANTOS Banco de Dados – Sql Trabalho de Conclusão de Curso apresentado ao Curso de Ciências da Computação, para obtenção parcial do grau de Bacharel* em Ciências da Computação. ORIENTADOR: Profº. Ms. ANDRÉ LUIZ GARCIA PEREIRA São Paulo 2003 AGRADECIMENTOS Primeiramente a Deus por estar sempre presente na minha vida, por me dar saúde, inteligência, força e coragem para enfrentar todos os obstáculos. Aos meus pais pela educação e apoio designado a mim por todos os anos de estudo. Ao Profº. Ms. André Luiz Garcia Pereira pela atenção e colaboração no decorrer desta pesquisa, sempre apresentado e observando os pontos de maior importância. RESUMO Este trabalho tem como objetivo analisar as mudanças ocorridas nos últimos anos em relação à tecnologia de Banco de Dados. A qual sofreu várias mudanças, saindo de meras relações hierárquicas até chegar ao conceito de objetos. Atualmente as aplicações requerem objetos compostos com uma complexa estrutura interna, tendo um gerenciamento de comportamentos que engloba métodos associados a objetos e suas operações, amplas regras de negócios e longas transações. Estas necessidades, juntamente como conhecimento adquirido ao longo da utilização da tecnologia de armazenamento em computadores, leva-se a banco de dados sofisticados, até mesmo orientado a objetos, que ao contrário dos primeiros bancos de dados, que caracterizam–se por ter uma uniformidade, registros pequenos, campos de registros fixos e sem estrutura, entre outras, caracteriza-se por seus conceitos de estrutura de objetos com seus atributos e métodos, hierarquia de classes, múltipla herança, identidade de objetos, etc. Com as imposições de mercado juntamente com as evoluções dos conceitos associados à tecnologia, tem-se a garantia de que serão seguidas as regras de negócio, trazendo para os tempos atuais, uma maior facilidade em um único objetivo: a integridade e a velocidade da informação. SUMÁRIO 1 INTRODUÇÃO.................................................................................................... 12 2 CONCEITOS E DEFINIÇÕES DE BANCO DE DADOS.................................. 13 2.1 EXEMPLOS......................................................................................................... 15 2.2 HISTÓRICO......................................................................................................... 17 3 MODELOS DE BANCOS DE DADOS.............................................................. 19 3.1 MODELO HIERÁRQUICO................................................................................. 20 3.2 MODELO DE REDES......................................................................................... 21 3.3 MODELO RELACIONAL................................................................................... 22 3.4 AS TERMINOLOGIAS PRESENTES NO SGBD RELACIONAL................... 24 3.4.1 ARQUIVOS.......................................................................................................... 24 3.4.2 TABELAS............................................................................................................ 25 3.4.3 CAMPOS.............................................................................................................. 26 3.4.4 LINHAS................................................................................................................ 26 3.4.5 COLUNAS........................................................................................................... 26 3.4.6 REGISTROS......................................................................................................... 26 4 CHAVES............................................................................................................... 27 4.1 CHAVES PRIMÁRIA.......................................................................................... 28 4.2 CHAVE ESTRANGEIRA.................................................................................... 29 4.3 CHAVE ALTERNATIVA.................................................................................... 30 5 MODELO ENTIDADE – RELACIONAL........................................................... 31 5.1 CONJUNTO DE ENTIDADES............................................................................ 31 5.2 CONJUNTO DE RELACIONAMENTO............................................................. 32 5.3 DIAGRAMA ENTIDADE – RELACIONAMENTO.......................................... 33 5.3.1 ENTIDADES FRACAS E FORTES.................................................................... 35 6 ESTRUTURA DOS BANCOS DE DADOS RELACIONAIS............................ 36 6.1 ESTRUTURA BÁSICA....................................................................................... 37 7 O QUE É SGBD ? ................................................................................................ 38 7.1 AS VANTAGENS E DESVANTAGENS DO USO DE UM SGBD.................. 40 7.2 QUANDO NÃO UTILIZAR UM SGBD............................................................. 41 8 PARA QUE GUARDAR DADOS ( NECESSIDADES DE ARMAZENAMENTO ) ? .................................................................................... 42 8.1 PRINCIPAIS OPERAÇÕES PARA ATUALIZAÇÃO DOS DADOS............... 43 9 NECESSIDADE DE UMA FERRAMENTA PARA ISSO SQL UMA LINGUAGEM DE CONSULTA.......................................................................... 44 10 SQL....................................................................................................................... 45 10.1 HISTÓRICO......................................................................................................... 46 10.2 ESTRUTURA....................................................................................................... 54 10.3 UMA APLICAÇÃO DO SQL.............................................................................. 59 11 ESTUDO DE CASOS........................................................................................... 66 12 CONCLUSÃO...................................................................................................... 86 REFERÊNCIA.................................................................................... 87 LISTA DE ILUSTRAÇÕES Figura 1 - Tabela de Dados.......................................................................................... 13 Figura 2 - Na figura abaixo é possível entender melhor o Banco de Dados com a Representação Física................................................................................... 15 Figura 3 - Modelo Hierárquico..................................................................................... 20 Figura 4 - Modelo de Redes......................................................................................... 21 Figura 5 - Modelo de Relacional.................................................................................. 23 Figura 6 - Os discos rígidos, normalmente, são sobrepostos em pilhas, com um pequeno espaçamento entre si para a passagem da cabeça de leitura / gravação. Nessa posição, são chamadosde Winchester. ............................ 24 Figura 7 - Tabela Cad_Curso....................................................................................... 25 Figura 8 - Tabela Cad_Curso....................................................................................... 28 Figura 9 - Tabela Cad_Dependentes............................................................................ 28 Figura 10 - Tabela Cad_Funcionário.............................................................................. 30 Figura 11 - DER............. ............................................................................................... 34 Figura 12 - DER com Entidades Fracas........................................................................ 35 Figura 13 - Tabela Endereço.......................................................................................... 37 Figura 14 - Processamento sem SGBD.......................................................................... 39 Figura 15 - Processamento com SGBD.................................................................. 39 Figura 16 - Número de Página de cada versão......................................................... 47 Figura 17 - Evolução das linguagens de consulta até o surgimento do SQL em 1999.. 49 Figura 18 - No exemplo abaixo, possui um campo do tipo CLOB que pode armazenar até 25.000 caracteres e possui também um campo BLOB que pode armazenar até 5.000 bytes................................................................... 50 Figura 19 - No exemplo abaixo, possui um campo do tipo ARRAY, esse campo pode armazenar até 20 cadeias de caracteres, cada uma com 30 posições.......... 51 Figura 20 - No exemplo abaixo mostra que o tipo ROW pode ser nomeado ou não nomeado ( ao contrário do campo CEP, TipoEndereço é um ROW nomeado)..................................................................................................... 52 Figura 21 - No exemplo abaixo os componentes de um campo ROW são acessados através do operador ‘.’................................................................................. 52 Figura 22 - Hierarquia de tipos de dados do SQL 1999, os retângulos destacados correspondem aos novos tipos..................................................................... 53 Figura 23 - DER............................................................................................................. 62 LISTA DE ABREVIATURAS DBM ( Data Base Manager - Gerenciador de Banco de Dados ). GUAM ( Generalized Updated Access Method - Método de Acesso Atualizado Generalizado). COBOL ( Commom Business Oriented Language – Linguagem Orientada a Transação Comum). PL ( Programming Language – Linguagem de Programação ). SEQUEL ( Structured English Query Language – Linguagem de Consulta Estruturada em Inglês ). SQL ( Structured Query Language – Linguagem de Consulta Estruturada ). A Relational Model of Data for Large Shared Data Banks - Um modelo de dados relacional para grandes Bancos de Dados Compartilhados. Communications of the ACM – ACM Comunicações. Oracle Corporation - Corporação de oráculo. ISO ( Internacional Organization for Standardization - Organização Internacional de Normalização ). ANSI ( American National Standards Institute - Instituto Americano de Padrão Nacional ). OQL ( Object Query Language - Linguagem de Consulta à Objeto ). ODMG ( Object Data Management Group - Grupo de Administração de Objetos e Dados ). OMG ( Object Managment Group – Grupo de Administração de Objetos ). ABNT ( Brazilian Association of Norms and Techniques - Associação Brasileira de Normas e Técnicas ). CLOB ( Character Large Object – Objeto de Caráter Grande ). BLOB ( Binary Large Object – Objeto Binário Grande ). 1) Introdução Objetiva-se com esse trabalho, identificar os principais avanços da tecnologia de Banco de Dados, suas características e sua abrangência de usabilidade atual. O Banco de Dados é uma coleção de dados inter-relacionados, representando informações sobre um domínio específico. Existem gigantescas bases de dados gerenciando nossas vidas. Um Banco de Dados contém os dados dispostos numa ordem pré-determinada em função de um projeto de sistema, sempre para um propósito muito bem definido, fornecendo os conceitos básicos dos Sistemas de Bancos de Dados, enfatizando o projeto conceitual, modelagem de dados, tópicos de programação e integração com ambientes de desenvolvimento e técnicas mais utilizadas. Novas tecnologias na área de Banco de Dados têm surgido. Um exemplo tem-se o Banco de Dados Orientado a Objetos, um fator emergente, que integra Banco de Dados e a Tecnologia de Orientação a Objetos. Os Bancos de Dados Orientados a Objetos iniciaram-se primeiramente em projetos de pesquisa nas universidades e centros de pesquisa. Em meados dos anos 80, eles começaram a se tornar produtos comercializados, hoje são mais de 25 produtos no mercado. Para finalizar, será tratada nesse trabalho também a utilização da SQL (Structured Query Language – Linguagem de Consulta Estruturada). É uma linguagem desenvolvida para permitir que qualquer pessoa, mesmo não sendo um programador, realize uma consulta (pesquisa) a um banco de dados, para isso, essa linguagem se aproxima muito da linguagem natural dos seres humanos. 2) Conceitos e Definições Gerais de Banco de Dados O Banco de Dados foi criado para guardar as informações no computador e armazena - las em sistemas de arquivos permanentes. Pode - se definir um Banco de Dados como um arquivo que contém dados que serão transformados em informações, que poderão ser manipuladas pelo gerenciador de Banco de Dados. Sendo manipulado por um conjunto de programas os quais, efetuam operações de manutenção no Banco de Dados, como inclusões, exclusões e atualizações de dados, assim como processos de cálculo e regravações de informações, também operações de pesquisa de informações mais complexas para os níveis gerenciais de controle. No Banco de Dados existem tabelas identificadas por campos e linhas; cada linha representa um registro do Banco. Através desta organização, a busca na base de dados fica mais fácil não importando a quantidade de linhas. Pode - se dizer que esse conjunto de dados é tão bem acessado por aplicações diferentes. TB_ENDEREÇO COD_MORADOR NOM_MORADOR COD_RUA NOM_RUA NUM_CASA NUM_FONE Fig.1.: Tabela de Dados Um Sistema de Banco de Dados não é nada mais d registros por computador, ou seja, um sistema cujo objetiv torná-las disponíveis quando solicitadas. [DATE, 2000]. organizado que pode ser utilizado e Nome da Tabela Campos da Tabela o que um sistema de manutenção de o global é manter as informações e Banco de Dados é o conjunto de dados organizados de maneira lógica, visando permitir a otimização dos processos referentes a seu armazenamento e recuperação. [CORNACHIONE, 1998] Para entender se melhor o que é Banco de Dados, é necessário saber que a informação é um “dado“ que foi processado por um determinado “sistema”, obtido de uma tal forma que seja de utilidade pelo usuário receptor, seja para a execução de tarefas como para a tomada de decisões. É importante notar que alguns autores acreditam que há diferença entre dados e informação para outros, ambos são sinônimos. [YONG, 1983]. Arquivos são um conjunto de“dados” (informações) interligados, com formato definido; organizados por alguns critérios estabelecidos por um software DBM ( Data Base Manager – Gerenciador de Banco de Dados ) e pelos seus usuários. Por dados, podemos entender como “fatos conhecidos” que podem ser armazenados e que possuem um significado não muito claro. O significado do termo “Banco de Dados” é mais restrito e possui as seguintes propriedades: Um Banco de Dados é uma coleção lógica de dados com um significado ligado a uma disposição desordenada dos dados não pode ser referenciada como um Banco de Dados; Um Banco de Dados é projetado, criado e armazenado com dados para um propósito especifico, um Banco de Dados possui um conjunto pré-definido de usuários e aplicações; Um Banco de Dados representa alguns aspectos do mundo real, no qual é chamando de “mini – mundo”, qualquer alteração efetuada no “mini – mundo” é automaticamente refletida no Banco de Dados. Arquivos Lógicos Informações para o usuário Banco de Dados (Arquivos Físico) Fig.2.: Na figura abaixo é possível entender melhor o Banco de Dados com a Representação Física. 2.1) Exemplos Existem inúmeros exemplos de Banco de Dados. Ao se procurar um número na lista telefônica, esta sendo usado um Banco de Dados, e sempre que se recebe uma peça através de mala direta, esse envio só é possível porque alguém usou uma lista de correspondência, que é um Banco de Dados de nomes, usando esses exemplos, uma lista telefônica é um Banco de Dados de nomes e clientes em potencial e endereços. Um Banco de Dados é uma coleção de dados armazenados, usados pelo sistema de aplicações de uma empresa especifica. Está definição requer alguma explicação, “Empresa” é simplesmente um termo genérico conveniente para designar uma organização comercial, cientifica, técnica ou de outra natureza que seja razoavelmente auto-suficiente. Alguns exemplos são: Companhias de manufaturas; Bancos; Hospitais; Universidades; Departamentos do governo. Qualquer empresa tem necessariamente que manter uma quantidade de dados sobre suas operações; estes são os “dados operacionais”. Os dados operacionais das empresas provavelmente incluiriam o seguinte dados sobre: Produtos; Contabilidade; Pacientes; Estudantes; Planejamento. Portanto, um “Banco de Dados“ é um deposito de dados armazenados. Geralmente ele é tanto “Integrado” como “Compartilhado”. Integrado, significa que o Banco de Dados pode ser a união de diversos arquivos que, de outra forma seriam distintos, eliminando parcial ou totalmente qualquer redundância entre os arquivos; Compartilhado, significa que partes individuais de dados podem ser compartilhados entre diversos usuários diferentes, significando que cada um daqueles usuários pode ter acesso à mesma parte do dado (e pode usá-la para finalidades diferentes). Um Banco de Dados compartilha na realidade uma conseqüência do fato de ser integrado. Em outras palavras, um determinado banco de dados será percebido por usuário diferentes sob uma variedade de formas diferentes. O termo compartilhado, freqüentemente expandido para cobrir não somente o compartilhamento como foi descrito, mas também o “compartilhamento concorrente“; isto é, a capacidade de que diversos usuários diferentes, estejam tendo acesso conjunto ao banco de dados possivelmente à mesma parte do dado ao mesmo tempo. Um sistema de banco de dados que suporte esta forma de compartilhamento é algumas vezes conhecido como um sistema de múltiplos usuários. O Banco de Dados é a memória organizada de uma empresa, a serviço de seu desenvolvimento. Um computador bem alimentado é capaz de fornecer, em pouquíssimo tempo os dados necessários para se tomar a melhor decisão. 2.2) Histórico Com a necessidade e o compromisso especifico do governo americano, em fazer pousar Astronautas na Lua, antes do término da década de 60, foi desenvolvido o “Projeto Apollo”. Um dos maiores, mais complexos e bem sucedidos Projetos de Sistemas de Informações Computadorizadas, apoiados na Tecnologia de Banco de Dados já realizados pelo ser humano até o ano 2000. Naquela época, a empresa americana de administração “ROCKWELL” ¹, reconhecendo que não existiam Sistemas de Informações disponíveis no mercado para lidar com o Projeto Apollo pelo fato das informações que seriam armazenadas possuírem tamanho e complexidade muito grande, solicitou então a “IBM” ² que projetasse um Sistema de Informação capaz de atender às suas especificações de requisitos. Em 1964, a “IBM” trabalhando junto com a Rockwell, desenvolveu o “GUAM” ( Generalized Updated Access Method - Método de Acesso Atualizado Generalizado ). Neste ano a plataforma “IBM/360“ ³ foi introduzida no mercado, marcando o inicio da Terceira Geração de Computadores em termos de Hardware, e Software Básico, introduzido também o Sistema Operacional. Os dados requeridos pelo Projeto Apollo representavam basicamente uma grande carta Organizacional Hierárquica, em conseqüência disso, o primeiro modelo de Banco de Dados surgiu, chamado de “Banco de Dados Modelo Hierárquico“, o primeiro e mais influente Sistema Gerenciador de Banco de Dados (SGBD). Em 1968, foi estabelecido um grupo de trabalho de Banco de Dados que ficou conhecido internacionalmente como “ DBTG “ (Data Base Task Group - Grupo de Tarefa de Banco de Dados), com a missão inicial de administrar o desenvolvimento da linguagem “ COBOL “ ( Commom Business Oriented Language – Linguagem Orientada a Transação Comum ). 4 O DBTG concluiu que a necessidade da época, não era simplesmente de um software com a capacidade de manipular listas, mas um Dispositivo Generalizado para definir Estruturas de 5 Dados Complexas, porque as experiências com a Linguagem “PL/1“ da IBM tinha revelado sérias limitações com o enfoque de Banco de Dados Hierárquico, o DBTG optou então por incentivar as pesquisas de uma estrutura de dados que fosse mais geral e voltada para um enfoque de Administração de Banco de Dados, esta estrutura passou a ser chamada de Banco de Dados Modelo Rede (Network). No final dos anos 60, os pesquisadores começaram a descobrir que a área de Banco de Dados continha algumas perguntas interessantes e significativas, que necessitavam de exames mais criteriosos e novas respostas, então em 1970, a área de pesquisa de Banco de Dados foi marcada pela publicação de um artigo de “E.F.Codd “ , um pesquisador da IBM; neste artigo propôs um enfoque de Administração de Banco de Dados baseado na Teoria Matemática dos Conjuntos e das Relações, que passou a ser chamado de “Banco de Dados Modelo Relacional “. 6 Com elegância, simplicidade e a fundamentação teórica das idéias de CODD acabou por interessar outros grupos de pesquisadores para a área de Banco de Dados, sendo assim, os Sistemas Gerenciadores de Bancos de Dados (SGBDs) puderam ser construídos com menor esforço do que antes com os Modelos Hierárquicos e Rede (Network). Muitos Sistemas baseados no Modelo Relacional foram então construídos durante os anos 70, mas apenas com modestos investimentos, com o passar do tempo e a evolução das tecnologias envolvendo computadores, surgiram Sistemas Gerenciadores de Bancos de Dados Relacionais (SGBDR) mais eficientes, dentre eles destacam-se o Sistema R, “IBM System R”. [ITA, 2003] __________________________________________________________________________________________ ¹ Empresa América de Administração ² Marca que identificatoda a linha de microcomputadores pessoais fabricados pela IBM. ³ Inicio da Terceira Geração de Computadores em termos de Hardware, e de Software Básico. Linguagem de Programação iniciada nos anos 60 e 70, principalmente para processamento de informações comerciais. 4 Linguagem de Programação 1 de alto nível que acompanhou o IBM / 360. 5 Edgar Frank Codd, Cientista Inglês criador da tecnologia de Banco de Dados Relaciona (SQL) na década de 70. 6 3) Modelos de Bancos de Dados Os tipos ou modelos de banco de dados podem ser divididos de acordo com as estruturas de dados e os operadores que apresentam ao usuário. O modelo mais utilizado atualmente é o relacional, pois através dele os dados podem ser percebidos pelo usuário como tabelas e os operadores à disposição do usuário podem gerar novas tabelas a partir das tabelas antigas. Os sistemas que antecedem o modelo relacional são chamados de pré-relacionais, são eles: hierárquicos e de rede. São modelos considerados hábito e possuem uma característica comum, todos eles expõem ponteiros para o usuário; mais recentemente foi criado o modelo orientado a objetos que é um sistema em que a unidade de armazenamento é o objeto. Um modelo de dados é uma estrutura de referência para organizar dados, todo SGBD deve suportar um modelo que permita uma representação dos dados de uma realidade. O esquema conceitual de uma aplicação é o resultado da adequação dos requisitos de dados desta aplicação ao modelo de dados do SGBD. Todo modelo de dados deve suportar, no mínimo, a especificação de entidades e relacionamentos. Historicamente, os primeiros modelos de Banco de Dados surgiram na década de 60, desde então, a pesquisa científica na área procura evoluir no sentido de definir e encontrar modelos que representem da melhor maneira possível os dados de uma realidade, ou seja, que organizem os dados de uma forma mais próxima à maneira como estes são vistos e manipulados pelas pessoas no mundo real. [MOREIRA, 2002] Além disso, na implementação de um modelo, busca-se também organizações de dados e estratégias de processamento que otimizem a performance de acesso e métodos de acesso que sejam independentes da aplicação. Um exemplo, disso é a linguagens de consulta, retirando da mesma a tarefa de programar procedimentos para realizar operações sobre dados. 3.1) Modelo Hierárquico Surgiu na década de 60, organizava dados em uma estrutura de Bancos de Dados Hierárquicos. São baseados em registros compostos por diversos campos e são organizados em forma de árvore e não em formato de tabelas. Os registros possuem sub-registros e assim sucessivamente, formando uma ramificação semelhante a uma árvore. Dois registros são unidos por um elo, um é ascendente e outro é descendente. Um ascendente pode ter vários descendentes mas cada descendente tem apenas um ascendente direto. As raízes são os únicos registros que não possuem “PAI” e nenhum nível de ascendente pode faltar. Endereço Município Rua Bairro CEP Fornecedor Fig.3: Modelo Hierárquico [SILBERSCHATZ, 1999] 3.2) Modelo de Redes Utilizado principalmente no final da década de 60 e durante a década de 70, organizava dados em uma estrutura formada por várias listas, que definia uma confusa rede de ligações (estrutura similar a um grafo direcionado). Este tipo de gerenciador de Banco de Dados é parecido com o Modelo Hierárquico, porém, cada registro “filho” pode ser ligado a mais de um registro “pai”, possibilitando a formação de ligações mais complexas, porque não há a restrição a um só tipo de relacionamento que vigora. Fig.4.: Modelo de Redes [SILBERSCHATZ, 1999] 3.3) Modelo Relacional Este modelo é utilizado por quase todos os atuais fabricantes de Banco de Dados do mundo. Criado por Edgar Frank Codd, pesquisador da IBM e definido na década de 70, é considerado até hoje uma das maiores inovações técnicas do século XX. É o modelo de dados dominante no mercado atualmente, organiza dados em um conjunto de relações (tabelas), alem disso é o mais fácil de ser descrito e entendido. O Modelo Relacional consagrou – se como o primeiro modelo de dados para aplicações comerciais. Os primeiros sistemas de Banco de Dados tiveram por base, o modelo de rede e modelo hierárquico, esses dois modelos antigos estão mais próximos da implementação no nível físico que no modelo relacional. No mercado existem outros tipos de sistemas, porém há um pré - domínio dos SGBDs relacionais, principalmente fora das plataformas de grande porte, nestes ambientes estão gradativamente substituindo o SGBD de outras abordagens (Hierárquica, Rede, por exemplo). Banco de Dados Relacional é um grupo de dados percebido pelos usuários como um conjunto de tabelas. [DATE, 2000] A terminologia “relação” foi utilizada na estrutura original devido ao fato de que os sistemas relacionais baseiam – se num conjunto fundamental de idéias teóricas conhecidas como modelo relacional. Essa terminologia é a mais comum na área acadêmica. A terminologia “ tabela” é mais comum na prática e nos produtos comerciais. Uma “relação” é vista como uma “tabela”, onde as colunas indicam os campos e as linhas as ocorrências (valores). Relacionamentos entre relações são estabelecidos por igualdade de valor de campos. Fig.5.: Modelo de Relacional [SILBERSCHATZ, 1999] 3.4) As Terminologias presentes no SGBD relacional: Arquivos Tabelas Campos Linhas Colunas Registros 3.4.1) Arquivos Arquivos são conjunto de Dados, organizados em registros, fixos em suportes magnéticos segundo um processo eletrônico de magnetização. Por exemplo: o texto de uma carta, gravado num disquete; um desenho armazenado num Winchester; um programa gravado num CD-ROM; uma lista de nomes, endereços e telefones, gravada numa BBS; etc. [OLIVEIRA, 1999] Fig.6.: Os discos rígidos, normalmente, são sobrepostos em pilhas, com um pequeno espaçamento entre si para a passagem da cabeça de leitura / gravação. Nessa posição, são chamados de Winchester. Os arquivos de dados contêm as informações fornecidas pelo usuário e são classificados em: Arquivo – Mestre: o qual contém informações que sofrem poucas alterações; Arquivo de transações ou movimento: contém informações que serão utilizadas para atualizar o Arquivo – Mestre; Arquivo de trabalho: contém informações que são armazenadas temporariamente e utilizadas por outros módulos do sistema. 3.4.2) Tabelas Uma tabela é uma área de disco ou memória que armazena uma coleção de dados sobre um tópico especifico, a mesma organiza os dados em colunas e linhas. No Banco de Dados Relacional as tabelas apresentam relações lógicas entre elas. Nome do Campo (Nome do Atributo) Coluna (Atributo) Linha (Tupla) Valor do Campo (Valor do Atributo) Nom_Aluno Mat_Aluno Cur_Aluno Paulo 7150 Economia Paula 7152 Administração Daniel 7154 Ciências Contábeis Daniela 7156 Ciências Contábeis Fig.7.: Tabela Cad_Curso 3.4.3) Campos Campo é um item relacionado ao objeto em questão. Todos os itens incluídos numa mesma coluna, pertencem ao mesmo campo.Cada campo é identificado por um nome de campo (nome de atributo, na terminologia acadêmica). 3.4.4) Linhas Cada linha é composta por uma série de campos, na terminologia acadêmica, as linhas são chamadas de “Tuplas”. 3.4.5) Colunas O conjunto de campos homônimos de todas linhas de uma tabela forma uma coluna. 3.4.6) Registros Um Registro é formado por diversos campos de dados que possuem certa finalidade para ficarem agrupados. O Modelo Relacional formal deixou de usar o termo “ registro”, para usar “tupla” (termo exato de “tupla-n”). O termo “tupla” corresponde aproximadamente a noção de “caso de registro horizontal” , como o termo “relação” corresponde a noção de “tabela” . [UNIMAR, 2003] 4) Chaves A chave é o conceito básico para identificar linhas e estabelecer relações entre linhas de tabelas de um Banco de Dados Relacional Existe a Super Chave que é o conjunto de um ou mais atributos que tomados coletivamente, nos permitem identificar de maneira única uma entidade em um conjunto de entidades e a Chave Candidata que é uma Super Chave para a qual nenhum subconjunto possa ser uma Super Chave. Uma Chave, seja Primária, Candidata ou Super Chave, é uma propriedade do conjunto de entidades e não de uma entidade individualmente. Quaisquer duas entidades individuais em um conjunto não podem ter ao mesmo tempo, os mesmos valores em seus atributos – chave. [INÁCIO, 2002] Existem três tipos de chaves que são as mais utilizadas: Chave Primária Chave Estrangeira Chave Alternativa 4.1) Chave Primária A Chave Primária é a Chave Candidata que é escolhida pelo projetista do Banco de Dados como de significado principal para a identificação de entidade dentro de um conjunto de entidades, é também uma coluna cujo os valores distinguem uma linha das demais dentro de uma tabela. No Banco de Dados da tabela Cad_Curso a “Chave Primária” é a coluna “Mat_Aluno”. Nom_Aluno Mat_Aluno Cur_Aluno Paulo 7150 Economia Paula 7152 Administração Daniel 7154 Ciências Contábeis Daniela 7156 Ciências Contábeis Fig.8.: Tabela Cad_Curso No Banco de Dados da tabela Cad_Dependentes possui uma “Chave Primária Composta”, podendo – se observar que apenas um dos valore dos campos que compõem a chave, não é suficiente para distinguir uma linha das demais. Isso acontece pois tanto um código de empregado quanto um número de dependente podem aparecer em diferentes linhas, sendo assim, para que seja possível identificar uma linha na tabela, é necessário considerar ambos valores. Cod_Empresa Num_Depend Nom_Depend Tpo_Depend Dat_Nascimento 70 1 Felipe Filho 30/09/1994 71 2 Beatriz Esposa 03/10/1958 72 1 Lucas Marido 07/08/1960 73 1 Paula Filha 11/09/1983 Fig.9.: Tabela Cad_Dependentes Portanto qualquer combinação de colunas que contenha as colunas “Cod_Empresa” e “Num_Depend” é uma “Chave Primária”, por isso, nas definições exige-se que essa seja “mínima”. Chave Mínima é quando todas suas colunas forem efetivamente necessárias para garantir a qualidade de valores da chave. Por exemplo, poderia – se incluir mais uma coluna além das duas já existentes, como uma chave primária, mas a inclusão de uma terceira coluna não é necessária para manter a qualidade de valores, devendo - se então obedecer o principio da chave mínima. [INÁCIO, 2002] 4.2) Chave Estrangeira A Chave Estrangeira é uma coluna cujo os valores aparecem necessariamente na Chave Primária de uma tabela, também é o mecanismo que permite a implementação de relacionamento em um Banco de Dados Relacional. No Banco de Dados da tabela “Empresa”, a coluna “Cod_Depto” é uma Chave Estrangeira em relação a Chave Primária da “ Tabela Departamento ”. A existência de uma Chave Estrangeira impõe restrições que devem ser garantidas ao executar diversas operações de alteração de Banco de Dado; como garantir que o novo valor de uma chave estrangeira aparecerá na coluna da chave primária referenciada e que na chave estrangeira não aparecerá o antigo valor da chave primária que está sendo alterada. Cod_Depto Nom_Depto 1 Vendas 2 Produção 3 Financeiro Cod_Empresa Nom_Func Cod_Depto 70 Carlos 3 71 Paula 2 72 Pedro 2 73 Eduarda 1 TB_Empresa TB_Departamento 4.3) Chave Alternativa A Chave Alternativa em algumas ocasiões mais de uma coluna podem servir para distinguir uma linha das demais, uma das colunas é escolhida como chave primária e as demais colunas são chamadas de “Chave Alternativa”. No Banco de Dados da tabela Cad_Funcionário, com dados de empregados na qual tanto a coluna “Cod_Empresa” quanto na coluna “RG” podem ser usadas para distinguir uma linha das demais, no exemplo foi escolhida como chave primária a coluna “Cod_Empresa”, então diz – se que a coluna “RG” é uma chave alternativa. Cod_Empresa Nom_Func Cod_Depto RG_Func 70 Carlos 3 19.527.122-0 71 Paula 2 22.877.697-3 72 Pedro 2 13.432.961-2 73 Eduarda 1 18.681.244-8 Fig.10.: Tabela Cad_Funcionário 5) Modelo Entidade – Relacional O Modelo Entidade – Relacional (E-R) tem por base perceber que o Mundo Real é formado por um conjunto de objetos chamados “Entidades” e pelo conjunto dos “Relacionamentos“ entre esse objetos. O Modelo E-R é um dos modelos com maior capacidade de mudança, que se referem a tentativa de representar o significado dos dados. [SILBERSCHATZ, 1999] Existem três noções básicas utilizadas pelo modelo E – R: Conjunto de entidades Conjunto de relacionamento Diagrama Entidade – Relacionamento 5.1) Conjunto de Entidades Uma entidade é um “objeto” no Mundo Real que pode ser identificada de forma única em relação a todos outros objetos, sendo representada por um conjunto de atributos. Atributos são propriedades descritivos de cada membro de um conjunto de entidades. Um “conjunto de entidades” abrange entidades, do mesmo tipo que compartilham as mesmas propriedades. Os conjuntos de entidades não são necessariamente separados. Um exemplo, é possível definir um conjunto de entidades com todos os empregados do banco (empregado) e um conjunto de entidades com todos os clientes do banco (cliente). A entidade pessoa, pode pertencer ao conjunto de entidades empregado, ou a de cliente, como também a ambos ou a nenhum. A denominação de um atributo para um conjunto de entidades manifesta que o Banco de Dados matem informações similares de cada uma das entidades do conjunto de entidades; entretanto cada entidade pode ter seu próprio valor em cada atributo. Os atributos possíveis ao conjunto de entidades clientes são: nome_cliente seguro_social rua_cliente cidade_cliente Atributos possíveis para o conjunto de entidades empréstimo são: número_empréstimo conta Para cada atributo existe um conjunto de valores possíveis, chamado domínio, ou conjunto de valores, daquele atributo. Propriamente um atributo de um conjunto de entidades é uma função que relaciona o conjunto de entidades a seu domínio, desde que possua alguns atributos, cada entidade pode ser descrita pelo conjunto de entidades. [SILBERSCHATZ, 1999] 5.2) Conjunto de Relacionamento Um relacionamento é uma associação entre várias entidades e também pode ter atributos descritivos. Em um relacionament finir alguns conceitos, tais como: Participação:é relacionamentos; Papel: é a função A definição de papéis um relacionamento precisa s relacionamento de maneiras d o, podemos também de a associação entre os conjuntos de entidades em um conjunto de que uma entidade desempenha em um relacionamento. das entidades em um relacionamento é útil quando o significado de er esclarecido, quando uma entidade participa de uma instância de iferentes. Exemplo, uma entidade empregado só pode participar em um relacionamento como empregado ou gerente. Uma vez que os conjuntos de entidades participantes em um conjunto de relacionamentos são geralmente distintos, os papéis são subentendidos e não são, em geral, especificados. Entretanto, são úteis quando o significado de um relacionamento precisa ser esclarecido, neste caso, quando os conjuntos de entidades e os conjuntos de relacionamentos não são distinguíveis, o mesmo conjunto de entidades participa de um conjunto de relacionamentos mais de uma vez, em diferentes papéis. [INÁCIO, 2002] 5.3) Diagrama Entidade – Relacionamento É composto pelos seguintes componentes: Retângulos: representam os conjuntos de entidades; Elipses: representam os atributos; Losangos: representam os relacionamentos entre os conjuntos de entidades; Linhas: unem os atributos aos conjuntos de entidades e o conjunto de entidades aos seus relacionamentos; Elipses Duplas: representam atributos multivaloradas; Linhas Duplas: indicam participação total de uma entidade em um conjunto de relacionamentos. Nome_Cliente Cidade_Cliente Cliente Empréstimo Devedor Saldo Número_EmpréstimoSeguro_Social Rua_Cliente Fig.11.: DER [SILBERSCHATZ, 1999] Os atributos de um conjunto de entidades que são membros de uma chave primária devem ser sublinhados. Uma linha direcionada do conjunto de relacionamentos devedor para o conjunto de entidades empréstimo especifica que devedor é um conjunto de relacionamentos muitos para muitos ou um para muitos, de cliente para empréstimo. Existem dois tipos de entidades: Entidades Fracas Entidades Fortes 5.3.1) Entidades Fracas e Fortes Entidades Fracas são conjuntos de entidades que não têm atributos suficientes para formar uma Chave Primária, enquanto as Entidades Fortes possuem esses atributos. Um membro de um conjunto de entidades fortes é definido como uma entidade dominante, ao contrário um membro de um conjunto de entidades fracas é uma entidade subordinada. Embora as entidades fracas não tenham uma chave primária, elas possuem uma Chave Parcial que permite a distinção entre cada entidade fraca integrante do conjunto. A chave primária de um conjunto de entidades fracas é formada pela chave primária do conjunto de entidades fortes, mais a chave parcial do conjunto de entidades fracas. O conjunto de entidades dominantes de identificação é dito Proprietário do conjunto de entidades fracas por ele identificada. O relacionamento que associa o conjunto de entidades fracas a seu proprietário é o relacionamento identificador. Um conjunto de entidades fracas é identificado no diagrama E-R pela linha dupla usada no retângulo e no losangos do relacionamento correspondente. Fig.12.: DER com Entidades Fracas [SILBERSCHATZ, 1999] DT_Pagamento Número_Empréstimo Total Número_Pagamentos Total_Pagamento Empréstimo PagamentosPagamentos_ Empréstimo 6) Estrutura dos Bancos de Dados Relacionais Um Banco de Dados Relacional resume - se em uma coleção de tabelas, cada uma com um nome único. Cada tabela tem uma estrutura parecida com o Modelo de Entidade – Relacionamento. Uma linha em uma tabela representa um “Relacionamento“ entre um conjunto de valores. Essa tabela por sua vez é uma coleção de relacionamento entre o conceito de “tabela” e o conceito de “relação” a partir das quais se origina o nome desse modelo de dados. 6.1) Estrutura Básica Nom_Morador Nom_Rua Num_Casa Maria Mario de Andrade 123 Antonio Anita Garibaldi 456 Manuela Paulo Coelho 789 João Maria Leopoldina 987 Antonia D.Pedro 654 Manuel Maria Joaquina 321 Fig.13.: Tabela Endereço Na tabela “ Endereço “ acima, possui três colunas: Nom_Morador, Nom_Rua, Num_Casa. Utilizando o Modelo Relacional, os nomes dessas colunas são tratados como atributos do Modelo de Entidade – Relacionamento, para cada um desses atributos há um conjunto de valores permitidos, chamado domínio do atributo. Cada coluna de uma tabela de um Banco de Dados Relacional é um atributo, para cada atributo há um conjunto de valores permitidos, chamado domínio do atributo. Matematicamente, define – se uma relação como um subconjunto de um produto cartesiano de uma lista de domínios. Como essa definição corresponde quase exatamente à definição de uma tabela, podemos afirmar que as tabelas são em essência relações. É possível para alguns atributos, possuir um mesmo domínio como por exemplo o atributo nom_cliente de uma relação cliente e nom_empregado de uma relação empregado. Um valor de domínio que pertence a qualquer domínio possível é o valor nulo, que indica que um valor é desconhecido ou não existe. 7) O que é um SGBD ? Define – se SGBD (Sistema de Gerenciamento de Banco de Dados) como sendo um “Sistema com um objetivo principal em gerenciar o acesso e a correta manutenção dos dados armazenados em um banco de dados “. É constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses dados. O software gerenciador de Banco de Dados é um programa que cria, manipula, consulta e fornece recursos para facilitar o acesso a dados armazenados em um Banco de Dados. O desenvolvimento tecnológico aliado à evolução dos sistemas de informações nas organizações permitiu que houvesse grandes modificações em relação à programação de aplicações em computadores. Antes se usavam linguagens como COBOL, Basic, C e outras, os programadores colocavam em um programa toda funcionalidade desejada. O gerenciador do banco de Dados está entre o banco de dados físico e o usuário do sistema, as solicitações de acesso que vierem a ser feitas, serão manipuladas pelo SGBD. O SGBD faz com que os usuários tenham uma visão do banco de dados acima do nível do hardware, e suporta as operações do usuário que são expressas em termos daquela visão em níveis mais elevados, o objetivo é isolar os usuários do banco de dados dos detalhes em relação aos hardwares. [DATE, 2000] O SGBD deve fornecer ao usuário uma “Representação Conceitual” dos dados, sem fornecer muitos detalhes de como as informações são armazenadas. Um “Modelo de Dados” é uma abstração de dados que é utilizada para fornecer esta representação conceitual utilizando conceitos lógicos como objetos, suas propriedades e seus relacionamentos. A estrutura detalhada e a organização de cada arquivo são descritas no catálogo. É importante mencionar que os dados e o aplicativo são independentes entre si, ou seja, podemos mudar o último sem alterar o primeiro, por exemplo. Programa Sistema operacional Acesso Lógico Acesso físico Arquivo Fig.14.: Processamento sem SGBD [UNIMAR, 2003] SGBD Sistemaoperacional Banco d Dad e os Chamada externa Acesso lógico Acesso físi co Método de acesso Programa Fig.15.: Processamento com SGBD [UNIMAR, 2003] 7.1) As vantagens e desvantagens do uso de um SGBD No processamento tradicional de arquivos, cada grupo de usuários deve manter seu próprio conjunto de arquivos e dados, desta forma acaba ocorrendo excessos que prejudicam o sistema como: Toda vez que for necessário atualizar um arquivo de um grupo, então todos os grupos devem ser atualizados para manter a integridade dos dados no ambiente como um todo; O excesso desnecessário de dados levam ao armazenamento excessivo de informações, ocupando espaço que poderia estar sendo utilizado com outras informações. Um SGBD multi – usuário deve permitir que múltiplos usuários acessem o banco de dados ao mesmo tempo, este fator é essencial para que múltiplas aplicações integradas possam acessar o banco. O SGBD multi – usuário deve manter o controle de concorrência para assegurar que o resultado de atualizações sejam corretos e deve fornecer recursos para a construção de múltiplas visões. Um SGBD deve fornecer um subsistema de autorização e segurança, o qual é utilizado pelo DBA para criar “contas” e especificar as restrições destas contas; o controle de restrições se aplica tanto ao acesso aos dados quanto ao uso de softwares inerentes ao SGBD. Um Banco de Dados pode incluir uma variedade de dados que estão relacionados de várias formas, deve fornecer recursos para se representar uma grande variedade de relacionamentos entre os dados como: recuperar e atualizar os dados de maneira prática e eficiente. Um SGBD deve fornecer recursos para recuperação de falhas tanto de software quanto de hardware. 7.2) Quando não utilizar um SGBD Em alguns situações, o uso de um SGBD pode representar uma carga desnecessária aos custos quando comparado à abordagem tradicional de arquivos como por exemplo: Alto investimento inicial na compra de software e hardware adicionais; Generalidade que um SGBD fornece na definição e processamento de dados; Sobrecarga na previsão de controle de segurança, controle de concorrência, recuperação e integração de funções. Problemas adicionais podem surgir caso os projetistas de Banco de Dados ou Administradores de Banco de Dados não elaborem os projetos corretamente ou se aplicações não são implementadas de forma apropriada. Se o DBA não administrar o Banco de Dados de forma apropriada, tanto a segurança quanto a integridade dos sistemas podem ser comprometidas. A sobrecarga causada pelo uso de um SGBD e a má administração justificam a utilização da abordagem tradicional de arquivos como por exemplo: O banco de dados e as aplicações são simples, bem definidas e não se espera mudanças no projeto; A necessidade de processamento em tempo real de certas aplicações, que são terrivelmente prejudicadas pela sobrecarga causada pelo uso de um SGBD; Não haverá múltiplo acesso ao banco de dados. 8) Para que guardar dados (Necessidade de armazenamento ) ? Um sistema de Banco de Dados informatizado é capaz de armazenar uma grande quantidade de informações, de forma precisa, facilitando a consulta rápida e por diversos usuários. Existe uma necessidade em se realizar o armazenamento de informações que não se encontram isoladas umas das outras, existe uma ampla escala de dados que se referem a relacionamentos entre as informações a serem manipuladas. Mantendo todo este volume de dados organizados, o Banco de Dados deve permitir atualizações, inclusões e exclusões do volume de dados, sem nunca perder a consistência, e sabendo que na maioria das vezes os acessos serão concorrentes a várias tabelas do Banco de Dados, algumas vezes com mais de um acesso ao mesmo registro de uma mesma tabela. 8.1) Principais Operações para Atualização dos Dados Inclusão: o Sistema Operacional calcula o endereço do registro através do valor de sua chave, localizando na área de índice o local onde será armazenado a chave a ser incluída, reorganizando - se necessário as demais chaves, mantendo – as sempre ordenadas, caso já exista registros neste endereço, ele fará a inclusão na área de colisão. Após esta operação, ele procura na área de dados, um endereço disponível para armazenamento do registro, inclui na posição correta, identificando o endereço do registro que será incluído e o valor do seu endereço atualizado na área de índices. [UNIMAR, 2003] Alteração: o Sistema Operacional calcula o endereço do registro através do valor de sua chave, atualizando no local especifico ou na área de colisão, dependendo de onde ele esteja armazenado. Após esta operação, ele atualiza os dados do registro no endereço correspondente. [UNIMAR, 2003] Exclusão: o Sistema Operacional calcula o endereço do registro através do valor de sua chave, removendo fisicamente a chave de acesso do registro da área de dados ou da área de colisão, dependendo de onde ele esteja armazenado. [UNIMAR, 2003] 9) Necessidade de uma ferramenta para isso SQL uma linguagem de consulta. Um Banco de Dados representará sempre aspectos do Mundo Real. Sendo assim uma Base de Dado é uma fonte de onde poderemos extrair muitas informações derivadas, que possui um nível de interação com eventos como o Mundo Real. A forma mais comum entre o usuário e o Banco de Dados, será através de sistemas específicos que por sua vez acessam o volume de informações geralmente através da linguagem SQL. Os Analistas e Programadores de Desenvolvimento, criam sistemas que acessam os dados da forma necessária ao usuário final, que interage diretamente com o Banco de Dados. A SQL, por outro lado, é caracterizada por ser uma linguagem declarativa, ou seja, ela diz ao computador o que quer que ele faça, sem se preocupar de que forma o trabalho será realizado, o que importa é o resultado. 10) SQL A grande parte do sucesso da SQL se deve ao fato de existir um modelo matemático formal que serviu de base para seu desenvolvimento. SQL – (Structured Query Language – Linguagem de Consulta Estruturada ) tem representado o padrão para linguagens de Banco de Dados relacionais e existem diversas versões. É uma linguagem desenvolvida para permitir que qualquer pessoa, mesmo não sendo um programador, realize uma consulta a um Banco de Dados, é uma linguagem de alto nível para manipulação de dados dentro do modelo relacional. Não é uma linguagem procedural, e não é o usuário quem define como o gerenciador de Banco de Dados executará uma tarefa, e sim o que ele deve fazer. Praticamente todos os produtos de Banco de Dados relacionais que estão no mercado suportam a SQL. 10.1) Histórico A tecnologia de Banco de Dados Relacional se baseia na teoria de conjuntos que foi proposta por Edgar Frank Codd matemático e P.H.D. em Ciências da Computação que divulgou suas primeiras idéias no final da década de 60 e em junho de 1970 publicou o artigo “ A Relational Model of Data for Large Shared Data Banks “ na revista “ Communications of the ACM “, enquanto ele trabalhava para a IBM no Laboratório de Pesquisa de San Jose na Califórnia (hoje é o Centro de Pesquisa Almadén). Esse material é um marco na área de Banco de Dados e rendeu a E.F.Codd,em 1981 o equivalente ao Prêmio Nobel nesta área, o ACM Turing Award. Em 18/04/2003, Codd veio a falecer aos 79 anos e deixou em testamento seus conhecimentos na Teoria Relacional. O Cientista utilizou a álgebra relacional para expressar as ações realizadas nas tabelas, operações como seleção, projeção e junção, foram definidas de forma procedimental utilizando – se notação matemática. [LIMA, 2003] Em 1973 a IBM deu início ao seu primeiro gerenciador de dados relacional, o System R, que utilizava uma linguagem de consulta denominada “ SEQUEL ” que no inicio da década de 80, por motivos jurídicos passa a se chamar “ SQL ”, esse projeto se estendeu até 1979, provou a viabilidade do modelo matemático e foi o berço da SQL. Em 1974 outros dois pesquisadores da IBM, D.D. Charmberlim e Boyce, publicaram um artigo “ SEQUEL: A Stucturd English Query Language ” ao mesmo tempo em que apresentaram um protótipo da IBM denominado SEQUEL – XRM; nasce então a linguagem SEQUEL. A linguagem SQL era uma novidade para a época, os sistemas gerenciadores de Banco de Dados existentes utilizavam o modelo de dados hierárquico ou rede. Para as linguagens de acesso a dados era necessário que o programador navegasse nas estruturas de dados, para obter os de interesse.[LIMA, 2003] Novos fabricantes foram aparecendo, cada um foi incorporando novos recursos ( e incompatibilidade) à linguagem, isto evoluiu para uma tentativa de padronização da linguagem, de maneira que todos adquirissem. Apesar de todo trabalho com pesquisa iniciado e desenvolvido pela IBM, o primeiro sistema de gerenciador de banco de dados relacional ( SGBDR ) disponível no mercado foi o “ Oracle “, lançado em 1979 por uma empresa chamada “ Relational Software “ ( hoje, Oracle Corporation - Corporação de oráculo ). A entrada da IBM neste mercado só aconteceu em 1981, com o lançamento do SQL / DS, e sua consolidação veio apenas em 1983, com o DB2. No inicio da década de 80 várias implementações de SGBDRs utilizavam SQL, cada fornecedor passou a incluir extensões à linguagem conforme seu interesse, então logo se percebeu que era importante a padronização para permitir a portabilidade entre os diversos produtos disponíveis, fortalecendo o mercado. Em 1984, apenas 20 % dos gerenciadores de Banco de Dados seguiam o modelo Relacional. A ANSI (American National Standards Institute - Instituto Americano de Padrão Nacional ) publicou o primeiro padrão em 1986 e denominou o nome de SQL 86, mas no ano seguinte, o padrão foi publicado como uma norma internacional pela ISO ( Internacional Organization for Standardization - Organização Internacional de Normalização ). Em 1989 uma nova padronização foi publicada pela ISO incluindo recursos como integridade referencial, valores NULL e DEFAULT, CHECK CONSTRAINT e outras dando origem ao SQL 89. [LIMA, 2003] Em 1990 os gerenciadores de Banco de Dados seguiam o modelo Relacional contabilizavam 80 %. Em 1992 foi publicada a versão do padrão que ficou conhecida como SQL 92 ou SQL 2, contendo 589 páginas ( quase cinco vezes maior do que o SQL 89 que tinha 120 páginas ). Padrão Número de Páginas SQL 86 105 SQL 89 120 SQL 92 575 SQL 99 1500 + Atualmente 3000 + Fig.16.: Número de Página de cada versão Várias novidades foram agregadas nesta versão, como novos tipos de dados ( DATE e TIME ), tabelas temporárias, catálogos, domínios, SQL Dinâmico, tabelas derivadas na cláusula FROM, múltiplos operadores de JOIN, entre outras. O curioso é que muitos desses recursos não foram implementados até hoje pelos fornecedores, na SQL 92, foram definidos 3 níveis de conformidade: Entry Level: Nível Inicial, muito parecido com o SQL 89; Intermediate Level: Nível Intermediário, o mais completo; Full Level: Nível Alto, o mais completo. No inicio da década de 90, era grande o marketing das empresas que tentavam alcançar os sistemas gerenciadores de Banco de Dados orientados a objeto, alguns até anunciavam a morte do SQL, dizendo que seria a vez da OQL ( Object Query Language - Linguagem de Consulta à Objeto ). As empresas deste segmento se reuniram e criaram a ODMG ( Object Data Management Group - Grupo de Administração de Objetos e Dados ), vinculada à OMG ( Object Managment Group – Grupo de Administração de Objetos ), para padronizar a OQL. Em uma reunião o comitê de padronização da SQL trabalhava para implementar características de orientação a objeto ao modelo relacional, gerando em 1999 o padrão mais recente, que ficou conhecido como SQL 3 ( ISSO / IEC 9075 ), sendo está versão maior que a anterior. Árvore Genealógica do SQL Rebatizada como SQL ANSI – SQL ( 1986) Aceito pelo ANSI X3H2 SQL 92 ( 1992 ) SQL 1999 ( 1999) OQL v1 (1993 ) Parte do padrão ODMG 93 SEQUEL ( 1974 ) (Pela IBM ) Fig.17.: Evolução das linguagens de consulta até o surgimento do SQL em 1999 Com o suporte a objetos complexos definidos pela SQL 3 como vídeo, imagem e textos os fornecedores classificaram os seus produtos como “ Sistemas Gerenciadores de Dados Universais ”, as extensões para esses objetos passaram a ser comercializadas como um produto à parte. [BEZERRA, 2003] Foram incluídos novos tipos de dados básicos: BOOLEAN: é o tipo lógico, possui como domínio de valores o conjunto { TRUE, FALSE, UNKNOWN }, no SQL 1999, expressões que retornam valores do tipo BOOLEAN são tratadas como predicados; CLOB ( Character Large Object – Objeto de Caráter Grande) e BLOB ( Binary Large Object – Objeto Binário Grande ): Um campo BLOB pode armazenar dados binários, como uma imagem. Um CLOB é estruturalmente similar ao BLOB, com diferença de armazenar caracteres, como um currículo ou uma coleção de artigos. Em um BLOB / CLOB os operadores ‘ > ’ e ‘ < ’ não podem ser utilizados, operadores de comparação para esse tipo são igualdade ‘ = ’ e desigualdade ‘ <> ‘. BLOBs e CLOBs também não podem ser utilizados em definições de chaves primárias e chaves estrangeiras ou em cláusulas ORDER BY e GROUP BY. O SQL 1999 também define o conceito de demarcador ( locator), ele serve como uma referência para uma instância de um BLOB / CLOB e evita que todo seu conteúdo seja transferido do Banco de Dados para a Aplicação. Fig.18.: No exemplo abaixo, possui um campo do tipo CLOB que pode armazenar até 25.000 caracteres e possui também um campo BLOB que pode armazenar até 5.000 bytes. CREATE TABLE Empregado ( nome CHAR VARYING ( 15 ), currículo CLOB ( 25K ) CHARACTER SET BRAZILIAN foto BLOB ( 5K )); ARRAY: o tipo ARRAY representa um vetor unidimensional, ou seja, uma lista contendo uma quantidade variável de elementos do mesmo tipo, não são permitidos vetores multidimensionais ( vetor de vetores ), o acesso aos elementos de um vetor é feito através da posição ordinal de cada um. O operador UNNEST é usado na transformação de uma coluna do tipo ARRAY em uma tabela cujas linhas contêm os valores armazenados no vetor. F ar CREATE TABLE Cidade ( nome CHAR VARYING ( 30 ), população INTEGER parques CHAR ( 30 ) ARRAY [20] ); - Utiliza o construtor de ARRAY, através do par de colchetes. INSERT INTO Cidade VALUES (‘Campo Belo’, 30000, ARRAY [‘Parque da Saudade’, ‘Parque Esmeralda’] );- Seleciona o nome da cidade e o nome do primeiro parque. SELECT nome, parques [1] AS parque FROM Cidade - Seleciona o nome da cidade e o nome de cada parque. SELECT C.nome, P.nome FROM Cidade AS C.UNNEST (C.parques) AS P(nome) ig.19.: No exemplo abaixo, possui um campo do tipo ARRAY, esse campo pode mazenar até 20 cadeias de caracteres, cada uma com 30 posições. ROW: o tipo ROW define uma estrutura dentro de uma coluna, se trata de uma tabela aninhada dentro de outra tabela ( um distanciamento do modelo relacional original, que pressupõe tabelas normalizadas ). O tipo ROW é semelhante aos tipos Struct e Record das linguagens C e Pascal. Para armazenar informações sobre empregados, onde cada empregado possui um nome e um endereço. Essa última informação é modelada como um tipo ROW: um endereço é uma estrutura formada pelos campos logradouro, cidade UF e CEP. [BEZERRA, 2003] Fig.20.: No exemplo abaixo mostra que o tipo ROW pode ser nomeado ou não nomeado ( ao contrário do campo CEP, TipoEndereço é um ROW nomeado). Fig.21.: No exemplo abaixo os componentes de um campo ROW são acessados através do operador ‘.’. CREATE ROW TYPE TipoEndereco ( logradouro CHAR ( 30 ), cidade CHAR ( 20 ), unidadeFederativa CHAR ( 2 ), CEP ROW ( prefixo CHAR ( 5 ), sufixo CHAR ( 3 ) ); CREATE TABLE Empregados ( nome CHAR ( 40 ), endereço TipoEndereco); INSERT INTO Empregados VALUES (‘Ana Silva’, (Rua XYZ, 28’, ‘Cuiabá’, ‘MT’, (‘22733’, ‘000’))); SELECT E.nome, E.endereço.cidade FROM Empregados E; Extensões Objeto Relacional: 9 Hierarquia de Tabelas; 9 Tipos de Dados Definidos pelo usuário; 9 Tipos de Dados de Coleção ( Ex.: Arrays ) 9 Suporte a Large Objects ( LOB´s) TRIGGERS: o SQL 1999 introduz o conceito de TRIGGERS, que são rotinas atreladas a eventos de modificação ( INSERT, UPDATE ou DELETE ) de uma tabela, essa técnica fornece um controle maior sobre os dados, pois as regras de negócio escritas na TRIGGER são respeitadas por todas as aplicações que utilizam o banco. Outra vantagem é que uma eventual modificação nas regras fica disponível automaticamente para todas essas aplicações. SavePoint; Extensões Olap ( Cube e Roll Up ); Comando Select com recursividade; Stored Procedures; Funções definidas pelo usuário. [BEZERRA, 2003] Fig.22.: Hierarquia de tipos de dados do SQL 1999, os retângulos destacados correspondem aos novos tipos. [BEZERRA, 2003] A ABNT ( Brazilian Association of Norms and Techniques - Associação Brasileira de Normas e Técnicas ) é representante do Brasil, no comitê da ISO, que trabalha na padronização da SQL. Um Brasileiro teve importante participação na criação do SQL 3, Nelson Mattos, P.H.D. em Ciências da Computação e representante da IBM, que participou dos comitês ANSI e ISO e teve centenas de sugestões aceitas. A SQL é hoje muito mais do que uma linguagem de consulta; é possível criar tabelas, índices e visões; definir regras de integridade, impor restrições de segurança, implementar resposta a eventos utilizando “ triggers ”; procedimentos e funções, além de muitos outros recursos. A tendência é que continue se distanciando de seu propósito original, agregando cada vez mais funcionalidades. A quarta geração da linguagem SQL deverá ser publicada em 2003 e possivelmente será chamada de SQL 2003. [LIMA, 2003] 10.2) Estrutura A linguagem SQL é bastante ampla, suportando comandos para criação e manipulação de Banco de Dados, de tabelas, como de recuperação de dados. Além desses recursos, a linguagem ainda oferece recursos de segurança, permitindo criar usuários do Banco de Dados e restringir seu acesso a eles. A linguagem SQL tem diversas partes: Linguagem de definição de dados ( Data Definition Language – DDL): a DDL proporciona comandos para a definição de esquemas de relações, exclusão de relações, criação de índices e modificação nos esquemas de relações; Linguagem interativa de manipulação de dados ( Data Manipulation Language DML ): a DML engloba comandos para inserção, exlusão e modificação de tuplas no Banco de Dados; Incorporação DML (Embedded SQL): a forma de comandos SQL incorporados foi projetada para aplicação em linguagens de programação de uso geral, como PL / 1, Cobol, Pascal, Fortran e C; Definição de visões: a DDL possui comandos para definição de visões; Autorização: DDL engloba comandos para especificação de direitos de acesso a relações e visões; Integridade: DDL possui comandos para especificação de regras de integridade que os dados que serão armazenados no banco de dados devem satisfazer. Atualizações que violarem as regras de integridade serão desprezadas; Controle de transações: a SQL inclui comandos para a especificação de início e término de transações, bem como bloqueios de dados para controle da concorrência; Algumas Definições de Tabelas: Criação das Tabelas na tablespace TS_DADOS01 ====================================== CREATE TABLE BANCO (COD_BANCO NUMBER(10), NOME_BANCO VARCHAR2(30), ENDERECO VARCHAR2(50)) TABLESPACE TS_DADOS01 ---------------------------------------------------------------------- CREATE TABLE AGENCIA_BANCO (COD_BANCO NUMBER(10), COD_AGENCIA NUMBER(7), NOME_AGENCIA VARCHAR2(30), ENDERECO VARCHAR2(40)) TABLESPACE TS_DADOS01 ----------------------------------------------------------------------- CREATE TABLE CONTA_CORRENTE (NUM_CONTA NUMBER(10), COD_BANCO NUMBER(10), COD_AGENCIA NUMBER(7), SALDO NUMBER, TIPO VARCHAR2(1), CPF_CGC NUMBER(12)) TABLESPACE TS_DADOS01 ----------------------------------------------------------------------- CREATE TABLE CLIENTE (CPF_CGC NUMBER(12), NOME VARCHAR2(50), ENDERECO VARCHAR2(60), FONE VARCHAR2(15)) TABLESPACE TS_DADOS01 ----------------------------------------------------------------------- CREATE TABLE EMPRESTIMO (NUM_EMPRESTIMO NUMBER(5), VALOR NUMBER, PRAZO NUMBER(2), CPF_CGC NUMBER(12), COD_BANCO NUMBER(10), COD_AGENCIA NUMBER(7)) TABLESPACE TS_DADOS01 ----------------------------------------------------------------------- Criação das Constraints NOT NULL ============================ ALTER TABLE BANCO MODIFY NOME_BANCO NOT NULL -------------------------------------------------------- ALTER TABLE AGENCIA_BANCO MODIFY NOME_AGENCIA NOT NULL ---------------------------------------------------------- ALTER TABLE CONTA_CORRENTE MODIFY SALDO NOT NULL ------------------------------------------------------------ ALTER TABLE CLIENTE MODIFY NOME NOT NULL ----------------------------------------------------------------------- Criação das Constraints CHECK ========================== ALTER TABLE EMPRESTIMO ADD CONSTRAINT CK1_VALOR CHECK (VALOR > 5000) ----------------------------------------------------------------------- ALTER TABLE EMPRESTIMO ADD CONSTRAINT CK_PRAZO CHECK (PRAZO IN (12,24,36)) ----------------------------------------------------------------------- ALTER TABLE CONTA_CORRENTE ADD CONSTRAINT CK_TIPO_CC CHECK (TIPO IN ('J','F')) ----------------------------------------------------------------------- Criação das Constraints PrimaryKey criando os index na Tablespace TS_INDEX01 ========================================================== ALTER TABLE BANCO ADD CONSTRAINT PK_BANCO PRIMARY KEY(COD_BANCO) USING INDEX TABLESPACE TS_INDEX01 ------------------------------------------------------------------------------ ALTER TABLE AGENCIA_BANCO ADD CONSTRAINT PK_AGENCIA_BANCO PRIMARY KEY(COD_BANCO, COD_AGENCIA) USING INDEX TABLESPACE TS_INDEX01 ----------------------------------------------------------------------- ALTER TABLE CONTA_CORRENTE ADD CONSTRAINT PK_CONTA_CORRENTE PRIMARY KEY(NUM_CONTA, COD_BANCO, COD_AGENCIA) USING INDEX TABLESPACE TS_INDEX01 ----------------------------------------------------------------------- ALTER TABLE CLIENTE ADD CONSTRAINT PK_CLIENTE PRIMARY KEY(CPF_CGC) USING INDEX TABLESPACE TS_INDEX01 ----------------------------------------------------------------------- ALTER TABLE EMPRESTIMO ADD PRIMARY KEY(NUM_EMPRESTIMO) USING INDEX TABLESPACE TS_INDEX01 ----------------------------------------------------------------------- Criação das Constraints FOREIGN KEY =============================== ALTER TABLE AGENCIA_BANCO ADD CONSTRAINTS FK_BANCO FOREIGN KEY(COD_BANCO) REFERENCES BANCO(COD_BANCO) ----------------------------------------------------------------------- ALTER TABLE CONTA_CORRENTE ADD CONSTRAINT FK_AGENCIA_BANCO FOREIGN KEY(COD_BANCO,COD_AGENCIA) REFERENCES AGENCIA_BANCO(COD_BANCO,COD_AGENCIA) ----------------------------------------------------------------------- ALTER TABLE EMPRESTIMO ADD CONSTRAINT FK_EMPRESTIMO FOREIGN KEY(COD_BANCO,COD_AGENCIA) REFERENCES AGENCIA_BANCO(COD_BANCO,COD_AGENCIA) ----------------------------------------------------------------------- ALTER TABLE EMPRESTIMO ADD CONSTRAINT FK_EMPRESTIMO_CPF FOREIGN KEY(CPF_CGC) REFERENCES CLIENTE(CPF_CGC) ----------------------------------------------------------------------- ALTER TABLE CONTA_CORRENTE ADD CONSTRAINT FK_CONTA_CORRENTE_CFP FOREIGN KEY(CFP_CGC) REFERENCES CLIENTE(CFP_CGC) ------------------------------------------------------------------------- [CRISTINA E RICARDO, 2002] 10.3) Uma aplicação do SQL Antes de vermos uma aplicação em SQL, precisamos entender as principais funções de um SELECT: SELECT: usada para relacionar os atributos desejados no resultado de uma consulta; FROM: associa as relações que serão pesquisadas durante a evolução de uma expressão; WHERE: consiste em um predicado envolvendo atributos da relação que aparece na cláusula from. SELECT < colunas_da_tabela > FROM < nome_da_tabela > WHERE < condição_lógica > Quando desejamos suprimir duplicidades na apresentação de resultados de uma cláusula select, utilizamos a chave DISTINCT: SELECT DISTINCT < colunas_da_tabela > FROM < nome_da_tabela > A cláusula select pode conter expressões aritméticas envolvendo os operadores: ( +, -, *, / ) e operandos constantes ou atributos das colunas. Quando queremos exibir todas as colunas ( ou atributos ) da tabela ( ou relação ), podemos usar * em invés de especificar todas as colunas da tabela. A cláusula Where tem como finalidade delimitar um conjunto de valores ou intervalo de valores a serem recuperados por uma cláusula select, utiliza operadores lógicos AND, OR e NOT e operadores de comparação ( <, <=, >, >=, = e <> ), além desses é utilizado também pelo SQL operadores BETWEEN, usado para determinar intervalos de valores para uma coluna, e IN, para a seleção de valores pontuais de uma coluna. SELECT * FROM < nome_da_tabela > WHERE < nome_da_coluna > BETWEEN < valor_inicial > AND < valor_final > SELECT * FROM < nome_da_tabela > WHERE < nome_da_coluna > IN ( < série_de_valores >) Podemos também modificar os nomes das colunas de uma tabela para efeito de exibição através da cláusula AS: SELECT < nome_da_coluna > AS < novo_nome > FROM < tabela > Temos também o operador LIKE, usado na cláusula Where, é útil quando desejamos encontrar coincidências de pares, ou seja, quando procuramos por valores de atributos que sejam semelhantes a um determinado valor fornecido. Identificamos esses valores através do uso de dois caracteres especiais: %: usado pra comparar qualquer substring; _: usado para comparar qualquer caracter. Seleciona da tabela ALUNOS todos os alunos cujo nome inicia com ‘ AU ’ SELECT NA, NOME FROM ALUNOS WHERE NOME LIKE ‘ AU %’ Seleciona da tabela ALUNOS todos os alunos com NA= ‘107007’, ‘117007’, 127007’, ETC... SELECT NA, NOME FROM ALUNOS WHERE LIKE ‘ 1_7007’ A cláusula ORDER BY permite a classificação das colunas de uma tabela de modo decrescente ou crescente ( padrão) SELECT < colunas > FROM < tabela > ORDER BY < coluna_de_classificação > ASC ou ORDER BY < coluna_de_classificação > DESC Para podermos entender melhor o que foi explicado anteriormente vamos utilizar uma “ Consulta de um Sistema Médico”, observando o DER que é necessário para montar o sistema por inteiro, localizamos tudo o que necessário para fazermos o sistema, não só a consulta. Fig.23.: DER O Select para visualizar as tabelas que foram utilizadas no Sistema Médico: SQL> select table_name from user_tables 2 / TABLE_NAME ------------------------------ AME_CONSELHO AME_CONTATO AME_CONVENIO AME_DOCUMENTO AME_ENDERECO AME_ESPECIALIZACAO AME_FILIACAO AME_HORARIO AME_HOSPITAL AME_TB_BENEFICIO AME_TB_CONSELHO TABLE_NAME ------------------------------ AME_TB_CONVENIO AME_TB_DIA_SEMANA AME_TB_DOCUMENTO AME_TB_ESPECIALIZACAO AME_TB_EXAME AME_TELEFONE 17 rows selected. O Select para a busca especificamente iremos utilizar a “Consulta de documentos faltantes”: SELECT '0', a.cod_convenio, a.nom_convenio, a.nom_responsavel, c.dsc_tb_documento FROM ame_convenio a, ame_documento b, ame_tb_documento c WHERE a.cod_convenio = b.cod_convenio AND b.cod_tb_documento = c.cod_tb_documento ORDER BY a.nom_convenio ASC O Select para visualizar as tabelas do Select acima: SQL> desc ame_convenio Name Null? Type ----------------------------------------- -------- ---------------- COD_CONVENIO NOT NULL NUMBER(6) NOM_CONVENIO NOT NULL VARCHAR2(45) NOM_RESPONSAVEL NOT NULL VARCHAR2(35) DAT_NASCIMENTO DATE NUM_RG VARCHAR2(15) NUM_CPF NOT NULL NUMBER(11) END_SITE VARCHAR2(45) COD_TB_CONVENIO NOT NULL NUMBER(3) DSC_FORMACAO VARCHAR2(45) DAT_INCLUSAO NOT NULL DATE NOM_INCLUSAO NOT NULL VARCHAR2(8) DAT_ALTERACAO DATE NOM_ALTERACAO VARCHAR2(8) OPC_DOCTO_FALTA NUMBER(1) DAT_ENTREGA_DOCTO DATE SQL> desc ame_documento Name Null? Type ----------------------------------------- -------- -------------- COD_TB_DOCUMENTO NOT NULL NUMBER(3) COD_CONVENIO NOT NULL NUMBER(6) SQL> desc ame_tb_documento Name Null? Type ----------------------------------------- -------- ------------- COD_TB_DOCUMENTO NOT
Compartilhar