Sei sulla pagina 1di 66

Banco de Dados I

DISCIPLINA: Banco de Dados I CURSOS: Sistema de Informao e Desenvolvimento Web PROFESSOR: Fbio Rogrio Milani

Apostila: Prof. Cleyton Ferrari

[Digite o nome da empresa]

Banco de Dados I

SUMRIO

Breve Histria dos Bancos de Dados ............................................................................................... 6 1.1 1.2 Da Necessidade ao Surgimento ................................................................................................ 6 O que Banco de Dados ........................................................................................................... 8

Modelos de Dados ........................................................................................................................... 12 2.1 2.2 2.3 2.4 2.5 Banco de Dados Hierrquicos ................................................................................................. 12 Banco de Dados de Rede ......................................................................................................... 13 Banco de Dados Relacionais ................................................................................................... 14 Banco de Dados Orientados a Objetos .................................................................................... 15 Lista de Exerccios ................................................................................................................... 15

FAAr Faculdades Associadas de Ariquemes

Fundamentos e Conceitos Tcnicos ................................................................................................ 16 3.1 3.1.1 3.1.2 3.1.3 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.3 3.3.1 3.3.2 Campos, Registros e Tabelas ................................................................................................... 16 Campos de um Registro ...................................................................................................... 16 Registros (ou Linhas) .......................................................................................................... 17 Tabelas de Dados.................................................................................................................18 ndices, Chave Primaria, Chaves Estrangeiras, Chaves Candidata e Domnios .....................18 ndices .................................................................................................................................18 Chave Primaria .................................................................................................................... 19 Chaves Candidatas ............................................................................................................. 20 Chaves Estrangeiras ........................................................................................................... 20 Domnios ............................................................................................................................ 20

Integridade dos Bancos de Dados .......................................................................................... 22 Integridade de Entidade..................................................................................................... 22 Integridade Referencial ...................................................................................................... 23

[Digite o nome da empresa]

Banco de Dados I

3.3.3 3.3.4 3.4 3.5 4

Integridade de Domnios ................................................................................................... 23 Integridade de Campos ...................................................................................................... 23

As doze regras de Codd .......................................................................................................... 24 Lista de Exerccios .................................................................................................................. 26

Modelagem de Dados ..................................................................................................................... 27 4.1 4.2 4.2.1 4.2.2 4.2.3 4.3 4.4 A importncia da modelagem de dados ................................................................................. 27 Conceito de Entidade-Relacionamento ER ............................................................................ 28 Modelo Conceitual ............................................................................................................. 28 Modelo Lgico .................................................................................................................... 29 Modelo Fsico ..................................................................................................................... 30

Entidades................................................................................................................................ 30 Relacionamentos .................................................................................................................... 32 Condicionalidade................................................................................................................ 32 Tipos e Graus de Relacionamento ...................................................................................... 33

FAAr Faculdades Associadas de Ariquemes

4.4.1 4.4.2 4.5 4.6 5

Smbolos de diagramas e convenes de Nomeao ............................................................. 35 Lista de Exerccios .................................................................................................................. 36

Normalizao ................................................................................................................................. 37 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 Dependncia Funcional.......................................................................................................... 37 A Normalizao de Dados ...................................................................................................... 37 Anomalias de Modificaes .................................................................................................... 38 Primeira Forma Normal 1FN .............................................................................................. 38 Segunda Forma Normal 2FN .............................................................................................. 40 Terceira Forma Normal 3FN ............................................................................................... 41 Forma Normal de Boyce/Codd FNBC ................................................................................ 42 Quarta Forma Normal 4FN ................................................................................................ 43 Quinta Forma Normal 5FN................................................................................................. 44

[Digite o nome da empresa]

Banco de Dados I

5.10

Roteiro de aplicao da Normalizao ................................................................................... 44 Aplicao da 1FN ............................................................................................................ 44 Aplicao da 2FN ........................................................................................................... 44 Aplicao da 3FN ........................................................................................................... 45 Forma Normal Final....................................................................................................... 45

5.10.1 5.10.2 5.10.3 5.10.4 5.11 6

Lista de Exerccios .................................................................................................................. 45

Linguagem SQL .............................................................................................................................. 46 6.1 6.2 6.3 6.4 6.4.1 A Importncia da Linguagem SQL ......................................................................................... 46 A Linguagem SQL................................................................................................................... 46 Vantagens e Desvantagens da Linguagem SQL ..................................................................... 47 Tipos de dados........................................................................................................................ 48 CHAR(n): ........................................................................................................................... 49 VARCHAR(n) ..................................................................................................................... 49 DATE .................................................................................................................................. 49 TIME .................................................................................................................................. 49 TIMESTAMP ...................................................................................................................... 49 DECIMAL(preciso,escala): .............................................................................................. 49 NUMERIC(preciso,escala) ............................................................................................... 49

FAAr Faculdades Associadas de Ariquemes

6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.4.7

6.4.8 SMALLINT ......................................................................................................................... 49 6.4.9 6.4.10 6.4.11 6.4.12 6.5 6.5.1 6.5.2 INTEGER ........................................................................................................................... 49 FLOAT ............................................................................................................................ 49 DOUBLE PRECISION .................................................................................................... 50 BLOB .............................................................................................................................. 50

Comandos SQL ....................................................................................................................... 50 Criando o Banco de Dados ................................................................................................. 50 Criando Domnios .............................................................................................................. 50

[Digite o nome da empresa]

Banco de Dados I

6.5.3 6.5.4 6.5.5 6.5.6 6.5.7 6.5.8 6.5.9 6.5.10 6.5.11 6.5.12 6.5.13 6.5.14

Criando Entidades............................................................................................................... 51 Alterando a Estrutura de uma Entidade ............................................................................ 53 Criando ndices .................................................................................................................. 54 Apagando ndices ............................................................................................................... 55 Criando Generators ............................................................................................................ 55 Inserindo dados em uma Entidade .................................................................................... 56 Alterando dados em uma Entidade .................................................................................... 56 Excluindo dados em uma Entidade ................................................................................57 Selecionando dados de uma Entidade ............................................................................57 Ordenando os dados Selecionados ................................................................................. 62 Realizando clculos com informaes selecionadas ...................................................... 62 Utilizando Funes de Agregao sobre Conjuntos ....................................................... 63 Utilizando a Clusula DISTINCT ................................................................................... 63 Agrupando Informaes Selecionadas (GROUP BY e HAVING) .................................. 64 Recuperando dados de Vrias Tabelas........................................................................... 64 Utilizando Consultas Encadeadas (Subqueries) ............................................................ 66

FAAr Faculdades Associadas de Ariquemes

6.5.15 6.5.16 6.5.17 6.5.18

[Digite o nome da empresa]

Banco de Dados I

1 Breve Histria dos Bancos de Dados


1.1 Da Necessidade ao Surgimento
Desde os primrdios dos tempos, o homem sempre se deparou com a necessidade de deixar registrados tanto eventos quanto informao que porventura ele achasse importante, ou que pudessem ser teis futuramente. Para isso foram criadas as inmeras tcnicas de pinturas prhistricas, as inscries hieroglficas dos egpcios, o papiro, a escrita, etc. todas essas tecnologias serviam para que fosse possvel fazer tais registros.

FAAr Faculdades Associadas de Ariquemes

Figura 1 - O Homem comeou a fazer registros de informaes em pinturas e inscries nas paredes

Figura 2 - O papel e os livros so ainda hoje o meio mais comum de registrar informaes

J nos ltimos sculos, a forma mais comum de registro de informaes tem sido o papel. graas a ele hoje temos conhecimento do que se passou na historia humana, podemos expor nossas idias ou escrever um belo romance, foi no papel tambm que o homem armazenou seus primeiros dados. Nossa certido de nascimento ou a enciclopdia que se encontra na estante da sala so exemplos bastante concretos. Apesar de sua indiscutvel utilidade, o registro de informaes em papel tem alguns inconvenientes. Tomemos como exemplo uma loja de produtos eletrnicos, que deve ter o registro de seus funcionrios, de seus clientes e de seus fornecedores. necessrio tambm ter um controle detalhado das contas dessa loja e do estoque dos produtos que so vendidos. Todas essas informaes demandam uma forma de armazenamento e recuperao muito prtica, eficiente e confivel. Podemos imaginar quo trabalhoso seria o fechamento da folha de pagamento dos funcionrios; ou a preparao de uma lista dos clientes em atraso com o pagamento. Certamente esse trabalho levaria mais de um dia para ser concretizado e haveria necessidade de pelo menos dois funcionrios dedicados exclusivamente a cada tarefa. Uma primeira forma de registro de informaes da era computacional foi fita de papel perfurada, posteriormente sucedida pelo carto perfurado. Esses dois sistemas foram idealizados por Hermam Hollerith, o fundador de uma empresa que, em 1924, teve o nome mudado para International Business Machines (IBM). Com os cartes ele pode registrar os dados da populao americana em 1889.

[Digite o nome da empresa]

Banco de Dados I

Praticidade, eficincia, rapidez na consulta e confiabilidade das informaes foram os fatores principais que levaram ao desenvolvimento dos bancos de dados computadorizados. Mas possvel encontrar diversas formas de banco de dados no computadorizados em nosso dia-a-dia. Como exemplo pode citar um arquivo de ao, ainda existente em muitos escritrios, que tem por finalidade guardar fichas, pastas e demais documentos em suas gavetas. Com a inveno dos computadores as coisas ficaram um pouco mais fceis. Essa maravilha tecnolgica permite que qualquer informao seja armazenada e recuperada de maneira rpida e com grande facilidade. Programas de banco de dados talvez tenham sido os primeiros a serem desenvolvidos para computadores. Surgiram inicialmente para equipamentos de grande porte, nos anos 1960, como uma evoluo dos sistemas aplicativos que trabalhavam com arquivos em disco. Essa arquitetura tinha vrios inconvenientes, sendo os cinco principais: No havia controle de acesso concorrente de vrios usurios. No era possvel executar mais de um processo ao mesmo tempo num arquivo de dados. A definio da estrutura do arquivo se encontrava inserida no prprio cdigo do aplicativo, o que significa que os programas controlavam as tarefas de gravao e leitura dos dados no arquivo.Isso ocasionava uma dependncia entre o banco de dados e a aplicao, tornando muito complexo o processo de manuteno de todo o sistema. Inconsistncia, redundncia, dificuldade de acesso e isolamento de dados. Problemas relativos segurana nos dados.

FAAr Faculdades Associadas de Ariquemes

Esses sistemas de processamento de arquivos possuam suas estruturas de dados, definidas dentro do cdigo do aplicativo, dificultando compartilhar um mesmo arquivo entre vrios programas, uma vez que todo o cdigo de definio da estrutura do arquivo de dados deveria ser copiado/duplicado entre os programas. Esse fator leva a outro problema: se fosse necessrio alterar a estrutura do arquivo, como a incluso de um novo campo, cada programa que fazia uso do arquivo de dados deveria ser modificada. O acesso ao arquivo era efetuado de forma direta, como mostra a figura abaixo.

[Digite o nome da empresa]

Banco de Dados I

Com um sistema de banco de dados, os aplicativos no tm nenhum conhecimento dos detalhes relativos aos mtodos de gravao e leitura fsica dos dados no arquivo. O que eles fazem simplesmente se comunicar com o software de gerenciamento para recuperar ou armazenar os registros, dessa forma diversos programas poderiam acessar um mesmo banco de dados, e qualquer alterao nele no implicava necessariamente em modificaes nos aplicativos, a figura abaixo mostra como esse processo ocorre.

FAAr Faculdades Associadas de Ariquemes

Assim os sistemas gerenciadores ofereciam (ainda oferecem) uma produtividade maior no desenvolvimento e manuteno tanto dos softwares aplicativos quanto dos bancos de dados. Por outro lado, o trabalho dos analistas/projetistas, programadores e mesmo dos usurios finais tornouse menos artesanal e a qualidade dos sistemas tambm alcanou melhor qualidade. A principal vantagem no uso de um sistema de gerenciamento de banco de dados o estado coerente dos dados que se encontram armazenados no banco. Isso faz com que as informaes extradas dele sejam confiveis e de grande credibilidade. Com o advento dos microcomputadores, as empresas produtoras de softwares viram nesse segmento um timo e lucrativo mercado. Hoje encontramos uma grande variedade de bancos de dados, para as mais diversas plataformas de hardware e sistemas operacionais. Sem duvida um dos softwares mais utilizados em computadores. Hoje os bancos de dados so um componente essencial em nossas vidas dirias, uma vez que podemos encontrar as mais variadas atividades que de uma forma ou de outra possuem alguma interao com um banco de dados. A disseminao do uso de computadores, tanto nas empresas quanto em casa, teve com um forte propulsor a tecnologia de banco de dados, ao ponto de eles terem assumido um papel importantssimo em qualquer rea que utiliza recursos informatizados.

1.2 O que Banco de Dados


Antes de entrarmos na definio de banco de dados, preciso esclarecer a diferena entre informao e dados. Informao qualquer fato ou conhecimento do mundo real e que pode ou no ser registrada/armazenada. Dado a representao da informao, que pode estar registrado

[Digite o nome da empresa]

Banco de Dados I

em papel, num quadro de aviso ou no disco rgido do computador. Para um melhor entendimento da diferena entre os dois termos, considere o quadro a seguir: Informao Est muito quente hoje Dado A temperatura hoje de 38 graus Celsius

Devemos lembrar que um computador armazena e processam dados e no informaes. Falando de forma bastante genrica, um banco de dados um conjunto de dados com um significado implcito, com essa definio bem simplria, pode-se concluir que uma coleo de palavras e nmeros, como os contidos nesta apostila, forma um banco de dados. Mas o uso do termo banco de dados mais restrito, em virtude das seguintes caractersticas: Um banco de dados representa uma poro do mundo real, o qual chamamos de minimundo ou universo de discurso. Qualquer alterao nesse minimundo deve ser refletida no banco de dados. Um banco de dados um conjunto lgico e ordenado de dados que possuem algum significado, e no uma coleo aleatria. Um banco de dados construdo e povoado com dados que tem um determinado objetivo, com usurios e aplicaes desenvolvidas para manipul-los.

FAAr Faculdades Associadas de Ariquemes

Para termos um banco de dados, so necessrios trs ingredientes: uma fonte de informao da qual derivamos os dados, uma interao com o mundo real e um publico que demonstra interesse nos dados contidos no banco. Um banco de dados pode ser armazenado em um ou mais arquivos gravados num dispositivo de armazenamento, com disco rgido, cartes de memria Flash, DVD e etc. O meio de armazenamento mais comumente utilizado o disco rgido, e os demais so mais empregados como forma de backup de arquivos. Se um banco de dados um conjunto de dados relacionados, um sistema de gerenciamento de banco de dados (SGBD) uma coleo de ferramentas e programas que permitem aos usurios a criao e manuteno do prprio banco de dados. Dessa forma podemos considerar o SGBD como um sofisticado software destinado a definio, construo e manipulao. Esses trs termos podem ser mais bem definidos da seguinte maneira: Definio Construo Manipulao Especificao dos tipos de dados, das estruturas das tabelas e das restries que devem ser impostas aos dados que sero armazenados. Processo de acumular os dados num meio de armazenamento totalmente controlado pelo SGBD Operao com atualizao do banco de dados (incluso, excluso e alterao de registro) e extrao de dados, como consultas e relatrios impressos.

Um SGBD deve ainda permitir que bancos de dados sejam excludos ou que sua estrutura seja alterada, como adio de novas tabelas/arquivos.

[Digite o nome da empresa]

Banco de Dados I

10

Alguns sistemas de banco de dados so genricos, ou seja, permitem que praticamente qualquer tipo de dado seja armazenado, uma vez que o prprio usurio define a estrutura do arquivo. Este o caso de programas como Interbase, MySQL, Oracle, etc. Eles so mais flexveis e poderosos, capazes de executar tarefas avanadas de gerenciamento. A maioria possui uma linguagem prpria, ou utiliza a j consagrada SQL, que permite ao usurio criar rotinas especificas ou mesmo aplicativos completos. No entanto, todos esses recursos tm seu preo, e bancos de dados genricos possuem um desempenho inferior ao de sistemas especializados, alem de consumirem mais memria RAM e espao em disco. Como j mencionado no pargrafo anterior, temos tambm sistemas de banco de dados especializado, como os empregados em aplicaes de geoprocessamento (GIS), que trabalham com informaes de formato predefinido. Esses sistemas rodam mais rapidamente que os bancos genricos, em virtude de no oferecerem tantos recursos extras aos usurios. Mas justamente esse fator que restringe sua aplicao a determinadas reas. Faamos uma comparao entre um banco de dados para computador e um pequeno fichrio, daqueles que podem ser vistos em alguns escritrios ou consultrio mdicos. Cada ficha possui diversas colunas ou espaos em brancos, onde so escritas as informaes desejadas. Um banco de dados de computador possui campos que esto agrupados em registros - que representam as fichas. As fichas esto acondicionadas no fichrio, enquanto no computador os registros esto agrupados em arquivos magnticos, gravados em disco. O fichrio em si pode ser comparado ao disco rgido do computador.

FAAr Faculdades Associadas de Ariquemes

Seja qual for o porte do computador, os SGBDs implementados nessas maquinas possuem grandes semelhanas entre si. Algumas caractersticas distinguem um banco de dados de um processamento de arquivos. Como mencionado no tpico anterior, no ultimo sistema cada programa aplicativo possui embutido em seu cdigo-fonte a implementao da estrutura dos arquivos de dados. Se houver mais de um programa que acesse o mesmo arquivo, a descrio dessa estrutura deve ser inserida nele. Exemplos concretos so aplicaes escritas em Pascal, C/C++ ou COBOL. No primeiro as estruturas de registros definem os arquivos do banco de dados. J um banco de dados possui um repositrio no qual as estruturas dos arquivos e os prprios dados so armazenados, no havendo, portanto, redundncia de definies entre aplicaes que fazem uso do mesmo banco. Essa caracterstica denominada Independncia de Programas e Dados, que permitem que qualquer alterao efetuada no banco de dados no implique necessariamente em modificaes nos programas aplicativos. Do outro lado, se o aplicativo for modificado, o banco de dados pode permanecer inalterado.

[Digite o nome da empresa]

Banco de Dados I

11

Essa independncia proporcionada por uma caracterstica denominada Abstrao de Dados. Por meio dela o usurio apenas tem acesso a uma representao conceitual dos dados, sem a necessidade de um conhecimento de detalhes relacionados implementao das operaes ou aos modos com os dados so armazenados. Um banco de dados, principalmente os que suportam vrios usurios, precisa ser capaz de gerenciar mltiplas vises dos dados. Essas vises so subconjuntos de dados temporrios, que existem somente durante uma determinada operao, com um comando de consulta SQL. E j que estamos falando em SGBD multiusurio devemos destacar a necessidade de um controle de concorrncia. Para entender melhor o que vem a ser essa caracterstica, vejamos dois exemplos: No primeiro exemplo vamos imaginar um sistema de gesto de uma loja. possvel ter vrios vendedores acessando ao mesmo tempo o banco de dados para efetuar as vendas. O SGBD deve assegurar que as vendas atualizam corretamente o estoque dos produtos, mesmo que haja acesso simultneo ao produto por mais de um usurio. No segundo exemplo vamos supor uma aplicao para reserva de apartamentos num hotel. Se um atendente estiver no momento com um registro de apartamento acessado, os demais atendentes no podero ter acesso a ele, uma vez que se encontra bloqueado. Esse bloqueio somente ser liberado quando o usurio no estiver mais no registro. Ainda hoje h um mito entre alguns usurios, mesmo os mais avanados, de que trabalhar com banco de dados muito complicado. Realmente, em tempos atrs era uma tarefa um tanto rdua, mas atualmente os softwares de gerenciamento de banco de dados so altamente amigveis e de fcil manuseio. Agora possvel criar uma aplicao inteira, com base de dados, formulrio de entrada, relatrios e tudo mais, sem saber programao, como o caso do Microsoft Access.

FAAr Faculdades Associadas de Ariquemes

[Digite o nome da empresa]

Banco de Dados I

12

2 Modelos de Dados
Existem alguns critrios que podemos utilizar na classificao de bancos de dados. O primeiro deles o modelo de dados em que se baseia o SGBD. Atualmente h dois modelos utilizados comercialmente: modelo de dados relacional e o modelo de dados de objetos. Ainda hoje podemos encontrar aplicaes antigas que usam bancos de dados baseados no modelo de dados hierrquico e no modelo de dados de rede.

2.1 Banco de Dados Hierrquicos


considerado o primeiro tipo de banco de dados de que se tem noticia. Ele foi desenvolvido graas consolidao dos discos endereveis e devido a essa caracterstica, a organizao de endereos fsicos do disco utilizada na sua estrutura. Em sistemas de banco de dados hierrquicos encontramos dois conceitos fundamentais: registros e relacionamento pai-filho. O registro uma coleo de valores que representam informaes sobre uma dada entidade de um relacionamento. Quando temos registros do mesmo tipo denominamos tipos de registros, que similar as tabelas/relaes do sistema relacional. O registro que antecedem outros na hierarquia denominado PAI e os registros que o sucedem so chamados FILHOS. No relacionamento pai-filho um tipo de registro do lado PAI pode ser corresponder com vrios (ou nenhum) tipo de registro do lado FILHO.

FAAr Faculdades Associadas de Ariquemes

Num diagrama hierrquico, os tipos de registros so apresentados como caixas retangulares e os relacionamentos so exibidos como linhas ligando os tipos (pai e filho), numa organizao estrutural semelhante a uma rvore.

Fornecedor

Produto

Contas a Pagar

Podemos perceber que o esquema hierrquico estruturado em arvore, onde o tipo de registro corresponde a um n. Sendo assim, temos ns pai e ns filhos. Nesse tipo de banco de dados devemos nos referir a um relacionamento pai-filho com um par ordenado, no qual temos o tipo de registro PAI e o tipo de registro FILHO, como nos exemplos (Fornecedor, Produtos) e (Fornecedor, Contas a Pagar). Ele apresenta ainda as seguintes propriedades: Um tipo de registro que no possui um tipo de registro pai denominado de raiz. Com exceo do tipo de registro raiz, todos os demais correspondem a tipos de registro filhos dentro de um nico tipo de relacionamento. Um tipo de registro pai pode aparecer em qualquer numero de relacionamento.

[Digite o nome da empresa]

Banco de Dados I

13

Um tipo de registro filho que no possui descendentes (no participa com tipo de registro pai num relacionamento) denominado folha do esquema hierrquico.

Quando um tipo de registro pai participa de mais de um relacionamento, os tipos de registro filhos correspondentes so ordenados, por conveno, da esquerda para a direita. O primeiro sistema de banco de dados hierrquico, e que ainda utilizado num grande numero de organizaes o IMS (Sistema de Gerenciamento de Informaes), desenvolvido pela IBM e pala Rockwell International no fim da dcada de 60, com verses que podem ser executadas em vrios sistemas operacionais da IBM, todos para ambientes de grande porte.

2.2 Banco de Dados de Rede


Os sistemas de banco de dados de rede so tambm conhecidos como CODASYL ou sistemas DBTG, devido ao fato de terem sido definidos pelo Data Base Task Group (DBTG Grupo de tarefas de base de dados) do comit do Conference on Data Systems Language (CODASYL Conferencia sobre linguagens de sistemas de dados) que publicou, em 1971, um relatrio que descrevia o modelo e a linguagem para utilizao em bases de dados, embora esse relatrio no definisse a organizao dos dados propriamente dito. Esses sistemas so largamente utilizados em computadores de grande parte e a primeira vista se parecem com os sistemas hierrquicos, mas permitem que um mesmo registro participe de vrios relacionamentos devido a eliminao da hierarquia. Outra caracterstica que os diferencia do hierrquico a possibilidade de acesso direto a um determinado registro/n da rede, enquanto no sistema hierrquico era necessrio passar pela raiz obrigatoriamente.

FAAr Faculdades Associadas de Ariquemes

Os comandos de manipulao de registros devem ser incorporados a uma linguagem de programao hospedeira. As duas estruturas fundamentais de um banco de dados de rede so os registros (records) e os conjuntos (sets). Os registros contem dados relacionados e so agrupados em tipos de registros que armazenam os mesmo tipos de informaes (como ocorre no sistema hierrquico). Os conjuntos so a forma de representao dos relacionamentos entre os diversos tipos de registros, na forma 1:N (um para muitos). Esse relacionamento representado de forma grfica como uma seta. Um tipo de conjunto possui em sua definio trs componentes: nome do tipo de conjunto, tipo de registro proprietrio e tipo de registro membro.
Tipo de conjunto Tipo de registro proprietrio Tipo de registro membro DEF_FUNC DEPARTAMENTO FUNCIONARIO
Departamento
DEP_FUNC

Funcionrio

Cada ocorrncia num tipo de conjunto relaciona um registro do tipo de registro proprietrio com um ou mais registros (ou mesmo nenhum) do tipo de registro membro. Isso significa que uma ocorrncia pode ser identificada por um registro proprietrio ou por qualquer registro membro. Tecnicamente podemos dizer que o registro proprietrio possui um ponteiro que aponta para um registro membro. Esse registro, que o primeiro do conjunto, aponta para outros que tambm se relacionam com o mesmo registro proprietrio, como numa lista encadeada, o ultimo registro aponta para o registro proprietrio.

[Digite o nome da empresa]

Banco de Dados I

14

2.3 Banco de Dados Relacionais


A grande maioria dos sistemas de gerenciamento de bancos de dados atuais se enquadra no tipo relacional. Um banco de dados relacional se caracteriza pelo fato de organizar os dados em tabelas (ou relaes), formadas por linhas e colunas. Assim, essas tabelas so similares a conjuntos de elementos ou objetos, uma vez que relacionam as informaes referentes a um mesmo assunto de modo organizado. Da mesma forma que na matemtica, podemos efetuar operaes entre dois ou mais conjuntos, como, por exemplo, obter os elementos que so comuns a ambos os conjuntos (tabelas/relaes) num banco de dados relacional. Podemos tambm executar certas operaes com essas tabelas, como ligar duas ou mais por meio de campos comuns em ambas. Quando uma operao de consulta executada, o resultado um conjunto de registros que pode ser tratado como uma tabela virtual (que s existe enquanto a consulta est ativa). Isso significa que no h comandos para efetuar uma navegao pelos registros, do tipo MOVE ou SKIP. O Dr. Edgard F. Cood (1923-2003) formulou os princpios bsicos de sistemas de banco de dados relacional em 1968, baseando-se na teoria dos conjuntos e da lgebra relacional. Segundo ele, certos conceitos da matemtica podiam ser aplicados ao gerenciamento de bancos de dados, provavelmente por ter sido um brilhante matemtico. Em 1985, ele props um conjunto de doze regras para que um banco de dados relacional fosse admitido como tal: 1. Regra de informaes 2. Regra de acesso garantido 3. Tratamento de valores nulos 4. Catalogo relacional ativo 5. Insero, excluso e alterao em bloco 6. Linguagem de manipulao de dados abrangente 7. Independncia fsica dos dados 8. Independncia lgica dos dados 9. Regra de atualizao de vises 10. Independncia de integridade 11. Independncia de distribuio 12. Regra no-subversiva Voltaremos a falar de cada uma dessas regras mais adiante na apostila. Para um melhor entendimento, vamos ao exemplo do sistema de controle de estoque de loja. Ele deve possuir uma tabela com os dados da relao de produtos existentes em estoque, outra com os dados das categorias de produtos e por fim uma terceira tabela que possui informaes sobre os fornecedores dos produtos. Um banco de dados relacional permite que tenhamos informaes divididas entre tabelas de dados. Porem, certas informaes de uma tabela so obtidas a partir de outras. Em nosso exemplo, a descrio da categoria dos produtos obtida da tabela Relao de Categorias. De igual modo, o nome do fornecedor pode ser obtido da tabela Relao de Fornecedores. Um detalhe importante em banco de dados relacionais que pode ser necessrio um campo comum em diversas tabelas, para que seja possvel definir relacionamentos entre elas.

FAAr Faculdades Associadas de Ariquemes

[Digite o nome da empresa]

Banco de Dados I

15

Categorias CategoriaProduto DescricaoCategoria

00001 00002 00003 00004


Produtos CodigoProduto

Eletrnicos Eletrodomsticos Brinquedos Moveis

CodigoCategoria

CodigoFornecedor

NomeProduto

Estoque

123456 0101231 5123511


Fornecedores CodigoFornecedor

00001 00003 00004

00003 00002 00001

Aparelho de Som Teclado Musical Jogo de Dormitrio

5 3 2

NomeFornecedor

Endereco

Bairro

Cidade

Estado

Telefone

00001 00002 00003

ABC Moveis Domsticos Brinquedos e Jogos SomMaster

R.Doze, 120 Av.Das Naes Av. Do Lago

Centro Jd.America Jd.Do Lago

So Paulo Atibaia Osasco

SP SP SP

123444 123555 123666

FAAr Faculdades Associadas de Ariquemes

2.4 Banco de Dados Orientados a Objetos


Ele surgiu em meados de 1980, em virtude da necessidade de armazenamento de dados que no era possvel com os sistemas relacionais devido aos seus limites. Podemos citar como exemplos os sistemas de geoprocessamento (SIG Sistemas de Informaes Geogrficas) e CAD/CAM/CAE, que so baseados em tipos de dados complexos. O grupo de Gerenciamento de Dados Objetos (ODMG em Ingls) definiu um padro de estrutura para banco de dados objetos. Os bancos de dados objetos so comumente utilizados em aplicaes especializadas, como as cientificas. Os sistemas relacionais, no entanto, evoluram quando os fabricantes tornaram a iniciativa de dotlo de capacidade para representao e manipulao de dados complexos. Assim foram adicionadas extenses a linguagem SQL para poder trabalhar com esses novos tipos de dados. Surgiu ento o modelo Objeto-Relacional.

2.5 Lista de Exerccios


Os exerccios seguem em anexo a apostila.

[Digite o nome da empresa]

Banco de Dados I

16

3 Fundamentos e Conceitos Tcnicos


3.1 Campos, Registros e Tabelas
Os bancos de dados possuem seu prprio vocabulrio de termos tcnicos. Os termos se referem a objetos que so os fundamentos dos bancos de dados.

3.1.1 Campos de um Registro O campo a menor unidade destinada ao armazenamento de valores existente em um arquivo ou tabela de um banco de dados e pode ser referenciado por um programa aplicativo. Isso significa que os dados armazenados so separados em pequenos fragmentos. Cada campo somente pode conter um tipo de dado. Tomemos como exemplo a seguinte informao:

Brinquedos & Jogos Educar Av. das Naes, 280 Jd. Amrica Atibaia SP

FAAr Faculdades Associadas de Ariquemes

Listada dessa forma, no faz muito sentido do ponto de vista de um banco de dados. Embora fornea uma informao completa sobre uma empresa (no caso um fabricante de brinquedos), para ser armazenada num banco de dados preciso separ-la em diversas partes. Podemos assumir que cada linha uma frao da informao como um todo. Imagine-a distribuda numa folha quadriculada em que cada item/linha ocupa uma coluna (como nas planilhas eletrnicas). Campos

Fornecedores CodigoFornecedor NomeFornecedor Endereco Bairro Cidade Estado Telefone

00001 00002 00003

ABC Moveis Domsticos Brinquedos e Jogos SomMaster

R.Doze, 120 Av.Das Naes Av. Do Lago

Centro Jd.America Jd.Do Lago

So Paulo Atibaia Osasco

SP SP SP

123444 123555 123666

Durante a estruturao do banco de dados, uma das principais tarefas do projetista do sistema definir os campos que comporo as tabelas. Cada campo recebe um nome de identificao, a especificao do tipo de dado que ser capaz de armazenar e o tamanho para armazenamento, entre outras informaes. Os tipos de dados bsicos que podemos atribuir aos campos so: caractere, numrico (com ou sem casas decimais), data, hora e lgico (valores do tipo verdadeiro ou falso). Nem todos os sistemas de

[Digite o nome da empresa]

Banco de Dados I

17

banco de dados suportam o tipo de dado lgico e alguns possuem um tipo especial denominando auto-incremento. Com esse tipo o valor do campo (que numrico sem casa decimal) incrementado pelo prprio sistema quando um novo registro adicionado a tabela. Isso muito til quando precisamos gerar um valor seqencial nico para cada registro. Geralmente um campo desse tipo usado na definio de uma chave primaria. H sistemas de banco de dados, como o caso dos servidores SQL, que permitem a criao de campos calculados. Esse tipo de campo fornecido por uma expresso matemtica, que envolve outros campos da prpria tabela ou mesmo constantes numricas. Seu valor o resultado obtido por meio dessa expresso. Por exemplo, suponhamos que voc tenha uma tabela de pedidos de cliente e nessa tabela constem campos para entrada da quantidade do produto e o preo unitrio. O preo total do item poderia simplesmente ser obtido multiplicando o valor do campo de quantidade pelo valor do campo de preo unitrio. Em termos simples, a especificao do campo seria parecida com a seguinte instruo fictcia:

DEFINIR VALORTOTAL COMO CALCULO (QUANTIDADE * PRECOUNITARIO)


Em alguns sistemas tambm possvel definir um valor-padro para o campo, o que significa que se o usurio no fornecer um valor, ser assumido o padro. Os sistemas mais recentes incluem um novo tipo de dado chamado BLOB (Binary Large Objects Objetos Binrios Grandes) e permitem o armazenamento de dados no-estruturados, como imagens, sons, vdeos, etc. Geralmente os valores de campos BLOB so armazenados separadamente dos respectivos registros no arquivo de dados, e um ponteiro no registro faz referencia a esses valores. Diversos sistemas permitem que campos do tipo caractere (string) sejam definidos com tamanho fixo ou varivel. No caso de tamanhos fixos, se o usurio entrar com dados cujo comprimento seja menor que o especificado para o campo, os bytes extras so preenchidos com espaos em branco. J com campos de tamanho varivel, somente os caracteres fornecidos pelo usurio sero armazenados. A definio de nome e atributos (tipos de dados e tamanhos) dos campos constitui o que chamamos de formato de registro.

FAAr Faculdades Associadas de Ariquemes

3.1.2 Registros (ou Linhas) Um registro o conjunto de campos valorizados de uma tabela. a unidade bsica para o armazenamento e recuperao de dados e que identifica a entrada de um nico item de informao em particular numa tabela do banco de dados. So tambm chamados de tuplas ou nuplas. Numa tabela cujos registros so formados por cinco campos, cada registro denominado de 5-upla (ou quntupla). Tambm podemos chamar os registros de linhas de uma tabela, pois durante sua visualizao os dados dos campos so todos listados numa nica linha. Se uma tabela de cadastro de clientes possuir 20.000 linhas ou registros, ento ela estar armazenado dados de 20.000 clientes. Os registros de uma tabela de dados so do mesmo tipo, ou seja, permitem o armazenamento dos mesmos tipos de dados. No entanto, seus campos podem ser de tipos e tamanho varivel, o tamanho do prprio registro pode tambm variar conforme os dados que se encontram armazenados nele. Por exemplo, numa tabela de cadastro de produtos, os registros so utilizados

[Digite o nome da empresa]

Banco de Dados I

18

para guardar os dados referentes a produtos, no sendo possvel armazenar qualquer outro tipo de dado (como de clientes ou de funcionrios). durante a estruturao das tabelas do banco de dados que definimos o formato (ou layout) dos registros. Como j mencionado, esse formato de registro envolve a disposio dos seus campos com nomes e atributos. Voltando ao exemplo do tpico anterior, cada linha da tabela representa um registro. Assim a tabela como um todo se resume a um agrupamento de linhas (registros) que so divididos em colunas (campos).

3.1.3 Tabelas de Dados Uma tabela nada mais do que um conjunto ordenado de registros/linhas. Cada registro possui o mesmo numero de colunas (campos). Um banco de dados pode ser formado por uma ou mais tabelas, e cada uma deve ser definida de tal forma que somente possa conter um tipo de informao. Por exemplo, uma tabela para armazenar dados dos clientes, uma para os fornecedores, uma para os produtos, etc. Falando em termos de modelagem de dados, elas representam as entidades do modelo conceitual. Alguns sistemas de banco de dados, como MySQL, criam um arquivo para cada tabela. Outros, como o Interbase, possuem um nico arquivo, dentro do qual esto todas as tabelas (alem de outros recursos, como rotinas autocontidas e ndices).

FAAr Faculdades Associadas de Ariquemes

Cada tabela deve ser identificada por um nome nico dentro do banco de dados. So as tabelas que possuem toda a estrutura/composio dos registros, como nomes, tipos de dados e tamanhos. Uma aplicao de banco de dados somente pode acessar um determinado registro se referenciar a tabela na qual ele esta definido. Na linguagem SQL tambm necessrio especificar o nome da tabela a ser utilizada num comando de consulta ou atualizao de dados. As aplicaes normalmente utilizam varias tabelas do banco de dados para consolidar e retornar informaes nas quais o usurio tem interesse (como na gerao de um relatrio de vendas no ms ou o boletim escolar dos alunos).

3.2 ndices, Chave Primaria, Chaves Estrangeiras, Chaves Candidata e Domnios


3.2.1 ndices Quando precisamos procurar um determinado assunto num livro ou em uma enciclopdia, geralmente recorremos ao ndice para saber em que volume e pagina se encontra a informao. Os ndice nos bancos de dados tm a mesma funcionalidade, ou seja, permitem que os registros com dados sejam encontrados com extrema rapidez. Eles tambm oferecem uma maneira de acesso alternativo aos registros sem que sua posio fsica dentro do banco de dados seja modificada. Por exemplo, se desejarmos listar na impressora todos os clientes em ordem alfabtica de nomes, podemos utilizar um ndice com base nesse campo. Um ndice pode ser simples (quando formado por um s campo) ou composto (formado por vrios campos da tabela). Denominamos os campos que so utilizados na definio de ndices como campos de indexao. Os ndices no contem dados propriamente ditos, mas apenas o valor do campo de indexao e ponteiros que direcionam para o registro adequado dentro da tabela. A informao contida neles automaticamente atualizada, ou seja, se inserirmos ou excluirmos um registro, o ndice tambm ser modificado.

[Digite o nome da empresa]

Banco de Dados I

19

Alguns sistemas de bancos de dados (notadamente os servidores SQL) fazem uso de ndices automaticamente para agilizar as consultas (quando um ndice tiver sido criado para o campo envolvido no comando de consulta). o que se costuma chamar de plano de consulta. Uma caracterstica interessante que diversos sistemas oferecem com relao aos ndices a capacidade de ordenao dos registros de forma crescente ou decrescente. Outro recurso muito til a possibilidade de definir ndices nicos, ou seja, que no permitem duplicidade de dados. Esse tipo de ndice independente da chave primaria. Vamos supor como exemplo uma tabela de cadastro de fornecedores, em que cada registro possui como chave primaria o cdigo do fornecedor. Podemos definir um ndice com base no campo CNPJ que no permite duplicidade, evitando dessa forma que um mesmo fornecedor seja cadastrado duas vezes. Para localizar um registro utilizando ndice, o banco de dados efetua uma pesquisa binria no ndice e ao encontrar um ponteiro para o valor a ser pesquisado, posiciona no registro correspondente da tabela.

3.2.2 Chave Primaria Uma chave primaria um atributo (campo) da tabela que permite a identificao de forma nica dos seus registros. Ela tem por funo ainda aplicar uma ordenao automtica aos registros, uma vez que seu funcionamento similar ao de um ndice. Isso significa que a ordem fsica dos registros determinada por ela. Como ocorre com os ndices, uma chave primaria pode ser formada por um ou mais campos. No ultimo caso, elas so chamadas de chaves compostas.

FAAr Faculdades Associadas de Ariquemes

Uma chave primaria evita que tenhamos registros duplicados, ou seja, no possvel ter dois ou mais registros contendo os mesmos valores nos campos que a compem. As chaves primrias permitem que uma pesquisa seja realizada com maior velocidade. Suponhamos que se deseja encontrar o registro em um banco de dados de clientes, cujo campo RG seja 10.101.101. Se tivermos definido esse campo como chave primaria, a pesquisa dar-se- com maior rapidez. H basicamente dois critrios importantssimos na hora de escolher os campos que vo definir uma chave primaria. Em primeiro lugar devemos escolher campos cujo tamanho no seja muito grande, assim as atualizaes e consultas da chave primaria sero mais rpida. Pelo mesmo motivo, quando tivermos chave composta, devemos procurar incluir o menor numero possvel de campos. O segundo critrio esta relacionado com a capacidade de alterao do valor armazenado no campo da chave primaria. Esse valor deve ser estvel, ou seja, no pode ser modificado (pelo menos de forma to freqente). Isso se deve ao fato de os bancos de dados relacionais utilizarem a chave primaria no relacionamento de uma tabela com outras, como veremos a seguir. H situaes, no entanto, que mesmo sendo parte de chave primaria, um campo deve permitir que seu valor seja alterado. Vamos supor o caso de uma tabela de cadastro de produtos, na qual o campo de cdigo do produto utilizado para armazenar o cdigo de barras impresso na embalagem. Esse campo deve estar habilitado para permitir modificao, uma vez que o fabricante pode, por um motivo qualquer, alterar o cdigo de barras de um produto que j se encontrava em fabricao. Para que isso no afete de forma desastrosa toda a integridade dos dados do banco, os sistemas relacionais oferecem recursos para atualizao em cadeia dos valores nas tabelas envolvidas nos relacionamentos. Isso, no entanto, acarreta uma ligeira queda no desempenho do sistema, principalmente quando existirem muitos registros a serem atualizados.

[Digite o nome da empresa]

Banco de Dados I

20

Preferencialmente, para campos de chaves primarias, devemos utilizar valores que so calculados de forma seqencial pelo prprio sistema, seja por meio de recursos SGDB ou por rotinas do aplicativo que faz uso do banco de dados. Campos que formam chaves primrias so de preenchimento obrigatrio. 3.2.3 Chaves Candidatas Chaves candidatas so campos que poderiam ser utilizados como chaves primrias, mas no so. Por exemplo, numa tabela de cadastro de clientes, a chave primaria definida como o campo de cdigo do cliente, cujo valor seqencial e gerado automaticamente pelo prprio sistema. No entanto, h o campo RG do cliente que, por ser de valor nico (no deve repetir dentro do banco de dados), tambm poderia ser utilizado como chave primria ( uma chave candidata). No entanto, devido ao fato de ser um campo com tamanho demasiadamente grande, e principalmente por no ser ideal para identificar unicamente um cliente, uma vez que no Brasil uma pessoa pode ter mais de um RG, em estados diferentes, ele no utilizado na definio da chave primaria. Sendo prefervel um campo de codificao para cada registro de cliente. um campo de preenchimento obrigatrio tambm. 3.2.4 Chaves Estrangeiras As chaves estrangeiras permitem que os registros de uma tabela sejam relacionados com os de outra tabela pela sua chave primaria. Para exemplificar, vamos supor duas tabelas com as seguintes caractersticas:

FAAr Faculdades Associadas de Ariquemes

Uma tabela de cadastro de categorias de produtos que possua um campo de cdigo de categoria (CodigoCategoria) que chave primria. Uma tabela de cadastro de produtos que possui um campo de cdigo da categoria a que pertence (CodigoCategoria).

Podemos notar que o campo denominado CodigoCategoria existe nas duas tabelas, e na de cadastro de produtos no a chave primria. Como ela utilizada para criar um relacionamento com a tabela de categorias, em que o campo chave primria, dizemos que ela chave estrangeira. Nesse caso, o campo CodigoCategoria chave primria na tabela Categorias e chave estrangeira na tabela Produtos. O vinculo entre as duas tabelas efetuado por meio desses dois campos. Da mesma maneira, o campo CodigoFornecedor chave primria em Fornecedores e chave estrangeira em Produtos. Um outro uso muito comum de chave estrangeira, alm da ligao entre tabelas, no fornecimento de valores de outra tabela (a que contem a chave primaria). Por exemplo, poderamos utilizar uma caixa de listagem para escolha da categoria de produtos numa tela de cadastro de produtos, evitando assim que o usurio entre com informaes indevidas, como cdigo de categoria inexistente. Apesar de normalmente o nome do campo (ou conjunto de campos) que define a chave primria e a chave estrangeira ser o mesmo, perfeitamente possvel nome-los de forma distinta. 3.2.5 Domnios O domnio um tipo de conceito ate certo ponto difcil de demonstrar. A melhor maneira de entend-lo com exemplos concretos. Os domnios se prestam a dois objetivos bsicos: definio

[Digite o nome da empresa]

Banco de Dados I

21

de tipos de dados e especificao de valores que podem ser aceitos pelos campos. Nem todos os sistemas de bancos de dados suportam a criao e uso de domnios. Em geral, todos os sistemas padro SQL do suporte total. Uma das maiores vantagens de utilizar domnios na construo de banco de dados o fato de podermos padronizar os atributos de campos que existem em varias tabelas do banco de dados. Vamos supor que precisamos definir cinco campos para armazenar o endereo, bairro, cidade, estado e CEP. O formato desses campos apresentado na seguinte tabela: Campo Endereco Bairro Cidade Estado CEP Tipo de dado Caractere Caractere Caractere Caractere Caractere Tamanho 50 caracteres 35 caracteres 35 caracteres 2 caracteres 9 caracteres

Apesar de a informao do CEP ser composta apenas por nmeros, devemos definir o campo como sendo caractere para que seja possvel armazenar zeros apresentados a esquerda e o trao de separao, como, por exemplo, 00123-456.

FAAr Faculdades Associadas de Ariquemes

Continuando com o exemplo, esses campos sero criados em trs tabelas: cadastro de funcionrios, cadastro de clientes, cadastro de fornecedores. A probabilidade de definirmos um ou mais campos com tamanho diferente grande. Com os domnios essa probabilidade de erro pode ser evitada. Para isso devemos cri-los, especificando os atributos necessrios a cada campo, e depois empreg-los, especificando os atributos necessrios a cada campo, e depois empreg-los na definio dos campos. Vamos utilizar uma linguagem imaginaria para demonstrar a criao de domnios para esse campo:

DEFINIR DEFINIR DEFINIR DEFINIR DEFINIR

DOMINIO DOMINIO DOMINIO DOMINIO DOMINIO

DM_ENDERECO COM TIPO CARACTERE E TAMANHO 50; DM_BAIRRO COM TIPO CARACTERE E TAMANHO 35; DM_CIDADE COM TIPO CARACTERE E TAMANHO 35; DM_ESTADO COM TIPO CARACTERE E TAMANHO 2; DM_CEP COM TIPO CARACTERE E TAMANHO 9;

Na criao da tabela de dados, devemos fazer referencia a esses domnios da seguinte maneira (linguagem imaginria):

CRIAR TABELA FUNCIONARIOS COM FORMATO (CAMPO ENDERECO COM ATRIBUTO DM_ENDERECO, CAMPO BAIRRO COM ATRIBUTO DM_BAIRRO, CAMPO CIDADE COM ATRIBUTO DM_CIDADE, CAMPO ESTADO COM ATRIBUTO DM_ESTADO, CAMPO CEP COM ATRIBUTO DM_CEP)
O mesmo mtodo seria empregado para as outras duas tabelas de dados. Com isso no h como esquecermos as propriedades para um determinado campo, com, por exemplo, seu tamanho em caracteres.

[Digite o nome da empresa]

Banco de Dados I

22

O segundo uso dos domnios, como j mencionado, na especificao de valores limites ou faixa de dados validos. Por exemplo, podemos criar um domnio para no permitir que o usurio tente entrar com um valor menor ou igual a zero no campo de salrio do funcionrio. Utilizando nossa linguagem imaginaria, teramos:

DEFINIR DOMINIO DM_SALARIO COM TIPO DECIMAL E VALOR MAIOR QUE 0;


A regra principal por trs dos domnios similar a da programao orientada a objetos: defina uma vez, use varias vezes.

3.3 Integridade dos Bancos de Dados


Uma das maiores preocupaes de qualquer desenvolvedor ou projetista de banco de dados encontrar uma forma de garantir a integridade dos dados que se encontram armazenados. Essa preocupao se deve ao fato de que, se houver algum dado crucial armazenado de forma incorreta, o resultado pode ser catastrfico, pois o banco de dados pode apresentar informaes imprecisas ou mesmo totalmente errneas. Imagine a seguinte situao: uma aplicao de contas a receber tem em seu banco de dados vinte e dois registros de pagamentos em aberto, referentes a um determinado cliente. A ligao entre essas informaes (o cadastro do cliente e o pagamento em aberto) feita pelo campo de cdigo do cliente, e por isso o valor desse campo no pode ser alterado de forma nenhuma. Agora digamos que um usurio ou o prprio administrador do banco de dados tenha, fora da aplicao, aberto o banco de dados e alterado o valor do campo do cdigo do cliente na tabela de cadastro de clientes. Logicamente o vinculo ser quebrado, pois os campos utilizados no relacionamento agora possuem valores distintos. Da para ter uma idia do enorme problema que isso causaria. Se o prprio sistema de banco de dados oferecerem formas de restringir ou mesmo impossibilitar a quebra dessa integridade, o desenvolvedor ter menos trabalho, pois no ser necessrio escrever cdigo que faca essa tarefa dentro do aplicativo. Alem disso, como no exemplo, acessando o banco de dados fora da aplicao, s informaes estaro vulnerveis. Como soluo para este problema, a grande maioria dos sistemas hoje existentes possui recursos capazes de gerenciar essa integridade de dados. A seguir relacionamos algumas regras bsicas que um sistema de banco de dados deve contemplar para garantir a integridade.

FAAr Faculdades Associadas de Ariquemes

3.3.1 Integridade de Entidade A regra de integridade define que as chaves primrias de uma tabela no podem ser nulas, ou seja, sempre devem conter um valor. No caso de chaves primrias compostas (formadas por mais de um campo), todos os campos que a formam devem ser preenchidos. Essa exigncia se deve ao fato de a chave primria ser um atributo da tabela que identifica um registro nico, alem de determinar a ordem fsica do registro e tambm ser utilizada no relacionamento com outras tabelas. Devemos ressaltar que um valor nulo diferente de 0 ou um espao em branco. Com campo do tipo caractere, um espao em branco considerado um valor valido, enquanto um valor nulo seria realmente a ausncia de qualquer caractere (mesmo espaos). J com campos do tipo numrico, seja inteiro ou decimal, o valor 0 tambm valido. O valor nulo para esse campo tambm seria a ausncia de qualquer dado (mesmo o 0).

[Digite o nome da empresa]

Banco de Dados I

23

3.3.2 Integridade Referencial De forma bastante resumida, podemos dizer que a regra de integridade referencial estabelece restries ou bloqueios de algumas operaes (notadamente excluso ou alterao) nos dados de campos das chaves primarias utilizadas no relacionamento de uma tabela com outra. Com um exemplo pratico fica mais fcil de entender. Vamos pegar o exemplo de tabelas de Categorias e Produtos, mostradas anteriormente no tpico sobre chaves estrangeiras. A titulo de recordao, temos um campo denominado CodigoCategoria que chave primaria da tabela Categorias e chave estrangeira na tabela Produtos. A categoria cujo cdigo 00001 se relaciona com um ou mais produtos, como, por exemplo, o de cdigo 123456. Se o usurio, acidentalmente, excluir o registro da categoria 00001, os produtos que pertencem a essa categoria ficaro rfos. Teramos o mesmo resultado se o cdigo da categoria fosse alterado. Nesse caso, alem de registro rfo na tabela de produtos, teramos tambm registros pais sem nenhum vinculo na tabela de categorias. O que a integridade referencial faz proibir esse tipo de inconsistncia, impedindo assim que a relao entre a chave primaria e a chave estrangeira seja quebrada. Quando o prprio sistema de banco de dados se encarrega de mant-las, o desenvolvedor novamente se v livre da codificao de rotinas que devem ser includas em seus aplicativos para executar essas tarefas de vigilncia. O sistema tambm deve permitir que o desenvolvedor especifique a forma de tratamento dessas ocorrncias, escolhendo uma das duas opes: proibio ou execuo em cascata. A proibio de uma operao no permite que o usurio exclua ou altere os dados de uma chave primria que chave estrangeira em outra tabela (a menos que essa ultima no possua nenhum registro relacionado com a tabela da chave primaria). J na execuo em cascata, quando um usurio efetua uma excluso ou alterao, essa ao refletida automaticamente nas tabelas relacionadas. No exemplo citado anteriormente, os produtos que pertencem categoria 00001 sero excludos junto com a prpria categoria. Se houvesse uma alterao no cdigo da categoria, ela seria passada aos registros correspondentes na tabela de produtos. A maioria dos bancos de dados padro SQL da suporte a integridade referencial, permitindo que sejam criadas chaves estrangeiras e restries (chamadas CONSTRAINT) para especificar as aes a serem desempenhadas para operaes de excluso e atualizao de dados. 3.3.3 Integridade de Domnios A integridade de domnios estabelece restries e regras na definio dos domnios em si, em vez de diretamente nos campos. Isso ajuda a economizar tempo e trabalho, pois podemos ter vrios campos que so formatados a partir de domnios, e com a regra de integridade definida neles, esses campos automaticamente herdam essas restries. Este o caso do domnio definido como exemplo anteriormente (em nossa linguagem fictcia):

FAAr Faculdades Associadas de Ariquemes

DEFINIR DOMINIO DM_SALARIO COM TIPO DECIMAL E VALOR MAIOR QUE 0;


3.3.4 Integridade de Campos Mesmo que o desenvolvedor tenha definido uma integridade de domnio, s vezes necessrio adicionar restries extras aos campos. No exemplo do domnio definido para salrios, podemos

[Digite o nome da empresa]

Banco de Dados I

24

restringir o intervalo aceito entre 400 e 2500. Devemos ressaltar que a integridade de campos nunca deve conflitar com a de domnio. Dentro da integridade de campos tambm podemos mencionar a validao de dados. Essa regra possibilita que o prprio sistema de banco de dados faca uma verificao quanto aos valores entrados pelo usurio serem validos ou no. No exemplo de cadastro de funcionrios, cada funcionrio tem um cargo, e seu salrio definido em funo do cargo que ocupa. Sendo assim, mesmo que o valor dessa informao esteja dentro da regra definida para o campo (no caso entre R$ 400,00 e R$ 2.500,00), deve ser efetuada uma validao para certificar-se de que o valor fornecido esta dentro do padro para o cargo do funcionrio. Essa validao, sendo efetuada pelo prprio ambiente, tambm isola qualquer aplicativo que faca uso do banco de dados. Um terceiro tipo de integridade de campo diz respeito ao formato dos dados. Por exemplo, para o campo que armazena o numero de CNPJ, as informaes devem ter o formato XX.XXX.XXX/XXXXXX. Se pudermos especificar esse formato para entrada de dados do campo diretamente no sistema, no precisaremos nos preocupar em codificar o aplicativo pra fazer alguma converso. O Microsoft Access permite que sejam especificadas mascaras de entrada para cada campo do banco de dados. H ainda regras de integridade que podem ser definidas atravs de rotinas criadas pelo desenvolvedor, como o caso das Stored Procedures e Triggers do padro SQL.

3.4 As doze regras de Codd

FAAr Faculdades Associadas de Ariquemes

As doze regras estabelecidas por Edgard F. Codd, em 1985, por meio das quais podemos determinar o quanto um banco de dados relacional ou no. Uma vez que elas podem tornar-se uma barreira difcil de transpor, a grande maioria no proporciona suporte a todas elas. Vejamos o que essas regras definem. 1. Regra das informaes em tabelas As informaes a serem armazenadas no banco de dados devem ser apresentadas como relaes (tabelas formadas por linha e colunas) e o vinculo de dados entre as tabelas deve ser estabelecido por meio de valores de campos comuns. Isso se aplica tanto aos dados quanto aos metadados (que so descries dos objetos do banco de dados). 2. Regra de acesso garantido Para que o usurio possa acessar as informaes contidas no banco de dados, o mtodo de referencia deve ser o nome da tabela, o valor da chave primaria e o nome do campo/coluna. No entanto, a ordem de apresentao dos dados no tem importncia no contexto. 3. Regra de tratamento sistemtico de valores nulos O sistema de banco de dados deve ter capacidade para tratar valores que no so fornecidos pelos usurios de maneira que permita a distino de dados reais. Por exemplo, em um campo de armazenamento de dados numricos, podemos ter valores validos, o valor 0 e valores nulos. O termo valor nulo na verdade se refere a falta de informao. Se fossemos efetuar clculos como esse campo, como seriam trados os valores nulos e o valor 0? No caso de valores nulos, mais fcil definirmos uma regra, pois simplesmente podemos ignorar o registro. Mas pra o valor 0 a coisa se complica, j que perfeitamente possvel

[Digite o nome da empresa]

Banco de Dados I

25

que ele seja valido. A maioria dos sistemas faz distino entre valores nulos (falta de dado) e um valor em branco (com o 0). 4. Regra do catalogo relacional ativo Toda a estrutura do banco de dados (domnios, campos, tabelas, regras de integridade, ndices, etc.) deve estar disponvel em tabelas (tambm referenciadas como catlogos). Sua manipulao possvel atravs de linguagens permitidas aos dados regulares. Essas tabelas so manipuladas pelo prprio sistema, quando o usurio efetua alterao na estrutura do banco de dado. 5. Regra de atualizao de alto nvel Essa regra diz que o usurio deve ter capacidade de manipular as informaes do banco de dados em grupos de registros, ou seja, ser capaz de inserir, alterar e excluir vrios registros ao mesmo tempo. 6. Regra de sublinguagem de dados abrangente Pelo menos uma linguagem deve ser suportada, para que o usurio possa manipular a estrutura do banco de dados (como criao e alterao de tabelas), assim como extrair, inserirem, atualizar ou excluir dados, definir restries de acessos e controle de transaes (COMMIT e ROLLBACK, por exemplo). Deve ser possvel ainda manipulao dos dados por meio de programas aplicativos. 7. Regra de independncia fsica Quando for necessria alguma modificao na forma como os dados so armazenados fisicamente, nenhuma alterao deve ser necessria nas aplicaes que fazem uso do banco de dados, assim como devem permanecer inalterados os mecanismos de consulta e manipulao de dados utilizados pelos usurios finais. 8. Regra de independncia lgica Qualquer alterao efetuada na estrutura do banco de dados, como incluso ou excluso de campos de uma tabela ou alterao no relacionamento entre tabelas, no deve afetar o aplicativo que o usa. Da mesma forma, o aplicativo somente deve manipular vises dessas tabelas. Essas vises so uma espcie de tabela virtual, que agrupa dados de uma ou mais tabelas fsicas e apresenta ao usurio os dados. 9. Regra de atualizao de vises Uma vez que as vises dos dados de uma ou mais tabelas so, teoricamente, suscetveis a atualizaes, ento um aplicativo que faz uso desses dados deve ser capaz de efetuar alteraes, excluses e incluses neles. Essas atualizaes, no entanto, devem ser repassadas automaticamente as tabelas originais. 10. Regra de independncia de integridade As vrias formas de integridade do banco de dados (integridade de entidade, integridade referencial, restries, obrigatoriedade de valores, etc.) precisam ser estabelecidas dentro do catalogo do sistema ou dicionrio de dados, e ser totalmente independentes da lgica dos aplicativos. 11. Regra de independncia de distribuio Alguns sistemas de banco de dados, notadamente os que seguem o padro SQL, podem ser distribudos em diversas plataformas/equipamentos que se encontrem interligados em rede.

FAAr Faculdades Associadas de Ariquemes

[Digite o nome da empresa]

Banco de Dados I

26

Esses equipamentos podem inclusive estar localizados fisicamente distantes entre si. Essa capacidade de distribuio no pode afetar a funcionalidade do sistema e dos aplicativos que fazem uso do banco de dados. 12. Regra no-subversiva O sistema deve ser capaz de impedir qualquer usurio ou programador de passar por cima de todos os mecanismos de segurana, regras de integridade do banco de dados e restries, utilizando algum recurso ou linguagem de baixo nvel que eventualmente possam ser oferecidos pelo prprio sistema.

3.5 Lista de Exerccios


Os exerccios seguem em anexo a apostila.

FAAr Faculdades Associadas de Ariquemes

[Digite o nome da empresa]

Banco de Dados I

27

4 Modelagem de Dados
4.1 A importncia da modelagem de dados
Quando pretendemos fazer uma viagem, a primeira preocupao planej-la cuidadosamente e escolher o que vamos levar nas malas. Da mesma forma, quando estamos empenhados no desenvolvimento de um sistema para computador, preciso planejar todas as suas etapas e dedicar ateno especial ao projeto e estruturao do banco de dados. Para isso utilizamos uma tcnica chamada modelagem de dados, cujo objetivo transformar uma idia conceitual em algo que possa ser traduzido em termos computacionais. Com a modelagem de dados possvel refinar um modelo conceitual durante as fases que compem o projeto, eliminando redundncias ou incoerncias que possam inevitavelmente surgir. Sem esse planejamento prvio, com toda certeza, a manuteno do sistema ser mais complicada e constante. No podemos pensar que todo o projeto do banco de dados deva ser assumido somente pela equipe de profissionais de informtica. Muito pelo contraio, preciso que os prprios usurios faam parte das etapas mais criticas como levantamento dos dados, testes de usabilidade e validao. No h duvida de que os profissionais tambm precisam conhecer o negocio da empresa, ou podero aparecer resultados desastrosos. Uma vez que a realidade muda de uma empresa para outra, preciso estabelecer uma formapadro para estruturar um banco de dados independente do tipo de ambiente ou negocio. Para isso foi definido o que chamamos de metamodelo, sendo que o mais utilizado EntidadeRelacionamento (ER). O processo de desenvolvimento de um projeto de banco de dados envolve varias fases. O minimundo representa uma poro da realidade que se deseja transportar para o sistema informatizado. Na fase de levantamento e analise de necessidades a equipe de desenvolvimento deve consultar os potenciais usurios para saber quais so os requisitos bsicos do banco de dados e assim document-los adequadamente. A partir dessa fase so gerados dois produtos, os requisitos funcionais que englobam todas as funes da aplicao, e os requisitos do banco de dados. O prximo passo a criao de um esquema conceitual do banco de dados valendo-se de um modelo de dados de alto nvel. Esse esquema consiste numa descrio detalhada dos requisitos de dados apontados no levantamento junto aos usurios. Nessa descrio encontram-se detalhes sobre as entidades, relacionamentos e restries. Na implementao propriamente dita se encontram as tarefas de criao do banco de dados fsico, utilizando um dos produtos oferecidos no mercado, e na programao das rotinas e transaes que o aplicativo deve conter a partir de ferramentas de desenvolvimento e linguagens disponveis. no projeto fsico que so especificados a estrutura do banco de dados, os caminhos para acesso e a forma de organizao dos arquivos que o compem. No processo de modelagem de dados podemos destacar como bsicas as seguintes etapas: 1. Definio do problema ou objetivo principal; 2. Pesquisa dos sistemas de banco de dados existentes no mercado para adoo; 3. Projeto da estrutura de dados; 4. Construo dos relacionamentos entre os dados;

FAAr Faculdades Associadas de Ariquemes

[Digite o nome da empresa]

Banco de Dados I

28

5. Implementao de regras de negocio e restries; 6. Implementao do desenho da interface com usurio, que tambm envolve a criao de relatrios do sistema.

4.2 Conceito de Entidade-Relacionamento ER


Esse modelo foi concebido em 1976, por Peter Chen, com base na teoria de bancos de dados relacionais de Edgard F. Codd. O conceito principal por trs do modelo E-R (EntidadeRelacionamento) esto na definio de dois grupos de objetos que formam um negocio: Entidades e Relacionamentos. Eles possuem uma ligao to forte que no possvel tratar de um sem mencionar o outro. O que une esses dois componentes uma ao. como uma orao em que temos um sujeito (entidade), um verbo (ao) e um complemento (relacionamento).

FAAr Faculdades Associadas de Ariquemes

Durante a fase inicial de modelagem conceitual dos dados, o profissional precisa observar atentamente tudo que for relevante no mundo real e que deva ser transportado para o sistema que se esta projetando. Com essas informaes j possvel criar um esboo representando de forma grfica o processo. A isso denominamos abstrao ou modelo abstrato. Nela podemos encontrar trs componentes muito importantes: modelo conceitual, modelo lgico e modelo fsico. 4.2.1 Modelo Conceitual a primeira etapa do projeto, na qual se representa a realidade atravs de uma viso global e genrica dos dados e seus relacionamentos. Seu objetivo conter todas as informaes dessa realidade que sero armazenadas no banco de dados, sem que se retratem aspectos relativos ao banco de dados que ser utilizado. Essas informaes podem aparecer no formato de uma lista descritiva das operaes executadas pelos usurios e os dados que eles devem manipular. Veja a seguir um pequeno exemplo: 1. Cadastro de Clientes Dados necessrios: nome completo, tipo de pessoa (fsica/jurdica), endereo, bairro, cidade, estado, CEP, telefone, e-mail, nome para contato. 2. Cadastro de fornecedores Dados necessrios: nome completo, tipo de pessoa (fsica/jurdica), endereo, bairro, cidade, estado, CEP, telefone, e-mail, nome para contato. 3. Cadastro de produtos Dados necessrios: cdigo do produto, nome do produto, modelo, unidade de medida, preo unitrio de compra, preo unitrio de venda, estoque mnimo, estoque Maximo, estoque atual, data ultima compra.

[Digite o nome da empresa]

Banco de Dados I

29

4. Pedidos Dados necessrios: cdigo do produto, quantidade, cdigo do cliente, cdigo do vendedor. 5. Operaes a. Cadastro de produtos O funcionrio adiciona um registro quando um novo produto comprado, incluindo sua descrio, preo de compra e de venda e a quantidade que esta entrando em estoque. b. Cadastro de clientes O funcionrio adiciona um registro quando o cliente que esta efetuando um pedido a prazo no possui cadastro. c. Vendas O funcionrio entra com os produtos que o cliente deseja comprar. Pra finalizar a venda, deve-se especificar se a vista ou a prazo. Na finalizao da venda, a nota fiscal impressa e o estoque dos produtos atualizado. Se for venda a prazo, um carne emitido para pagamento das parcelas mensais. 4.2.2 Modelo Lgico A segunda etapa compreende a descrio das estruturas que sero armazenadas no banco de dados e que resulta numa representao grfica dos dados numa maneira lgica, inclusive j nomeando os componentes e as aes que exercem um sobre o outro. Nessa etapa tambm se define a abordagem de banco de dados que ser utilizada: hierrquica, de rede ou relacional.

FAAr Faculdades Associadas de Ariquemes

[Digite o nome da empresa]

Banco de Dados I

30

4.2.3 Modelo Fsico Do modelo lgico podemos derivar o modelo fsico, no qual se encontram detalhados os componentes de estrutura fsica do banco de dados, como tabelas, campos, tipos de valores, ndices, etc. Quando chegarmos a esse ponto, estaremos prontos para a criao propriamente dita do banco de dados, utilizando o sistema gerenciador que mais se adequar as tarefas. Veja um exemplo hipottico: Estrutura do Cadastro de Paciente Nome do campo Cdigo do Paciente Nome do Paciente Endereo Bairro Cidade Estado CEP Data de Nascimento Tipo de dado Numrico Alfanumrico Alfanumrico Alfanumrico Alfanumrico Alfanumrico Alfanumrico Data Tamanho do Campo 5 dgitos 50 caracteres 50 caracteres 40 caracteres 40 caracteres 2 caracteres 9 caracteres 10 caracteres

FAAr Faculdades Associadas de Ariquemes

4.3 Entidades
No modelo ER (Entidade-Relacionamento) os dados so descritos como entidades, atributos e relacionamentos, que podem ser exibidos num formato grfico denominado diagrama ER. Sendo a entidade o objeto bsico representado no modelo ER, veremos seu conceito em primeiro lugar. Podemos definir entidade como um objeto do mundo real que possui atributos capazes de torn-lo identificvel e que possui uma existncia independente. Essa existncia pode ser fsica como no caso de pessoas, casa, relgio, computadores, funcionrios, etc. ou apenas conceitual como um servio, uma disciplina escolar, uma consulta medica, etc. As entidades possuem atributos que as descrevem, como a entidade de um produto, que representada pelo seu cdigo, nome, modelo, preo e estoque. Esse atributo so partes importantes dos valores armazenados no banco de dados. Os atributos podem ser classificados em simples ou compostos. Quando a informao contida no atributo no pode ser dividida, como o preo unitrio de um produto, ento ele tido como simples. J os atributos compostos permitem uma diviso em partes menores da informao. Tomemos como exemplo a entidade de endereos, que pode ser quebrada em nome do logradouro, numero do imvel, bairro, cidade, estado CEP.

[Digite o nome da empresa]

Banco de Dados I

31

Endereos Logradouro Nmero imvel Bairro Cidade Estado CEP

Mas como podemos reconhecer uma entidade? Isso pode ser feito pela analise criteriosa de cada informao levantada. nessa analise que se procura agrupar as informaes conforme suas caractersticas, ou que esto relacionadas com um mesmo assunto. Vamos supor o caso de um cadastro de funcionrios de uma empresa. Alem da lista de funcionrios, temos tambm uma relao de setores em que cada um trabalha. Dessa forma podemos identificar de imediato dois grupos de informaes. Funcionrios Setor

Como foram j mencionadas, as entidades possuem atributos que diferenciam uma das outras. Esses atributos contem valores que descrevem as diversas ocorrncias de uma entidade, que so identificadas como os registros de uma tabela no banco de dados fsico. Entidade Setor Cdigo do Setor 0001 0002 0003 0004 0005 Entidade Funcionrio Matrcula 20145-8 13002-1 09021-4 80240-1 84230-8 12090-3 Nome do Funcionrio Jos Bento Figueira Augustino Valentin Alberto Vasconcelos Denise Souza Bruno Lima Iris da Costa Cdigo de Setor 0002 0003 0004 0003 0004 0005 Nome do Setor Administrao Tesouraria Atendimento Almoxarifado Contabilidade

FAAr Faculdades Associadas de Ariquemes

Existe uma caracterstica dos atributos que indica quantas vezes ele pode ocorrer, a qual recebe o nome de cardinalidade. A maioria dos atributos somente armazena um nico valor, e chamamos isso de cardinalidade 1. Este o caso do atributo do nome do funcionrio. Em algumas situaes, no entanto, possvel termos atributos que devem conter mais de um valor, que denominados de

[Digite o nome da empresa]

Banco de Dados I

32

atributos multivalorados. O atributo para armazenamento da formao profissional do funcionrio um exemplo, j que pode conter um ou mais valores, no caso de se ter vrios cursos superiores. Os atributos tambm so formados por um tipo de dado (numrico, caractere, data, etc.) e por um tamanho que representa a quantidade de dgitos ou caracteres alfanumricos que podem ser armazenados. Um atributo especial (ou conjunto de atributos) pode representar uma ocorrncia nica de entidade dentro de toda a coleo. a chave da entidade, que no banco de dados fsico representada pela chave primaria. As entidades que no possuem atributos chaves so denominadas de tipos de entidades fracas, ao contrario dos tipos de entidades fortes, que so aquelas que possuem atributos chaves. Os itens/registros de entidades que pertencem ao primeiro tipo se relacionam com itens/registros existentes em outra entidade, sendo essa ultima denominada entidade identificadora.

4.4 Relacionamentos
Um relacionamento pode ser definido como a representao de uma ao ou fato que associa os itens de uma entidade com os itens de outra entidade. Falando em termos matemticos, um relacionamento pode ser parecer com as linhas que ligam os elementos de um conjunto aos elementos de outro. Na modelagem de dados, os relacionamentos so representados graficamente como um losango. Vamos utilizar o exemplo anterior das entidades SETOR e FUNCIONRIO. Nele podemos perceber que para ser funcionrio da empresa ele deve estar lotado num determinado setor. Assim temos um vinculo entre essas duas entidades.

FAAr Faculdades Associadas de Ariquemes

Como podemos notar, h um verbo (de preferncia na voz ativa) ligando as duas entidades que descrevem com exatido como elas se relacionam. As ocorrncias da entidade SETOR se associam com as ocorrncias de entidade FUNCIONRIO. Da mesma forma as ocorrncias de FUNCIONRIO esto lotadas nas ocorrncias de SETOR. 4.4.1 Condicionalidade A Condicionalidade refere-se capacidade de uma entidade poder ter ou no ligao/vnculo com outra. Isso significa que pode haver ocorrncias numa entidade que no possuem um relacionamento ou associao com ocorrncias de outra entidade. No exemplo de cadastro de funcionrio, h uma obrigatoriedade de vincular um funcionrio a um setor. No entanto, no obrigatrio que todos eles tenham filhos, o que indica que o relacionamento da entidade FUNCIONRIO com outra entidade denominada FILHO nem sempre ocorrera.

[Digite o nome da empresa]

Banco de Dados I

33

S porque alguns itens no participam do relacionamento no significa que o fato no possa existir. Isso define dois grupos de relacionamentos: condicionais e incondicionais. Nos relacionamentos condicionais pode haver elementos que no participam do relacionamento, ao contrario dos relacionamentos incondicionais, em que o relacionamento dos elementos entre as entidades obrigatrio, ou seja, todos os elementos de uma entidade devem ser associar com pelo menos um elemento de outra entidade. Entidade Funcionrios Jos Bento Figueira Augusto Valentim Alberto Vasconcelos Denise Souza Bruno de Souza Iris da Costa Gomes Entidade Filhos Ingrid Bento Figueira Carlos Valentim Cesar Valentim Mercedes Gomes Joo Gomes David Gomes

4.4.2 Tipos e Graus de Relacionamento Quando num relacionamento temos envolvidas duas entidades, dizemos que ele binrio. Se forem trs entidades, temos um relacionamento ternrio. At agora todos os exemplos eram do primeiro tipo. Como exemplo de relacionamento ternrio pode citar o caso em que temos trs entidades: Fornecedor, Produto e Fornecimento. Por meio delas podemos associar os fornecedores com os produtos que eles fornecem. Fornecedor Fornecedor 1 Fornecedor 2 Fornecedor 3 Fornecedor 4 Fornecedor 5 Fornecimento Fornecedor 1/Produto 1 Fornecedor 1/Produto 2 Fornecedor 2/Produto 3 Fornecedor 3/Produto 4 Fornecedor 5/Produto 5 Produto Produto 1 Produto 2 Produto 3 Produto 4 Produto 5

FAAr Faculdades Associadas de Ariquemes

O grau de relacionamento indica a quantidade de ocorrncias de uma entidade que se encontram relacionadas com ocorrncias de outra entidade. H trs tipos de grau de relacionamento: umpara-um; um-para-muitos e muitos-para-muitos. 4.4.2.1 Relacionamento Um-para-Um Esse tipo tambm conhecido como relacionamento 1:1 e define que cada ocorrncia de uma entidade somente se associa a uma nica ocorrncia da outra entidade.

[Digite o nome da empresa]

Banco de Dados I

34

Entidade Funcionrios Jos Bento Figueira Augusto Valentim Alberto Vasconcelos Denise Souza

Entidade Senhas ADJFIGHU KU87HUJI MNCBXKJS 098SDJYU

Nem sempre h obrigatoriedade de existir o relacionamento, mas quando houver, ele no pode envolver mais de um par de elementos na associao. Como exemplo pode citar um funcionrio que no acessa o sistema, assim no ser necessrio ter um registro de senha para ele. Para ter um relacionamento um-para-um, preciso que os dois sentidos sejam analisados. Se encontrarmos um nico item de uma entidade que se associa a mais de um na outra entidade, no podemos considerar o relacionamento com um-para-um. A figura abaixo mostra o diagrama E-R desse tipo. Note que prximo a cada retngulo que representa as entidades foram adicionados marcadores (1 no caso), indicando assim o grau do relacionamento.

FAAr Faculdades Associadas de Ariquemes

4.4.2.2 Relacionamento Um-para-Muitos No segundo tipo de relacionamento (tambm chamado relacionamento 1:N) temos casos em que cada ocorrncia de uma entidade A pode se relacionar com uma ou mais de uma ocorrncia da entidade B, porem o contrario no pode acontecer. Temos um bom exemplo do relacionamento entre Funcionrio e Filho. Entidade Funcionrios Jos Bento Figueira Augusto Valentim Alberto Vasconcelos Denise Souza Bruno de Souza Iris da Costa Gomes Entidade Filhos Ingrid Bento Figueira Carlos Valentim Cesar Valentim Mercedes Gomes Joo Gomes David Gomes

A simbologia utilizada nesse tipo de relacionamento apresentada a abaixo.

[Digite o nome da empresa]

Banco de Dados I

35

4.4.2.3 Relacionamento Muitos-para-Muitos Um bom exemplo para entender esse tipo de relacionamento, tambm denominado relacionamento N:N, o caso de pedidos nos quais constam vrios produtos. Um nico pedido pode estar associado a vrios produtos. Por outro lado, um mesmo produto pode constar em mais de um pedido.

Pedidos P20345 P20346 P20347 P20348

Produtos Bobina de Ignio Rele da buzina Regulador de voltagem Bandeja de suspenso Jogo de Pastilha Plat de embreagem

FAAr Faculdades Associadas de Ariquemes

Veja como representado esse tipo de relacionamento.

4.5 Smbolos de diagramas e convenes de Nomeao


Embora no seja possvel assumir como uma regra, um costume geral adotar para a nomeao das entidades, atributos e relacionamentos nomes escritos no singular com letras maisculas. A tabela abaixo mostra alguns smbolos utilizados em diagramas ER e seus respectivos significados.

[Digite o nome da empresa]

Banco de Dados I

36

Smbolo

Significado Entidade

Entidade fraca

Relacionamento

Relacionamento identificado

Atributo

FAAr Faculdades Associadas de Ariquemes

Atributo Chave Atributo multivalorado

Atributo composto

Atributo derivado Participao total de E2 em R Razo da cardinalidade 1:N para E1:E2 em R Restrio estrutural (Min,Max) na participao de E em R

4.6 Lista de Exerccios


Os exerccios seguem em anexo a apostila.

[Digite o nome da empresa]

Banco de Dados I

37

5 Normalizao
5.1 Dependncia Funcional
A dependncia funcional talvez o conceito mais importante no projeto de esquemas relacionais e pode ser definida como uma restrio entre dois conjuntos de atributos de uma mesma entidade/relao. de grande importncia sua compreenso para entender melhor normalizao de dados. Dependencia funcional um relacionamento entre pelo menos dois atributos. Se o valor de um conjunto de atributos A permite descobrir o valor de um outro conjunto B, dizemos que A determina funcionalmente B ou que B depende de A. Exemplo: Cdigo_Aluno -> Nome, Idade, Curso (Sigla, Sala, Hora) -> Codigo_Turma

5.2 A Normalizao de Dados


O conceito de normalizao de dados data de 1970 e mais uma contribuio do memorvel Edgard F. Codd. uma tcnica empregada na organizao de um conjunto de dados, procurando detectar e eliminar possveis redundncias. Esse conjunto subdividido em outros que contem as mesmas informaes, porem sem a redundncia inicialmente apresentada. um processo de refinamento das entidades do mundo real envolvidas num sistema computadorizado. Podemos utilizar dois tipos de abordagens/metodologias no processo de normalizao de um banco de dados: De cima para baixo (Top-Down): trabalha com agrupamentos de atributos em relao j definidas a partir do projeto conceitual. Uma analise ento aplicada a essa ralao, decompondo-as em entidades e relacionamentos ate serem atingidas as propriedades desejadas para implementao fsica. De baixo para cima (Bottom-Up): um processo inverso ao anterior, que considera os relacionamentos entre os atributos o ponto de partida para o processo, utilizando-os na construo das relaes. Tambm denominada de projeto por sntese.

FAAr Faculdades Associadas de Ariquemes

A normalizao de dados um processo que nos conduz por uma serie de analises para verificao de esquemas de relao quanto sua situao diante de uma forma normal. Essas analises so efetuadas com base nas dependncias funcionais e chaves primarias, procurando assim reduzir possveis redundncias e as anomalias oriundas de incluso, excluses e atualizaes. A forma normal de uma relao indica o grau de normalizao em que ela se encontra. Academicamente falando, existem cinco formas normais, embora apenas as trs primeiras j sejam suficientes para se ter uma boa definio da estrutura do banco de dados. No fim da normalizao teremos a resposta a principal pergunta que surge quando iniciamos um projeto: quantas tabelas sero necessrias em nosso banco de dados? As regras de normalizao permitem que bancos de dados robustos e eficientes possam ser criados e facilmente alterados. Se essas regras forem seguidas com cuidado, o sistema todo (banco de dados e aplicativo) ser bastante flexvel e confivel.

[Digite o nome da empresa]

Banco de Dados I

38

Um projeto de banco de dados bem elaborado pode ocupar um tempo considervel, mas a economia que ser proporcionada posteriormente sem dvida compensadora. Por isso esta deve ser a prioridade mxima do projeto.

5.3 Anomalias de Modificaes


Considere a tabela abaixo, contendo nome de alunos de uma academia e suas respectivas atividades fsicas com seus respectivos valores. Esta tabela representada pela seguinte relao: Cliente = {nome, atividade, taxa} Nome Jos Pedro Manoel Atividade Musculao Jud Judo Taxa 30,00 35,00 35,00

Suponha a excluso da tupla do aluno Jos, bem neste caso, perdemos, alem do nome do aluno, as informaes referentes atividade Musculao, bem como seu valor.

FAAr Faculdades Associadas de Ariquemes

Este problema denominado Anomalia de Eliminao. Outro problema ocorre quando a academia implanta um novo curso e no podemos inseri-lo at que um aluno tenha a disposio de faz-lo. Isto denominado Anomalia de Insero. Agora, note que Jud, esta grafado de forma errada na tupla do aluno Manoel. Se uma busca for feita por Jud, s ir aparecer 1 aluno e no 2 alunos. Denominamos este problema com Anomalia de Modificao.

5.4 Primeira Forma Normal 1FN


Dizemos que uma entidade esta na primeira forma normal quando no h itens repetidos (itens multivalorados) dentro dela, ou seja, somente devem existir valores atmicos (indivisveis) nos atributos das tuplas. Assim, para converter uma entidade no normalizada na 1FN, precisamos decomp-la em tantas entidades quantas forem necessrias para no ter itens repetidos. Em outras palavras podemos definir que a primeira forma normal no admite repeties ou campos que tenha mais que um valor. Procedimentos: Identificar a chave primaria da entidade; Identificar o grupo repetitivo e remove-lo da entidade; Criar uma nova entidade com a chave primaria da entidade anterior e o grupo repetitivo.

A chave primria da nova entidade ser obtida pela concatenao da chave primria da esntidade inicial e a do grupo repetitivo.

[Digite o nome da empresa]

Banco de Dados I

39

Exemplo 1FN: Considere a tabela cliente abaixo: Cliente, Cdigo_cliente, Nome, *Telefone, Endereo Agora a tabela com os dados: Cdigo_cliente C001 C002 C003 Nome Jos Maria Jonas Telefone 9563-6352 9847-2501 3265-8596 8545-8956 9598-6301 Endereo Rua Seis, 85 Morumbi 12536-965 Rua Onze, 64 Moema 65985-963 Praa Ramos, Liberdade 68858-633

Analisando teremos: Todos os clientes possuem Rua, CEP e Bairro, e essas informaes esto na mesma clula da tabela, logo ela no esta na primeira forma normal. Para normalizar, deveremos colocar cada informao em uma coluna diferente, como no exemplo a seguir. Cdigo_cliente C001 C002 C003 Nome Jos Maria Jonas Telefone 9563-6352 9847-2501 3265-8596 8545-8956 9598-6301 Rua Rua Seis, 85 Rua Onze, 64 Praa Ramos Bairro Morumbi Moema Liberdade CEP 12536-965 65985-963 68858-633

FAAr Faculdades Associadas de Ariquemes

Mesmo com o ajuste acima, a tabela ainda no esta na primeira forma normal, pois h clientes com mais de um telefone e os valores esto em uma mesma clula. Para normalizar ser necessrio criar uma nova tabela para armazenar os nmeros dos telefones e o campo-chave da tabela cliente. Veja o resultado a seguir: Cdigo_cliente C001 C002 C003 Cdigo_cliente C001 C001 C002 C003 C003 Nome Jos Maria Jonas Telefone 9563-6352 9847-2501 3265-8596 8545-8956 9598-6301 Rua Rua Seis, 85 Rua Onze, 64 Praa Ramos Bairro Morumbi Moema Liberdade CEP 12536-965 65985-963 68858-633

[Digite o nome da empresa]

Banco de Dados I

40

No exemplo acima foi gerado uma segunda entidade para que a primeira forma normal fosse satisfeita, contudo possvel manter a tabela original, admitindo-se valores duplos em uma mesma coluna, como exemplo o campo telefone ficaria assim: 11-3400-3536 e 19-3500-9899.

5.5 Segunda Forma Normal 2FN


Colocar as entidades na segunda forma normal um pouco mais difcil, pois envolve o conhecimento das dependncias funcionais. A entidade se encontra na segunda forma normal se, alm de estarem na primeira, todos os seus atributos so totalmente dependentes da chave primaria composta. Isso significa que atributos que so parcialmente dependentes devem ser removidos. Se o nome do produto j existe na tabela produtos, ento na necessrio que ele exista na tabela de vendas. A segunda forma normal trata destas anomalias e evita que valores fiquem em redundncia no banco de dados. Procedimentos: Identificar os atributos que no so funcionalmente dependentes de toda a chave primaria; Remover da entidade todos esses atributos identificados e criar uma nova entidade com eles.

A chave primaria da nova entidade ser o atributo do qual os atributos removidos so funcionalmente dependentes.

FAAr Faculdades Associadas de Ariquemes

Exemplo 2FN: Considere a tabela vendas abaixo: Vendas, N_pedido, Codigo_produto, Produto, Quant, Valor_unit, Subtotal Agora a tabela com os dados: N_Pedido 1005 1006 1007 1008 Codigo_produto Produto 1-934 1-956 1-923 1-908 Impressora Laser Impressora Deskjet Impressora matricial Impressora Mobile Quant 5 3 1 6 Valor_unit 1.500,00 350,00 190,00 980,00 Subtotal 7.500,00 1.050,00 190,00 5.880,00

Analisando teremos: O nome do produto depende do cdigo do produto, porem no depende de N_pedido que a chave primaria da tabela, portando no esta na segunda forma normal. Isto gera problemas com a manuteno dos dados, pois se houver alterao no nome do produto teremos que alterar em todos os registros da tabela venda. Para normalizar esta tabela teremos de criar a tabela produto que ficara com os atributos Codigo_produto e produto e na tabela Venda manteremos somente os atributos N_pedido, cdigo_produto, quant, valor_unit e subtotal. Veja o resultado abaixo:

[Digite o nome da empresa]

Banco de Dados I

41

Codigo_produto Produto 1-934 1-956 1-923 1-908 N_Pedido 1005 1006 1007 1008 Impressora Laser Impressora Deskjet Impressora matricial Impressora Mobile Codigo_produto Quant 1-934 1-956 1-923 1-908 5 3 1 6 Valor_unit 1.500,00 350,00 190,00 980,00 Subtotal 7.500,00 1.050,00 190,00 5.880,00

Conforme visto na primeira forma normal, quando aplicamos normalizao comum gerar novas tabelas a fim de satisfazer as formas normais que esto sendo aplicadas.

5.6 Terceira Forma Normal 3FN

FAAr Faculdades Associadas de Ariquemes

Para uma entidade estar na terceira forma normal, preciso que ela j esteja na segunda e no possua nenhum atributo dependente de outro que no faz parte da chave primaria (dependncia transitiva). Na terceira forma normal temos de eliminar aqueles campos que podem ser obtidos pela equao de outros campos da mesma tabela. Procedimentos: Identificar todos os atributos que so funcionalmente dependentes de outros atributos nochave; Retira-se da relao esse grupo de atributos; Cria-se uma nova relao que contem esse grupo de atributos e inclui-se nela como chave os atributos dos quais esse grupo depende diretamente.

A chave primaria da nova entidade ser o atributo do qual os atributos removidos so funcionalmente dependentes. Exemplo 3FN: Considere a tabela abaixo: N_Pedido 1005 1006 1007 1008 Codigo_produto Quant 1-934 1-956 1-923 1-908 5 3 1 6 Valor_unit 1.500,00 350,00 190,00 980,00 Subtotal 7.500,00 1.050,00 190,00 5.880,00

[Digite o nome da empresa]

Banco de Dados I

42

Considerando ainda a nossa tabela Venda, veremos que a mesma no esta na terceira forma normal, pois o subtotal o resultado da multiplicao Quant X Valor_unit, desta forma a coluna subtotal depende de outras colunas no-chave. Para normalizar esta tabela na terceira forma normal teremos de eliminar a coluna subtotal, como no exemplo a seguir: N_Pedido 1005 1006 1007 1008 Codigo_produto Quant 1-934 1-956 1-923 1-908 5 3 1 6 Valor_unit 1.500,00 350,00 190,00 980,00

Conforme visto nas outras formas normais, a normalizao torna a tabela mais otimizada e sem anomalias.

5.7 Forma Normal de Boyce/Codd FNBC


A forma normal Boyce/Codd foi desenvolvida com o objetivo de resolver algumas situaes que no eram inicialmente cobertas pelas trs formas normais, em especial quando havia varias chaves na entidade, formadas por mais de um atributo (chaves compostas) e que ainda compartilham ao menos um atributo. Isso nos leva a concluir que o problema se devia ao fato de ate agora as formas normais trataram de atributos dependentes de chaves primarias.

FAAr Faculdades Associadas de Ariquemes

Assim, para estar na FNBC, uma entidade precisa possuir somente atributos que so chaves candidatas. Vamos analisar o caso em que temos uma entidade formada pelos seguintes atributos: CodAluno, CodCurso, CodTurma, CodProfessor CodAluno A001 A002 A003 CodCurso SI01 DR01 AD01 CodTurma 1P 2P 3P CodProfessor 345 432 432

Um mesmo professor pode ministrar aulas entre cursos e turmas diferentes. Sendo assim podemos identificar trs chaves candidatas que so determinantes nessa entidade: CODCURSO+CODTURMA, CODCURSO+CODPROFESSOR e CODTURMA+CODPROFESSOR. O atributo CODPROFESSOR parcialmente dependente do CODCURSO e de CODTURMA, mas totalmente dependente da chave candidata composta CODCURSO+CODTURMA. Dessa forma a entidade deve ser desmembrada, resultando em duas: uma que contem os atributos que descrevem o aluno em si, e outra cujos atributos designam um professor.

[Digite o nome da empresa]

Banco de Dados I

43

CodAluno A001 A002 A003 CodCurso SI01 DR01 AD01

CodCurso SI01 DR01 AD01 CodTurma 1P 2P 3P

CodTurma 1P 2P 3P CodProfessor 345 432 432

5.8 Quarta Forma Normal 4FN


Segundo a definio, para uma entidade estar na quarta forma normal, primeiramente j deve estar na terceira, mas ao mesmo tempo no pode conter mais do que um atributo multivalorado a dependncia multivalorada. Essa dependncia multivalorada uma conseqncia natural da 1F, uma vez que ela no permite conjunto de valores para um atributo.

FAAr Faculdades Associadas de Ariquemes

Essa caracterstica pode levar a seguinte situao: termos de repetir o valor de um dos atributos com o valor de outro atributo, quando houver dois ou mais atributos multivalorados independentes. Para melhor entender, vamos supor que em nosso exemplo de sistema de pedido tenhamos uma classificao dos produtos quanto a sua categoria (por exemplo, Material Escolar, Informtica, Papelaria, Pintura, etc.). Cada produto ento associado a uma categoria e devido ao fato de os produtos pertencerem a um pedido, possvel estender essa associao ate os fornecedores, para facilitar, por exemplo, a identificao de fornecedor que vendem produtos de uma determinada categoria. Dessa maneira teramos algo parecido com o mostrado a seguir: Cdigo Categoria 015 001 001 015 Cdigo Produto 97892567 85146879 85146879 564779 Cdigo Fornecedor 00341 00341 00187 00094

Do jeito que est, embora a normalizao se encontre na 3FN, ainda apresenta uma dependncia multivalorada entre os pares de atributos Cdigo Categoria/Cdigo Produto e Cdigo Categoria/Cdigo Fornecedor. O que devemos fazer criar duas entidades nas quais o atributo comum seja Cdigo Categoria:

[Digite o nome da empresa]

Banco de Dados I

44

Entidade Categoria-Produto Cdigo Categoria 015 001 015 Cdigo Produto 97892567 85146879 564779

Entidade Categoria-Fornecedor Cdigo Categoria 015 001 001 015 Cdigo Fornecedor 00341 00341 00187 00094

5.9 Quinta Forma Normal 5FN


A quinta e ultima forma normal diz que, estando na quarta forma, uma entidade estar na quinta se no for possvel reconstruir as informaes originais a partir de registros menores, resultado da decomposio de um registro principal. Isso ocorre quando temos um relacionamento mltiplo (ternrio, quartanrio, etc.) num sistema. Apesar de existir raramente utilizada.

FAAr Faculdades Associadas de Ariquemes

5.10 Roteiro de aplicao da Normalizao


5.10.1 Aplicao da 1FN Decompor a entidade em uma ou mais entidades, sem grupos repetitivos; Destacar um ou mais atributos como chave primaria da(s) nova(s) entidade(s), e este ser concatenado com a chave primaria da entidade original; Estabelecer o relacionamento e a cardinalidade entre a(s) nova(s) entidade(s) gerada(s) e a entidade geradora;

5.10.2 Aplicao da 2FN Para entidades que contenham chaves primarias concatenada, destacar os atributos que tenham dependncia parcial em relao chave primaria concatenada; Criar uma nova tabela que conter estes atributos, e que ter como chave primria o(s) atributo(s) do(s) qual(quais) se tenha dependncia parcial; Sero criadas tantas entidades quanto forem os atributos da chave primaria concatenada, que gerem dependncia parcial; Estabelecer o relacionamento e a cardinalidade entre a(s) nova(s) entidade(s) gerada(s) e a entidade geradora.

[Digite o nome da empresa]

Banco de Dados I

45

5.10.3 Aplicao da 3FN Verificar se existem atributos que sejam dependentes transitivos de outros que no pertencem chave primria, sendo ela concatenada ou no, bem como atributos que sejam dependentes de calculo realizado a partir de outros atributos; Destacar os atributos com dependncia transitiva, gerando uma nova entidade com este atributo e cuja chave primaria o atributo que originou a dependncia; Eliminar os atributos obtidos atravs de clculos realizados a partir de outros atributos.

5.10.4 Forma Normal Final O processo de normalizao leva ao refinamento das entidades, retirando delas grande parte das redundncias e inconsistncias. Naturalmente, para que haja uma associao entre entidades preciso que ocorram redundncias mnimas de atributos que evidenciam estes relacionamentos. Sem estas redundncias no haveria relacionamento entre entidades.

5.11 Lista de Exerccios


Os exerccios seguem em anexo a apostila.

FAAr Faculdades Associadas de Ariquemes

[Digite o nome da empresa]

Banco de Dados I

46

6 Linguagem SQL
6.1 A Importncia da Linguagem SQL
O nome SQL significa Structured Query Language Linguagem Estruturada de Pesquisa. Essa linguagem, de grande utilizao, teve seus fundamentos no modelo relacional de Codd (1970). Sua primeira verso recebeu o nome de SEQUEL (Structured English Query Language), sendo definada por D.D.CHAMBERLIN, entre outros, em 1974, nos laboratrios de pesquisa da IBM (California). Em 1975, foi implementado um prottipo de aplicao dessa nova linguagem. Entre 1976 e 1977, o SEQUEL foi revisado e ampliado, e teve seu nome alterado para SQL por razes jurdicas. Com esta reviso foi posto em pratica um projeto ambicioso da IBM chamado System R. novas alteraes foram introduzidas na SQL, graas as idias apresentadas pelos diversos usurios do ambiente. Devido ao sucesso dessa nova forma de consulta a manipulao de dados, dentro de um ambiente de banco de dados, a utilizao da SQL foi se tornando cada vez maior. Com isso uma grande quantidade de SGBDs foi tendo como linguagem bsica a SQL. A SQL se tornou um padro de fato, no mundo dos ambientes de banco de dados relacionais. Bastava agora se tornar de direito. Ento, em 1982, o American National Standard Institute (ANSI) tornou a SQL padro oficial de linguagem em ambiente relacional.

FAAr Faculdades Associadas de Ariquemes

A linguagem SQL foi desenvolvida especialmente para o ambiente relacional, podendo ser adaptada qualquer ambiente no relacional.

6.2 A Linguagem SQL


A idia original da SQL s previa seu uso de forma interativa. Aps sofrer alguns acrscimos, ela passou tambm a ter capacidade de ser utilizada em linguagens hospedeiras. Atualmente, a linguagem SQL assume um papel muito importante nos sistemas de gerenciamento de banco de dados, podendo ter muitos enfoques: Linguagem interativa de consulta Por meio de comandos SQL, os usurios podem montar consultas poderosas sem a necessidade da criao de um programa, podendo utilizar Forms ou ferramentas de montagem de relatrio; Linguagem de programao para acesso a banco de dados Comandos SQL embutidos em programas de aplicao que acessam os dados armazenados; Linguagem de administrao de banco de dados O responsvel pela administrao do banco de dados (DBA) pode utilizar comandos SQL para realizar suas tarefas; Linguagem cliente/servidor Os programas (cliente) dos computadores pessoais usam comandos SQL para se comunicarem por meio de uma rede local, compartilhando os dados armazenados em um nico local (servidor). A arquitetura cliente/servidor minimiza o trafego de dados pela rede;

[Digite o nome da empresa]

Banco de Dados I

47

Linguagem para banco de dados distribudos A SQL auxilia na distribuio dos dados por meio de vrios nos conectados ao sistema de computao. Auxilia tambm na comunicao de dados com outros sistemas; Caminho de acesso a outros bancos de dados em diferentes maquinas A SQL auxilia na converso entre diferentes produtos de banco de dados colocados em diferentes maquinas (de micro ate mainframe).

Por ser uma linguagem de numerosas aplicaes, a SQL pode manipular objetos de diferentes classes entre as funes de um SGBD.

FAAr Faculdades Associadas de Ariquemes

Definio de dados (DDL) Permite ao usurio a definio da estrutura e organizao dos dados armazenados, e as relaes que existem entre eles; Manipulao de dados (DML) Permite ao usurio ou a um programa de aplicao, a incluso, remoo, seleo ou atualizao de dados previamente armazenados no banco; Controle de acesso Protege os dados de manipulao no autorizada; Compartilhamento de dados Coordena o compartilhamento dos dados por usurios concorrentes, sem, contudo interferir na ao de cada um deles; Integridade dos dados Auxilia no processo de definio da integridade dos dados, protegendo contra corrupes, inconsistncia e falhas do sistema de computao.

6.3 Vantagens e Desvantagens da Linguagem SQL


Com o uso e a padronizao da SQL, algumas vantagens so diretas:

[Digite o nome da empresa]

Banco de Dados I

48

Independncia de fabricante A SQL oferecida em praticamente todos os SGBDs, e os que ainda no tm esto se encaminhando para l. Com isso posso mudar de SGBD sem me preocupar com novo que vai chegar; Portabilidade entre computadores A SQL pode ser utilizada desde um computador pessoal, passando por uma estao de trabalho, at um computador de grande porte; Reduo dos custos com treinamentos Baseado no item anterior, as aplicaes podem se movimentar de um ambiente para o outro sem que seja necessria uma reciclagem de equipe de desenvolvimento; Ingls estruturado de alto nvel A SQL formada por um conjunto bem simples de sentenas em ingls, oferecendo um rpido e fcil entendimento; Consulta Interativa A SQL prove um acesso rpido aos dados, fornecendo respostas ao usurio, a questes complexas, em minutos ou segundos; Mltiplas vises dos dados - A SQL permite ao criador do banco de dados levarem diferentes vises dos dados a diferentes usurios; Definio dinmica dos dados Por meio da SQL, podem-se alterar, expandir ou incluir, dinamicamente, as estruturas dos dados armazenados com a mxima flexibilidade;

Apesar de todas essas vantagens, algumas criticas so dirigidas a SQL:

FAAr Faculdades Associadas de Ariquemes

A padronizao leva a uma, natural, inibio da criatividade, pois quem desenvolve aplicaes fica preso a solues padronizadas, no podendo sofrer melhorias ou alteraes; A SQL esta longe de ser uma linguagem relacional ideal Segundo C.J. Date, em seu livro Relational Database: selected Writing (Addison Werley, 1986), algumas criticas so feitas a linguagem SQL: o o o o o o Falta de ortogonalidade nas expresses, funes embutidas, variveis indicadoras, referencia a dados correntes, constantes NULL, conjuntos vazios, etc; Definio formal da linguagem aps sua criao; Discordncia com as linguagens hospedeiras; Falta de algumas funes; Erros (valores nulos, ndices nicos, clausula FROM, etc.); No d suporte a alguns aspectos do modelo relacional (atribuio de relao, join explicito, domnios, etc.);

Mesmo enfrentando alguns problemas e criticas, a linguagem SQL veio para ficar, auxiliando de forma bastante profunda a vida dos usurios e analistas no trabalho de manipulao dos dados armazenados em um banco de dados relacional.

6.4 Tipos de dados

[Digite o nome da empresa]

Banco de Dados I

49

6.4.1 CHAR(n): O tipo de Dado CHAR, tem o seu tamanho definido na hora da criao da tabela. Seu tamanho mximo de 32767, 32k. Este tipo tem o seu tamanho fixo. 6.4.2 VARCHAR(n) O tipo de Dado VARCHAR, tem o seu tamanho definido na hora da criao da tabela. Seu tamanho mximo de 32767, 32k. Este tipo tem o seu tamanho variado na tabela. Isto , se voc criar uma coluna de 45 Caracteres, mas, a coluna tenha apenas 20 caracteres gravados, o restante, os 25 caracteres so descartados. 6.4.3 DATE O tipo de Dado DATE, armazena a Data, e seu tamanho de 32 bits inteiros longos. 6.4.4 TIME O tipo de Dado TIME, armazena a hora, e seu tamanho de 32 bits inteiros longos. 6.4.5 TIMESTAMP O tipo de Dado TIMESTAMP, armazena a Data e a hora ao mesmo tempo, e seu tamanho de 32 bits inteiros longos. 6.4.6 DECIMAL(preciso,escala):

FAAr Faculdades Associadas de Ariquemes

O tipo de Dado DECIMAL armazena dgitos a serem gravados na preciso especificada na criao da tabela. Por exemplo: DECIMAL(10,3). Armazena valores do tipo ppppppp.eee. 6.4.7 NUMERIC(preciso,escala) O tipo de Dado NUMERIC, armazenas dgitos a serem gravados na preciso especificada na criao da tabela. Por exemplo: DECIMAL(10,3). Armazena valores do tipo ppppppp.eee 6.4.8 SMALLINT O tipo de Dado SMALLINT, armazena dgitos a serem gravados, mas, com o limite de : -32.768 a 32.767. Serve para armazenar dados numricos pequenos. 6.4.9 INTEGER O tipo de Dado INTEGER, armazena dgitos a serem gravados, mas, diferente do SMALLINT, no existe um limite aparentemente, este tipo de 32 bits, tem a escala de valores em: 2.147.483.648 at 2.147.483.648 6.4.10 FLOAT O tipo de Dado FLOAT, armazena dgitos a serem gravados, mas, com preciso simples de 7 dgitos. Intervalo de valores: 1.175x10-38 a 3.402x1038.

[Digite o nome da empresa]

Banco de Dados I

50

6.4.11 DOUBLE PRECISION Este o tipo de campo no qual recomenda para uso monetrio/valores. Sua preciso de 64 bits, na documentao fala em usar apenas para valores cientficos. Intervalo de valores: 2.225x10-308 a 1.797x10308. 6.4.12 BLOB Armazena em forma binria, qualquer informao, como vdeo, imagens, sons e etc;

6.5 Comandos SQL


6.5.1 Criando o Banco de Dados

CREATE DATABASE CAMINHO;


Atravs desta instruo o usurio poder criar um banco de dados apenas com sua estrutura (Entidades de Sistema), ou seja, sem nenhum contedo:

FAAr Faculdades Associadas de Ariquemes

CREATE {DATABASE} 'filespec' [USER 'username' [PASSWORD 'password']];


Exemplo:

CREATE DATABASE C:\EMPRESA\DADOS\SERVIDOR.GDB USER SYSDBA PASSWORD masterkey;


Por padro, o usurio Mestre do Interbase/Firebird o SYSDBA, sendo seu password masterkey. Para se excluir um banco de dados, utilizamos o seguinte comando:

DROP DATABASE NOME DO BANCO DE DADOS;


Sendo que o Banco de dados a ser excludo no poder estar aberto ou em uso por algum usurio.

6.5.2 Criando Domnios

CREATE DOMAIN domain [AS] <datatype> [DEFAULT { literal | NULL | USER}] [NOT NULL] [CHECK ( <dom_search_condition>)];
Exemplo:

[Digite o nome da empresa]

Banco de Dados I

51

CREATE DOMAIN "NOME" AS VARCHAR(40); //Cria um domnio chamado Nome do tipo VARCHAR, com o tamanho de 40 bytes. CREATE DOMAIN CODIGO AS SMALLINT DEFAULT 0; //Cria um Domnio chamado codigo, do tipo SmallInt e especifica que o valor padro dele ZERO. CREATE DOMAIN CIDADE AS VARCHAR(20) DEFAULT 'ARIQUEMES' NOT NULL; //Cria um domnio chamado CIDADE, do tipo VarChar, com o tamanho de 20 Bytes, com valor padro sendo ARIQUEMES, sendo que este no poder ser NULO.

Observe que os nomes dos Atributos devero sempre vir entre Aspas Duplas, e os possveis valores devero sempre vir entre aspas simples.

FAAr Faculdades Associadas de Ariquemes

CREATE DOMAIN SALARIO AS DOUBLE PRECISION DEFAULT 0 NOT NULL CHECK(VALUE BETWEEN 0 AND 5000); //Cria um domnio chamado SALRIO, do tipo Doubple Precision, com valor padro 0, no podendo este ser nulo e com a restrio de que seu valor s poder estar dentro do intervalo de 0 a 5000); CREATE DOMAIN "CIVIL" AS VARCHAR(10) DEFAULT 'SOLTEIRO' NOT NULL CHECK(VALUE IN ('CASADO','SOLTEIRO','DESQUITADO','VIVO')); //Cria um domnio chamado civil, do tipo VarChar, com o tamanho de 10 bytes, com valor padro 'solteiro', sendo que os valores possveis s podero ser os que estiverem no intervalo estabelecido. CREATE DOMAIN "CODIGO" AS CHAR(10) NOT NULL CHECK(VALUE NOT LIKE '00%'); //Cria um domnio chamado codigo, do tipo char, com 10 Bytes fixos, sendo que este no pode ser nulo e no poder ser iniciado com '00xxxxxxxx'.
6.5.3 Criando Entidades Como visto anteriormente, as entidades so locais especficos onde os dados em comum so armazenados dentro de um banco de dados. Construir tabelas no InterBase/Firebird significa mais do que criar estruturas que acomodaro dados na forma bsica de intercesso de linhas por colunas.

[Digite o nome da empresa]

Banco de Dados I

52

O InterBase/Firebird antes de tudo, um Sistema Gerenciador de Banco de Dados Relacional, que conjuga as tarefas de armazenamento de forma a possibilitar o relacionamento dos dados destas estruturas tabular. Desta forma, alm dos aspectos bsicos como definir quais colunas sero definidas para quais tipos, deve-se observar a anlise necessria para modelar o relacionamento entre as tabelas existente. J na etapa de definio da estrutura, possvel agregar restries que garantam a total integridade dos dados, definir valores padro e status que obrigam ao preenchimento de certas colunas. Para se criar uma nova entidade, utilizamos o seguinte comando:

CREATE TABLE nome da tabela ( colunas tipo_dados (tamanho), colunas tipo_dados (tamanho) )
Por exemplo:

FAAr Faculdades Associadas de Ariquemes

CREATE TABLE PRODUTOS_CATEGORIA ( CODCATEG INTEGER NOT NULL, CATEGORIA VARCHAR(20) NOT NULL, CONSTRAINT PK_PROD_CATEG PRIMARY KEY (CODCATEG), CONTRAINT AK_PROD_CATEG UNIQUE(CATEGORIA) ); CREATE TABLE PRODUTOS ( CODPROD INTEGER NOT NULL, NOME VARCHAR(50) NOT NULL, DATA DATE DEFAULT 'TODAY' NOT NULL, PRECO DOUBLE PRECISION DEFAULT 0 CHECK(PRECO >= 0), ESTOQUE INTEGER DEFAULT 0 CHECK(ESTOQUE >= 0), VALOR COMPUTED BY ( PRECO*ESTOQUE ), MINIMO DOUBLE PRECISION DEFAULT 0, MAXIMO DOUBLE PRECISION DEFAULT 0, CODCATEG INTEGER NOT NULL, CONSTRAINT PK_PRODUTOS PRIMARY KEY(CODPROD), CONSTRAINT FK_PROD_CATEG FOREIGN KEY(CODCATEG) REFERENCES PRODUTOS_CATEGORIA (CODCATEG), CONSTRAINT CC_MAX_MIN CHECK (MAXIMO >= MINIMO) );

[Digite o nome da empresa]

Banco de Dados I

53

6.5.4 Alterando a Estrutura de uma Entidade Para alterarmos a estrutura de uma entidade j criada, utilizamos o comando Alter Table, sendo que com ele, podemos adicionar atributos, restries de domnio, chaves primrias, estrangeiras e candidatas.

ALTER TABLE "CLIENTES" ADD "SEXO" CHAR(1) DEFAULT 'M' NOT NULL CHECK("SEXO" IN ('M','F')); //Altera a entidade Clientes, adiciona um atributo denominado SEXO, do tipo caractere fixo, com o tamanho de 1 Byte, com uma restrio de valor suportado somente para M ou F. ALTER TABLE CLIENTES DROP SEXO; //Altera a entidade Clientes e exclui o atributo SEXO; ALTER TABLE CLIENTES ADD CONSTRAINT CE_CIDADES FOREIGN KEY("CODCIDADE") REFERENCES "CIDADES"("CODCIDADE"); //Altera a entidade Clientes e adiciona uma Construo denominada CE_Cidades, do tipo chave estrangeira, com o campo CodCidade referente entidade Cidadades com o Campo CodCidade;

FAAr Faculdades Associadas de Ariquemes

ALTER TABLE CLIENTES ADD CONSTRAINT RD_STATUS CHECK (STATUS IN (0, 1)); //Altera a entidade Clientes e adiciona uma construo denominada RD_Status do tipo Restrio de Domnios, para o campo STATUS, sendo que esse s poder aceitar valores 0 ou 1; ALTER TABLE CLIENTES ADD CONSTRAINT RD_TIPO CHECK (TIPO IN ( 'J', 'F')); //Semelhante ao exemplo anterior; ALTER TABLE "CLIENTES" ADD CONSTRAINT "CC_CPF" UNIQUE("CPF"); //Altera a entidade Clientes e adiciona uma construo do tipo nica chamada CC_CPF, (Chave candidata) para o campo CPF.

[Digite o nome da empresa]

Banco de Dados I

54

6.5.5 Criando ndices O ndice est ligado diretamente a desempenho do seu banco de dados. O conceito de ndices em ambientes Desktops xBase, Access, Paradox muito diferente do conceito de ndices em ambiente Client/Server. Um ndice em ambiente Client/Server InterBase, Oracle, DB2, no tem a funo de organizar a tabela, pois, voc tem o mesmo efeito com ORDER BY. A funo de um ndice em ambiente Client/Server de desempenho em primeiro lugar, caso o ndice seja um PK Primary Key, tem a funo de manter a integridade da tabela, caso o ndice seja um FK Foreign Key, tem a funo de relacionamento e integridade da tabela, caso o ndice seja UNIQUE, tem a funo de no deixar valores iguais serem includos. H alguns critrios que devem ser observados, quando da criao de um ndice. Algumas colunas so boas candidatas a comporem ndices, ficando a definio para os aspectos relacionados a seguir: Colunas utilizadas com freqncia em clusulas Where e Order By. Colunas utilizadas na operaes que envolvam Group By Colunas referenciadas nas funes de agregao Min e Max Colunas definidas com Chave Estrangeira e Chave Primria

Alguns critrios determinam o sentido contrrio, ou seja, as colunas no candidatas a ndice:

FAAr Faculdades Associadas de Ariquemes

Colunas em que a ocorrncia de valores nulos constante Colunas de tipos Booleano, Blob Colunas com muita ocorrncia de linhas idnticas Colunas de tabelas com poucos registros

De forma conclusiva, ressalta-se o fato de no nos perdermos em adoo de um nmero excepcionalmente exagerado na criao de ndices, j que isto acarretaria uma sobre carga no processo de manuteno (Update, Insert e Delete), devido ao fato das diversas estruturas de ndices terem que ser atualizadas. As clusulas ASCENDING e DESCENDING, tem a funo de organizar da maneira desejada o ndice. O valor default ASC.

CREATE [UNIQUE] [ASC[ENDING] | DESC[ENDING]] INDEX index ON table ( col [, col ...]); CREATE INDEX IND_NOME ON CLIENTES (NOME); //Cria um ndice denominado IND_NOME na entidade Clientes, com o campo NOME; CREATE DESCENDING INDEX IND_NOME ON CLIENTES (NOME);

[Digite o nome da empresa]

Banco de Dados I

55

//Cria um ndice denominado IND_NOME na entidade Clientes, com o campo NOME, em ordem decrescente. CREATE INDEX IND_NOME_SOBRENOME ON CLIENTES (NOME,SOBRENOME); //Cria um ndice denominado IND_NOME_SOBRENOME na entidade Clientes, com os campos Nome e Sobrenome; CREATE UNIQUE INDEX IND_CPF ON CLIENTES(CPF); //Cria um ndice nico denominado IND_CPF na entidade Clientes, com o campo CPF.

Para se criar um ndice nico de um campo, este no pode conter valores duplicados bem como no aceitar valores Nulos. 6.5.6 Apagando ndices Para se excluir um ndice previamente criado, utiliza-se o comando DROP INDEX.

FAAr Faculdades Associadas de Ariquemes

DROP INDEX IND_NOME;


6.5.7 Criando Generators Generators ou Geradores, so de nmeros auto incrementveis. Objeto que funciona como um contador, fornecendo um nmero seqencial. amplamente utilizado em triggers, que visam atribuir um valor para campos chave. Para se criar um Generator, devemos proceder da seguinte forma:

CREATE GENERATOR GERA_COD_CLIENTE; //Cria um Generator denominado GERA_COD_CLIENTE;


Para alterar um valor de um generator, utilizamos:

SET GENERATOR GERA_COD_CLIENTE TO 1000; //Atualiza o valor do Gerador para 1000;


Para se excluir um generator, utiliza-se, at a verso atual do Interbase/Firebird, no existe um comando prprio para tal operao, sendo que para isso, devemos utilizar as entidades de sistema do Interbase/Firebird:

[Digite o nome da empresa]

Banco de Dados I

56

DELETE FROM RDB$GENERATOR WHERE RDB$GENERATOR_NAME = GERA_COD_CLIENTE';


//Exclui da Entidade de Sistema RDB$GENERATOR, o Generator Gera_Cod_Cliente.

6.5.8 Inserindo dados em uma Entidade Para inserirmos dados em uma entidade, temos que utilizar o comando DML (Insert).

INSERT INTO CIDADES (CODCIDADE,CIDADE,ESTADO) VALUES (1,'ARIQUEMES', 'RO'); //Insere na entidade CIDADES, nos atributos (CodCidade, Cidade, Estado) os valores especificados na funo VALUES. INSERT INTO CATEGORIAS (CODCATEGORIA,CATEGORIA,GRUPO) SELECT CODIGO,GRUPO,TIPO FROM GRUPOS WHERE TIPO = 'ARMARINHOS'; //Insere na entidade CATEGORIAS, nos atributos (CodCategoria, Categoria e Grupo) todos os valores dos atributos (Codigo, Grupo e Tipo) da entidade GRUPOS onde o tipo for igual a 'ARMARINHOS';
A clusula VALUE especifica os dados que voc deseja inserir na tabela. Se no especificado os nomes de colunas, essa lista de valores dever estar na ordem das colunas definidas na hora da criao da tabela.

FAAr Faculdades Associadas de Ariquemes

INSERT INTO produto VALUES (108, Parafuso, Kg, 1.25); //Insere os dados sem especificar as colunas da entidade produtos
6.5.9 Alterando dados em uma Entidade Para alterar (atualizar) os dados em uma entidade previamente criada, utilizamos o comando DML (UPDATE).

UPDATE ESTOQUE SET VALORVENDA = VALORVENDA * 1.20 WHERE CODCATEGORIA = 1; //Atualiza a entidade ESTOQUE e fixa o atributo ValorVenda para um aumento de 20%, de todos os produtos cuja categoria seja igual a 1. UPDATE VENDAS SET CODCLIENTE = 100 WHERE CODCLIENTE= 10; //Atualiza a entidade VENDAS e fixa o atributo CodCliente para 100, onde o cdigo do cliente for 10;

[Digite o nome da empresa]

Banco de Dados I

57

UPDATE CLIENTES CL SET LIMITECREDITO = LIMITECREDITO * 1.10 WHERE LIMITECREDITO < (SELECT AVG(TOTALVENDA) FROM VENDAS VE WHERE VE.CODCLIENTE = CL.CODCLIENTE); //Atualiza a entidade clientes e fixa o valor de LimiteDeCredito para 10% a mais, onde o atributo LimiteDeCredito seja menor que a mdia geral de compras feitas pelo cliente.

No exemplo anterior, observe que as Entidades receberam um Apelido (CLIENTES = CL e VENDAS = VE), o que facilita na hora da especificao de atributos.

6.5.10 Excluindo dados em uma Entidade Para excluir dados em uma entidade, utilizamos o comando DML (DELETE).

DELETE FROM PRODUTOS; //Exclui todas as tuplas da entidade PRODUTOS;

FAAr Faculdades Associadas de Ariquemes

DELETE FROM ESTOQUE WHERE CODCATEGORIA = 100; //Exclui todos os produtos da entidade ESTOQUE, onde o cdigo da categoria seja igual a 100 DELETE FROM CLIENTES WHERE CODCLIENTE NOT IN (SELECT CODCLIENTE FROM VENDAS); //Exclui todas as tuplas da entidade CLIENTES onde no haja nenhuma venda cadastrada para este; DELETE FROM VENDAS VE WHERE STATUS = 'ORCAMENTO' AND CODCLIENTE NOT IN (SELECT CODCLIENTE FROM CONTAS_RECEBER CR WHERE STATUS = 'PENDENTE'); //Exclui todas as tuplas da entidade VENDAS onde o atributo STATUS desta seja igual a 'ORCAMENTO' e o atributo CODCLIENTE no pode estar na entidade CONTAS_RECEBER com o Atributo STATUS = 'PENDENTE';
6.5.11 Selecionando dados de uma Entidade Uma das operaes mais comuns, realizadas sobre um banco de dados, examinar (selecionar) as informaes armazenadas. Essas operaes so realizadas por meio do comando SELECT. O comando SELECT tem palavras-chaves em um comando bsico:

[Digite o nome da empresa]

Banco de Dados I

58

SELECT especifica as colunas da tabela que queremos selecionar; FROM especifica as tabelas; WHERE especifica as linhas.

SELECT <nome da coluna> FROM <tabela>; SELECT descricao, unidade, valor_unitario FROM produto; //Lista todos os produtos com respectivas descrio, unidades e valores unitrios SELECT * FROM vendedores; //Lista todo o contedo de vendedor com todos os campos da entidade
6.5.11.1 Alterando o Heading (Cabealho) da coluna

Por default, o heading (nome da coluna criado no banco de dados) apresentado na saida do SELECT o nome d coluna na tabela. O SQL permite que se apresente a sada de um SELECT com cabealhos de colunas ao nosso gosto.

FAAr Faculdades Associadas de Ariquemes

SELECT cabealho da coluna = nome da coluna FROM nome da tabela; SELECT numero = cdigo_vendedor, nome = nome_vendedor, rendimentos = salrio_fixo, comissao = faixa_comissao FROM vendedor; //Resultado seria os nomes das colunas cdigo_vendedor, nome_vendedor, salrio_fixo e faixa_comissao
6.5.11.2 Manipulando dados numricos

Operadores aritmticos podem ser usados sobre qualquer coluna numrica, incluindo colunas do tipo de dado int, smallint, tinyint, float, real, Money. Os operadores aritmticos so: + (adio), - (subtrao), / (diviso), * (multiplicao) e % (modulo).

SELECT vendedor, salrio_fixo = (salrio_fixo * 2) FROM vendedor //o resultado apresenta o salrio multiplicado por dois
6.5.11.3 Selecionando somente algumas linhas da tabela

A clusula WHERE em um comando SELECT especifica quais linhas queremos obter, baseada em condies de seleo.

[Digite o nome da empresa]

Banco de Dados I

59

SELECT <nome da coluna> FROM <tabela> WHERE <condies de seleo>


Comparaes na clausula WHERE

WHERE <nome da coluna> <operador> <valor>

6.5.11.4

Operadores de Comparao

Operadores de comparao: = (igual), <> ou != (diferente), < (menor do que), > (maior do que>, >= (maior ou igual do que), !> (no maior), !< (no menor) e <= (menor ou igual do que). Quando a coluna do tipo caractere, o <valor> deve estar entre aspas (); Ex: PARAFUSO Na linguagem SQL, existe a diferenciao entre maiscula e minscula em alguns SGBD, logo PARAFUSO diferente de parafuso.

FAAr Faculdades Associadas de Ariquemes

SELECT num_pedido, cdigo_produto, quantidade FROM item_do_pedido WHERE quantidade = 35; //Lista os itens do pedido com a quantidade igual a 35 da tabela item_do_pedido. SELECT nome_cliente FROM cliente WHERE cidade = Alto Paraso; //Lista os cliente que moram em Alto Paraso
6.5.11.5 Operadores Lgicos

Operadores Lgicos: AND (e lgico), OR (ou lgico) e NOT (negao).

SELECT descricao_produto FROM produto WHERE unidade = M AND Val_unit = 1.05; //Lista os produtos que tenham unidade igual a M e valor unitrio igual a R$ 1,05 da tabela produto. SELECT nome_cliente, endereo FROM cliente WHERE (CEP >= 30077000 AND CEP <=30079000) OR cidade = So Paulo; //Lista os cliente e seus respectivos endereos, que moram em So Paulo ou estejam na faixa de CEP entre 30077000 e 30079000. SELECT num_pedido FROM pedido WHERE (prazo_entrega <> 15); //mostra todos os pedidos que no tenham prazo de entrega igual a 15 dias

[Digite o nome da empresa]

Banco de Dados I

60

6.5.11.6

Operadores BETWEEN e NOT BETWEEN

... WHERE <nome da coluna> BETWEEN <valor1> AND <valor2> ... WHERE <nome da coluna> NOT BETWEEN <valor1> AND <valor2>
Esse operador propicia a pesquisa por uma determinada coluna e selecionando as linhas cujo valor da coluna esteja dentro de uma faixa determinada de valores, sem a necessidade dos operadores >=, <= e AND. Tanto o VALOR1 quanto o VALOR2 tem de ser do mesmo tipo de dado da coluna.

SELECT cdigo_produto, descricao_produto FROM produto WHERE Val_unit BETWEEN 0.32 AND 2.00; //Lista o cdigo e a descrio dos produtos que tenham o valor unitrio na faixa de R$ 0,32 ate R$ 2,00
6.5.11.7 Operadores baseados em string de caracteres LIKE e NOT LIKE

... WHERE <nome da coluna> LIKE <valor>;

FAAr Faculdades Associadas de Ariquemes

... WHERE <nome da coluna> NOT LIKE <valor>;


Os operadores LIKE e NOT LIKE s trabalham sobre colunas que sejam do tipo CHAR. Eles tm praticamente o mesmo funcionamento que os operadores = e <>, porem o poder desses operadores esta na utilizao dos smbolos (%) e (_) que podem fazer o papel de curinga. % - substitui uma palavra _ - substitui um caracter LPIS PRETO LPIS CERA LPIS BORRACHA

Ex: LIKE LPIS % pode enxergar os seguintes registros:

Ou seja, todos os registros que contenham LPIS seguido de qualquer palavra ou conjunto de caracteres. Ex: LIKE BROCA N_ pode enxergar os seguintes registros: BROCA N1 BROCA NB BROCA N3

[Digite o nome da empresa]

Banco de Dados I

61

LIKE %o_ pode enxergar qualquer nome que termine em o. LIKE [CM]% permite enxergar qualquer nome que comece com C ou com M. LIKE [C-X]% permite enxergar qualquer nome que comece com C at X. LIKE M[^o]% permite enxergar qualquer nome que comece com M e no tenha a letra o como segunda letra.

SELECT cdigo_produto, descricao_produto FROM produto WHERE descricao_produto LIKE Q_; //Lista todos os produtos que tenham o seu nome comeado por Q SELECT codigo_vendedor, nome_vendedor FROM vendedor WHERE nome_vendedor NOT LIKE Jo%; //Lista os vendedores que no comeam por Jo
6.5.11.8 Operadores baseados em listas IN e NOT IN

... WHERE <nome da coluna> IN <valores>;

FAAr Faculdades Associadas de Ariquemes

... WHERE <nome da coluna> NOT IN <valores>;


Esses operadores pesquisam registros que esto ou no contidos no conjunto de <valores> fornecidos. Estes operadores minimizam o uso dos operadores =, <>, AND e OR.

SELECT nome_vendedor FROM vendedor WHERE faixa_comissao IN (A, B); //Lista os vendedores que so da faixa de comissao A e B.
6.5.11.9 Operadores baseados em valores desconhecidos IS NULL e IS NOT NULL

...WHERE <nome da coluna> IS NULL; ...WHERE <nome da coluna> IS NOT NULL;


A utilizao do valor nulo (NULL) muito problemtica, pois cada implementao da linguagem pode adotar qualquer representao para o valor nulo. O resultado da aplicao destes operadores permite o tratamento de valores nulos em colunas de uma tabela, selecionando as linhas correspondentes.

[Digite o nome da empresa]

Banco de Dados I

62

SELECT * FROM cliente WHERE IE IS NULL; //Mostra os clientes que no tenham inscrio estadual
6.5.12 Ordenando os dados Selecionados Quando se realiza uma seleo, os dados recuperados no esto ordenados. Os dados so recuperados pela ordem em que se encontram dispostos fisicamente na tabela do SGBD. A SQL prev a clusula ORDER BY para realiza uma ordenao dos dados selecionados.

SELECT <nome da coluna> FROM <tabela> WHERE <condio> ORDER BY <nome da coluna> ASC SELECT <nome da coluna> FROM <tabela> WHERE <condio> ORDER BY <nome da coluna> DESC
As palavras ASC e DESC significam respectivamente, ascendente e descendente. A forma ascendente de ordenao assumida como padro.

FAAr Faculdades Associadas de Ariquemes

SELECT nome_vendedor, salrio_fixo FROM vendedor ORDER BY nome_vendedor; //Mostra em ordem alfabtica a lista de vendedores e seus respectivos salrios fixos. SELECT nome_cliente, cidade, UF FROM cliente ORDER BY UF DESC, cidade DESC; //Lista os nomes, cidades e estados de todos os clientes, ordenados por estado e cidade de forma descendente. SELECT descricao, val_unit FROM produto WHERE unidade = M ORDER BY Val_unit ASC; //Mostra a descrio e o valor unitrio de todos os produtos que tenha unidade KG, em ordem de valor unitrio ascendente.
6.5.13 Realizando clculos com informaes selecionadas Com a linguagem SQL pode-se criar um campo que no pertena a tabela original, e seja fruto de calculo sobre alguns campos da tabela.

SELECT nome_vendedor, novo_salario = (salrio_fixo * 1.75) +120 FROM vendedor WHERE faixa_comissao = C ORDER BY nome_vendedor;

[Digite o nome da empresa]

Banco de Dados I

63

//Mostra o novo salrio fixo dos vendedores, de faixa de comisso C, calculando com base no reajuste de 75% acrescido de R$ 120,00 de bonificao. Ordenado pelo nome do vendedor
6.5.14 Utilizando Funes de Agregao sobre Conjuntos As funes de agregao resultam sempre em uma nova coluna no resultado da pesquisa.

6.5.14.1

Buscando Mximo e Mnimo (MAX, MIN)

SELECT MIN(salario_fixo), MAX (salrio_fixo) FROM vendedor; //Mostra o menor e o maior salrio da tabela vendedor
6.5.14.2 Totalizando os valores de Colunas (SUM)

SELECT SUM(quantidade) FROM item_pedido WHERE cdigo_produto = 78; //Mostra a quantidade total pedida para o produto VINHO de cdigo 78 na tabela item_de_pedido.

FAAr Faculdades Associadas de Ariquemes

6.5.14.3

Calculando a Mdia (AVG)

SELECT AVG(salrio_fixo) FROM vendedor; //Mostra a mdia dos salrios fixos dos vendedores
6.5.14.4 Contando os Registros (COUNT)

SELECT COUNT (*) FROM vendedor WHERE salrio_fixo > 2500; //Mostra a quantidade de vendedores que ganham acima de R$ 2.500,00 de salrio fixo
O comando COUNT, quando utilizado sem a clausula WHERE, realiza a contam das linhas da tabela.

6.5.15 Utilizando a Clusula DISTINCT Normalmente, vrios registros dentro de uma tabela podem conter os mesmos valores, com exceo da chave primaria. Com isso, muitas consultas podem trazer informaes erradas. A clausula DISTINCT, aplicada em uma consulta, foi criada pra no permitir que certas redundncias, obviamente necessrias, causem problemas. A clausula DISTINCT elimina repeties de valores em relao a uma coluna.

[Digite o nome da empresa]

Banco de Dados I

64

SELECT DISTINCT unidade FROM produto; //Mostra as unidades de produtos, diferentes, na tabela produto
6.5.16 Agrupando Informaes Selecionadas (GROUP BY e HAVING) A funo de agregao por si prpria produz um nmero simples para uma tabela. A clusula organiza esse sumario de dados em grupos, produzindo informaes sumarizadas para os grupos definidos na tabela objeto de seleo. A clusula HAVING realiza as restries das linhas resultantes da mesma forma que a clusula WHERE o faz em um SELECT. Podemos igualmente continuar com a clusula WHERE selecionando as condies da seleo.

SELECT <nome da coluna> FROM <tabela> WHERE condio GROUP BY <nome da coluna>; HAVING <condio>; SELECT num_pedido, total_produtos = COUNT(*) FROM item_de_pedido GROUP BY num_pedido; //Lista o nmero de produtos que cada pedido contm.

FAAr Faculdades Associadas de Ariquemes

Inicialmente, os registros so ordenados de forma ascendente por numero de pedido. Num segundo passo, aplicada a operao COUNT(*) para cada grupo de registros que tenha o mesmo numero de pedido. Aps a operao de contagem de cada grupo, o resultado da consulta utilizando a clusula GROUP BY apresentado. Geralmente, a clusula GROUP BY utilizada em conjunto comas operaes COUNT e AVG.

6.5.16.1

Utilizando o HAVING

SELECT num_pedido, total_produto = COUNT(*) FROM item_pedido GROUP BY num_pedido HAVING COUNT(*) > 3 //Lista os pedidos que tm mais do que trs produtos.
6.5.17 Recuperando dados de Vrias Tabelas At gora viemos trabalhando com recuperao de dados sobre uma nica tabela, mas o conceito de banco de dados rene, evidentemente, varias tabelas diferentes. Para que possamos recuperar informaes de um banco de dados, temos, muitas vezes, a necessidade de acessar simultaneamente varias tabelas relacionadas entre si.

[Digite o nome da empresa]

Banco de Dados I

65

6.5.17.1

O conceito de Qualificador de Nome

O qualificador de nome consiste no nome da tabela seguido de um ponto e o nome da coluna na tabela, por exemplo: O qualificador de nome para a coluna DESCRICAO da tabela PRODUTO ser o PRODUTO.descrio

Os qualificadores de nomes so utilizados em uma consulta para efetivar a juno entre tabelas, uma vez que o relacionamento entre tabelas realizado por meio de chaves estrangeiras, e isto implica na existncia de colunas com o mesmo nome em tabelas diferentes.

SELECT cliente.nome_cliente, pedido.cod_cliente, pedido.num_pedido FROM cliente, pedido WHERE cliente.codigo_do_cliente = pedido.codigo_do_cliente; //Mostra os pedidos de cada cliente
Nesta juno, so apresentados os pedidos de cada cliente, pois a condio restringe e qualifica a juno dos dados entre as tabelas. A equao apresentada na clusula WHERE chamada de EQUAO DE JUNO.

FAAr Faculdades Associadas de Ariquemes

6.5.17.2

Juntando tudo

SELECT cliente.nome_cliente, pedido.cod_cliente, pedido.num_pedido FROM cliente, pedido


No existe muito proveito do resultado desse tipo de juno, exceto quando queremos fazer uma referencia cruzada entre duas tabelas e suas linhas todas.

SELECT cliente.nome_cliente, pedido.cod_cliente, pedido.num_pedido FROM cliente, pedido WHERE cliente.codigo_do_cliente = pedido.codigo_do_cliente AND UF IN (SP, RJ) AND pedido.prazo_entrega > 15 //Mostras os clientes que tm prazo de entrega superior a 15 dias e pertencem aos estados de So Paulo (SP) ou Rio de Janeiro (RJ). SELECT cliente.nome_cliente, pedido.prazo_entrega FROM cliente, pedido WHERE cliente.cod_cliente = pedido.cod_cliente ORDER BY pedido.prazo_entrega DESC; //Mostra os clientes e seus respectivos prazos de entrega, ordenados do maior para o menor.

[Digite o nome da empresa]

Banco de Dados I

66

SELECT V.nome_vendedor, P.prazo_entrega FROM vendedor V, pedido P WHERE V.salario_fixo >= 1000.00 AND P.prazo_entrega > 15 AND V.cod_vendedor = P.cod_vendedor ORDER BY V.nome_vendedor; //Mostrar os vendedores (ordenados) que emitiram pedidos com prazo de entrega superior a 15 dias e tenham salrios fixos iguais ou superiores a R$ 1.000,00
6.5.18 Utilizando Consultas Encadeadas (Subqueries) Que uma subquery? Em linhas gerais, quando o resultado de uma consulta utilizado por outra consulta, de forma encadeada e contida no mesmo comando SQL. 6.5.18.1 Utilizando IN

SELECT descricao FROM produto WHERE cod_produto IN (SELECT cod_produto FROM item_pedido WHERE quantidade = 10) //Mostra os produtos que participam de qualquer pedido cuja quantidade seja 10.
6.5.18.2 Utilizando AVG

FAAr Faculdades Associadas de Ariquemes

SELECT nome_vendedor FROM vendedor WHERE salrio_fixo < (SELECT AVG (salrio_fixo) FROM vendedor; //Mostra os vendedores que ganham um salrio fixo abaixo da mdia
6.5.18.3 Utilizando NOT IN

SELECT cod_produto, descricao FROM produto WHERE cod_produto NOT IN (SELECT * FROM item_pedido WHERE item_de_pedido.cod_produto = produto.cod_produto) //Mostra os produtos que no esto presentes em nenhum pedido
Na consulta anterior, a subquery no executada diretamente de uma vez s; ela executada para cada valor do registro do produto, ou seja, para cada execuo da subquery utilizado um valor do cdigo do produto dentro do produto, o qual comparado, via condio de subquery, com vrios valores em itens do pedido.

Potrebbero piacerti anche